引言
数据采集与传输系统一直是工业控制、环境参数监测、建筑能耗信息监测等多个领域共同关注的问题,尤其是针对远程数据传输问题。受传输距离的限制,传统的现场总线通信方式只适合于近距离的数据传输;而基于GPRS技术的数据传输系统虽然可以不受距离的限制,但其按照流量进行收费,对于大量数据连续传输而言资费不低,在实际的项目中应用也不是很广泛。目前,基于以太网的数据传输系统以其成本低廉、通信速率高和支持远距离通信等诸多优点,在监测领域得到了越来越多的应用。
常见的网络驱动芯片有RTL8019、CS8900、ENC28J60、DM9000、W5100等,其中ENC28J60支持串行SPI接口通信方式,接口电路设计相对简单。RTL8019、CS8900和DM9000都是并行总线式驱动方式,需要连接较多的数据线、地址线以及读写控制引脚等。W5100既支持串行SPI接口,同时也支持并行总线方式。这几款芯片中除了W5100内置TCP/IP协议栈之外,其余都需要用户自己开发以太网驱动程序,需要占据大量的存储空间以及宝贵的RAM内存单元;而且,软件的实现方式与硬件集成相比,稳定性和可靠性也稍差。
1 W5100芯片介绍
W5100是韩国Wiznet公司生产的一款多功能的单片网络接口芯片,内部集成有10/100M以太网控制器,且经过多年实际项目应用验证的硬件TCP/IP协议栈,提供全双工以太网解决方案。与该公司之前的产品W3100相比,W5100内部集成了物理层RTL8201CP核,它是一款集TCP /IP协议栈、以太网MAC和PHY为一体的网络接口芯片,具有更高的集成度和更稳定的工作性能,便于硬件实现。W5100芯片同时支持直接并行总线、间接并行总线和SPI串行总线共3种接口方式与主控芯片进行通信,可以满足不同场合的需求。这些性能使得用户不需要考虑以太网TCP/IP协议栈的移植等复杂的软件驱动程序,可以像访问外部存储器一样操作W5100,实现网络通信功能。W5100的性能特点如下:
①内嵌10/100BaseT以太网物理层;
②理论最大传输率可达25 Mb/s;
③支持自动MDI/MDIX,自动校正信号极性;
④支持ADSL连接(支持PPPoE协议中的PAD/CHAP认证模式);
⑤支持4个独立端口同时运行;
⑥内置16 KB存储器用于数据发送/接收缓存。
1.1 内部结构及引脚功能
如图1所示,W5100将网络协议的处理分成一个由特定处理器执行的控制部分和一个硬件线路部分,实现硬件化的TCP、UDP、ICMP、IPv 4、ARP、IGMP以及PPPoE协议,含有连接以太网协议中的数据控制及MAC协议;按照功能可以将W5100的引脚分为与处理器接口的通信引脚、以太网物理层功能引脚、时钟引脚、LED工作状态指示引脚、电源引脚等几类。直接总线接口方式需要用到ADDR[0~14]共15个引脚;而间接总线接口方式只需要用到地址线0和地址线1,其余的地址线ADDR[2~14]通过电阻接地即可;使用SPI接口方式时需要注意,必须将SEN引脚接高电平,才能使SPI功能有效,后面在硬件电路部分介绍。
1.2 寄存器功能介绍
W5100的寄存器可以分为通用寄存器和端口寄存器两类。其中,通用寄存器包括对W5100的网络配置、中断、超时参数以及缓冲区大小等设置;端口寄存器是针对W5100的4个独立的端口设置,包括端口模式寄存器、端口命令寄存器、端口中断寄存器和端口状态寄存器等在内的共17个寄存器。
通用寄存器的详细信息如表1所列。针对中断寄存器IR共有7个中断源,当任何一个未被屏蔽的中断置为高电平时,W5100的中断输出引脚INT将会一直保持低电平,MCU通过读取IR寄存器定位中断源,并进行中断程序处理,之后清零IR中相应的位,INT引脚才恢复为高电平。
W5100内部共有16 KB发送/接收缓冲区,发送和接收各占8 KB,默认每个端口的发送和接收均为2 KB,即RMSR=TMSR=0x55,在实际使用过程中,用户可以根据实际情况调整发送/接收缓冲区大小。如图2所示,通过修改每个端口对应的S1和S0寄存器可以修改相应的端口缓冲区大小。
端口寄存器是分别针对4个独立Socket的寄存器,以Sn_xx的形式表示,其中n取值为0、1、2、3。端口模式寄存器Sn_MR定义了该端口工作在TCP模式或者是UDP模式,不同模式下端口寄存器的表现形式不一,本文对此不作过多的阐述。
2 系统方案设计
本文核心处理器采用的是STM32F103VET6,它是一款基于Cortex—M3内核的ARM处理器芯片,内部集成了512K Flash程序存储空间和64K的SRAM数据存储空间。STM32F103VET6最高工作频率72 MHz,含有资源外设接口,包括2个12位数/模转换器、7个定时器、CAN总线接口、SPI通信接口、3路USART串行通信接口等资源。图3展示了基于STM32F103VET6的W5100通信系统结构图,包括电源电路、时钟电路、复位电路、
JTAG调试电路和W5100以太网通信电路。
2.1 硬件电路设计
本系统中STM32F103VET6处理器采用SPI串行接口方式与W5100进行通信,硬件电路连接如图4所示。13F-60FGYDPNW2滤波器带有网络变压器的RJ45接口元件。W5100的通信、控制引脚分别与STM32F103-VET6相连接,其中INT引脚连接PC4(外部中断4),该引脚低电平有效。当W5100产生连接、断开、发送数据完成、接收到数据或者通信超时等情况时,该引脚将会产生一个从高电平到低电平的跳变,触发一次中断。W5100的RST_BG引脚需要通过一个12.3 kΩ的电阻接地,由于没有标称12.3 kΩ的电阻,因此采用12 kΩ电阻+300 Ω精密电阻的方式连接。
W5100工作频率较高,为了保证通信的稳定性、可靠性,在设计PCB电路板的时候有几点需要注意:
①RJ45接口元件与W5100之间的距离要足够的小;
②终端匹配模块要尽量地靠近网络变压器;
③晶振布局要远离网络变压器和TX、RX导线,避免对高速信号造成干扰;
④去耦电容距W5100的位置越近越好,导线相对越宽越好。
2.2 软件程序设计
W5100的程序设计包括初始化和Socket驱动两个部分,初始化过程主要对芯片内部的各寄存器编程来实现芯片的复位、收发缓冲器设置等底层工作,初始化过程涉及的寄存器包括:
①RMSR(接收缓冲区寄存器)和TMSR(发送缓冲区寄存器)设置为0xAA(默认为0x55),本系统中只用到了Socket0和Socket1两个端口,冈此将缓冲区设置为4 KB,增大发送和接收空间。
②RTR(重发时间寄存器)按照默认值设置,即200 ms(0x07D0)。通信过程中,当发出连接、断开等命令后,在200 ms内没有收到对方的响应时,将会触发重发机制。
③RCR(重发计数寄存器)设置为8次。
④IMR(中断屏蔽寄存器),通过向相应的中断屏蔽位写入1使能相应的中断源,指出了IMR的每一位对应的中断源,本系统中需要开启7、6、1、0即可。即设置IMR寄存器为0xC3,中断产生后,STM32F103VET6可以通过访问IR寄存器获得中断来源,从而进行相应的中断程序处理。中断屏蔽寄存器如下。
除了上面几个寄存器之外,还需要设置MAC地址、IP地址、网关地址等,根据实际应用向对应的控制位写入相应的地址即可,这里不再赘述。
W5100可以工作在TCP和UDP两种通信模式下,在不同的通信模式下又分为客户端和服务器两种工作状态,TCP是面向连接的以太网通信,相比UDP可以提供更可靠的通信服务。本文通过W5100建立TCP的客户端工作模式,将采集到的数据通过以太网发送至数据中心的服务器。如图5所示,客户端首先向服务器发起请求连接,成功建立连接之后,当周期性数据采集任务结束后,将向服务器发送数据包;如果遇到网络阻塞,会产生通信超时或者没有响应等情况,将会终止一次通信连接,关闭Socket,然后重新发起新的连接请求,循环反复。
3 系统应用
目前,通过本文开发的基于W5100的远程数据采集与传输系统已经成功应用在辽宁省建筑能耗监测平台、太原理工大学节约型校园监管平台、大连市公共机构能耗监管平台等多个能耗监测项目当中。其中,辽宁省项目覆盖范围最广,涉及到省内14个地级市共50栋建筑的能耗采集与传输工作。调试期间,因能耗采集周期和上传周期均一致,并且各客户端的时间信息通过服务器进行同步,导致所有的客户端均在同一个时刻向数据中心发起连接或者发送能耗信息数据,如图6所示(上传周期为5 min),第1分钟的C1~Cn表示各地的数据采集器在同一时刻向服务器发起连接请求,第5 min的C1~Cn表示各数据采集器在同一时刻向服务器发送能耗数据信息,从而造成服务器偶尔因连接负载过多造成采集软件死机等情况发生。
解决该问题的方法其实很简单,设置各客户端分时发送数据即可,但如果对不同的客户端下载不同版本的程序,从而达到分时的目的,实际操作过程中很不方便,而且造成程序版本不唯一,容易出现问题。经过进一步分析发现,各客户端的网络通信质量不一,与服务器成功建立连接的时间不同,通过下面的方法巧妙地将该问题解决,如图7所示。
通过在程序中加入下面两行代码:
Write_W5100(W5100_S0_CR,S_CR_SEND KEEP);
//监测网络状态
ssr0_state=Read_W5100(W5100_S0_SSR);
//读取当前网络状态
对当前的网络进行监测,客户端与服务器成功建立连接之后,寄存器ssr0_state变为0x17,记录从发起连接到建立连接之间的时间差△T,发送数据时顺延△T时刻再发送,从而零成本解决了负载过大的难题。辽宁省项目自2010年7月开始运行,至今已经连续运行2年多时间,结果表明该系统能够准确地将数据上传,工作稳定可靠。
结语
本文以STM32F103VET6为核心处理器,通过单片网络控制芯片W5100建立了以太网远程数据传输系统,该系统具有高集成度、低成本、开发周期短等优势。针对建筑能耗监测系统多个客户端同时发起连接和上传数据造成的服务器压力过大问题,文中通过监测客户端与服务器之间的连接时间点,在发送数据时顺延时间差△T,巧妙地解决了该问题。实际项目运行结果表明,该系统运行可靠稳定,应用前景良好。