基于硬件协议栈的以太网远程数据传输系统

时间:2013-09-11来源:网络

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寄存器获得中断来源,从而进行相应的中断程序处理。中断屏蔽寄存器如下。

f.jpg


除了上面几个寄存器之外,还需要设置MAC地址、IP地址、网关地址等,根据实际应用向对应的控制位写入相应的地址即可,这里不再赘述。
W5100可以工作在TCP和UDP两种通信模式下,在不同的通信模式下又分为客户端和服务器两种工作状态,TCP是面向连接的以太网通信,相比UDP可以提供更可靠的通信服务。本文通过W5100建立TCP的客户端工作模式,将采集到的数据通过以太网发送至数据中心的服务器。如图5所示,客户端首先向服务器发起请求连接,成功建立连接之后,当周期性数据采集任务结束后,将向服务器发送数据包;如果遇到网络阻塞,会产生通信超时或者没有响应等情况,将会终止一次通信连接,关闭Socket,然后重新发起新的连接请求,循环反复。

g.jpg



3 系统应用
目前,通过本文开发的基于W5100的远程数据采集与传输系统已经成功应用在辽宁省建筑能耗监测平台、太原理工大学节约型校园监管平台、大连市公共机构能耗监管平台等多个能耗监测项目当中。其中,辽宁省项目覆盖范围最广,涉及到省内14个地级市共50栋建筑的能耗采集与传输工作。调试期间,因能耗采集周期和上传周期均一致,并且各客户端的时间信息通过服务器进行同步,导致所有的客户端均在同一个时刻向数据中心发起连接或者发送能耗信息数据,如图6所示(上传周期为5 min),第1分钟的C1~Cn表示各地的数据采集器在同一时刻向服务器发起连接请求,第5 min的C1~Cn表示各数据采集器在同一时刻向服务器发送能耗数据信息,从而造成服务器偶尔因连接负载过多造成采集软件死机等情况发生。

h.jpg


解决该问题的方法其实很简单,设置各客户端分时发送数据即可,但如果对不同的客户端下载不同版本的程序,从而达到分时的目的,实际操作过程中很不方便,而且造成程序版本不唯一,容易出现问题。经过进一步分析发现,各客户端的网络通信质量不一,与服务器成功建立连接的时间不同,通过下面的方法巧妙地将该问题解决,如图7所示。

i.jpg


通过在程序中加入下面两行代码:
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,巧妙地解决了该问题。实际项目运行结果表明,该系统运行可靠稳定,应用前景良好。

1 2 3

关键词: 硬件 协议栈 传输系统 以太网

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版