文献标识码:A
文章编号: 0258-7998(2014)10-0016-04
0 引言
气象要素(如气压、气温和风速等)都是重要的天气信息,在国民经济建设的各个领域中都有很高的价值,能够准确、有效、实时地获取气象要素对气象采集提出了很高的要求。在气象采集中,需要做到实时监测、集中管理,气象采集的网络化尤为重要。本文引入气象无线传感器网络的概念,将无线传感器网络技术[1]应用于气象要素的观测中,并结合工业现场总线技术,采用RS-485作为总线传输接口,ModBus协议为串口通信协议,ZigBee协议为无线通信协议,TI公司SimpleLinkTM解决方案提供并支持TinyOS系统的嵌入式微控制器CC2531为控制芯片。
气象采集系统将ModBus协议和ZigBee协议成功移植到TinyOS系统中,所设计的ModBus协议与ZigBee协议转换方法能够很好地进行双边协议的通信,实现了经典协议与高效系统的完美结合,并以此为基础设计了网络化的气象无线传感网采集系统。
本文设计并实现了基于ModBus协议和ZigBee网络的气象无线传感网采集系统,系统主要包含3个节点:数据采集节点、路由中继节点和协调器节点。其中数据采集节点构成数据采集模块,完成气象参数的采集和发送,节点由挂载传感器的RS-485接口、电平转换模块和CC2531芯片电路构成,用于气象要素的采集、协议转换和数据发送等处理。路由中继节点和协调器节点协同工作组成数据汇集模块,数据汇集模块将采集的信息通过路由中继节点以多跳的方式汇聚到协调器节点,数据管理模块将协调器节点接收的数据汇总到PC端,用于后续的数据分析、储存等工作,实现了终端PC对整个传感器网络的控制。
1 采集节点与ModBus协议分析
1.1 ModBus协议设计
ModBus支持在同一个网络中,主设备最多与247个从设备连接,本文通过RS-485接口来设计一种具有分时处理能力的串口协议,该协议将运用于数据采集模块,通过单个的RS485接口与CC2531的I/O口连接,达到同时控制多个传感器的目的,该总线结构如图1所示。
1.1.1 ModBus串行链路
ModBus在串行链路上位于OSI模型的数据链路层,它为网络设备之间提供主从通信,本文提到气象采集系统采用ModBus-RTU模式,其中报文帧采用无校验模式,每个字节包括1 bit起始位、8 bit数据位、0 bit校验位、2 bit停止位。在RTU模式下,帧与帧之间的间隔至少为3.5个字符时间,而字符之间的间隔不能大于1.5个字符时间,否则将会认为报文帧不完整,并且丢弃该报文帧,具体帧格式如图2所示。
1.1.2 协议功能码
在ModBus协议中,从站通过地址码来识别是否属于自己的查询报文,通信链路空闲的时候,主机发送报文给从机,通过功能码来确定需要执行的功能,如果CRC校验无误,则执行需要的任务,然后把任务的结果返回给主机,本系统定义了通用功能模块。
#define READ_COIL_STATUS 1 //读取线圈状态
#define READ_INPUT_STATUS 2 //读取输入状态
#define READ_HOLD_REGISTER 3 //读取保持寄存器
#define READ_INPUT_REGISTER 4 //读取输入寄存器
……
1.1.3 协议软件设计方案
MoudBus串行链路协议的编程主要包括主函数、串口模块、功能模块、CRC校验模块、数据处理模块。运行串口模块生成PDU协议报文,通过CRC校验模块生成CRC效验码并与PDU协议报文生成ADU数据单元,采用广播模式发送给从机传感器,传感器执行相应的命令将数据返回给主机。
数据采集节点遵循ModBus通信过程,采用ModBus RTU协议的命令子集。数据传输方式为异步10位,数据传输速率为4 800 b/s,传输一个字节需要1/4 800×11×1 000≈2.29 ms,一个ModBus发送命令有8 B,响应命令有7 B,由于RS-485为半双工,所以本文中ModBus进行一次通信的时间约35 ms,主机请求数据报文描述如图3所示。从机响应报文描述如图4所示。RTU通信从站侧事务处理流程图如图5所示。
一旦作为从站的传感器处理来自主站控制器的请求,从站传感器就会建立相应的响应,根据不同的处理结果,建立两种响应类型:
(1)正常的响应,响应的功能码与请求功能码一致。
(2)异常的响应,异常的功能码等于请求的功能码加上0x080,并提供一个异常码指示原因。
1.2 ModBus协议与ZigBee协议转换
ModBus协议与ZigBee协议的转换包括RS-485接口模块,电平驱动模块与控制模块,RS-485接口向电平驱动模块输入数据,而后与节点进行数据电平的转换,节点控制器与电平驱动模块相连传输电平数据,并将得到的ModBus报文与ZigBee报文进行转换。
1.2.1 电平驱动模块
RS-485接口的电平转换通过半双工收发器SP485实现[2],SP485包括一个接收器和一个发送器,其中接收器将RS-485接口的RX端电平转换为+5 V并发送给控制模块,发送器将来自控制模块的电平转换成RS-485接口的TX端接口电平,实现电平的转换。
1.2.2 ModBus报文转换ZigBee报文
主控芯片收到转换的电平后,控制模块将定义一个char型数组MBUF[],其中MBUF[0]是地址位,MBUF[1]是功能位,MBUF[2]是数据位,MBUF[2]的长度是数据帧的长度减去4 B,包括1 B地址、1 B功能码和2 B CRC校验码,将电平数据帧的数据位存入数组MBUF[]中,再将存入数据位的数组MBUF[]加入到ZigBee的数据帧中,转换得到ZigBee报文[3]。
1.2.3 ZigBee报文转换ModBus报文
从ZigBee报文中提取数据帧,得到数组ZBUF[]。其中ZBUF[1]是功能位,ZBUF[2]是数据位,将数据帧的长度减去4 B得到ZBUF[2]的长度,提取数据位,将ZBUF放入ModBus数据帧中,通过电平驱动转换得到数据报文。
2 汇聚模块与ZigBee协议设计
ZigBee协议设计,即数据汇集模块的设计,采用芯片CC2531和CC2591,CC2531主要负责对节点的控制和处理,CC2591负责信号功率放大。CC2591是TI公司的低功耗射频前端,最大可以提高22 dBm的输出功率,CC2530和CC2591的结合使用仅需极少的外部元器件[4],具体连接如图6所示。
2.1 通信距离的估算
在自然环境中,任意两个节点之间的通信都会有损耗,这些损耗由于环境的变化而无法预测。通过对链路损耗的估算可以减少计算传播距离与实际的误差,无线通信传输自由空间损耗计算如下:
由式(1)可知电磁波在理想空间传输时,传播损耗只与传输距离发射频率F和发射距离R相关。每当频率或传输距离增加一倍时,其链路损耗就会增加6 dB。传输距离计算如下:
其中,GT、GR分别为发送、接收天线增益。本方案中采用的天线增益GT、GR均为2 dB,链路损耗为110 dBm,载波频率为2 450 MHz,可得无线通信传输距离R=3.87 km。
2.2 ZigBee协议设计方案与流程
本方案采用TI ZStack-CC2530-2.4.0-1.4.0协议栈作为软件平台,由终端、ZigBee模块和采集模块组成,网络结构如图7所示。
ZigBee协议主要设计包括协调器程序、路由程序和终端程序[5],在所设计网络中节点之间采用Mesh型网络,由路由节点汇集参数到终端,在同一个ZigBee网络内所有的节点必须有相同的channel和PAN ID[6]。Mesh网中的MAC层由于调度机制的不同会影响网络层路由的性能[7],因此需要让网络层实时感受到MAC层的变化才可以自组织的改变路由性能。
在ZigBee软件设计中由协调器来完成网络的启动,调用以下函数启动网络建立。
NIME_NetworkFormation.Request(
METPANDID,//命令ID
METChannels, //信道扫描
METScanDruation,//时间扫描
METBeaconOrder,//信标号
METFramOrder,//帧序号
Battery
)
网络建立成功后,网络的地址将会被初始化为0x0000,并为新的网络定义标示符,此后节点将会被允许加入网络与协调器通信,网络中用MET_Data.Request发出请求,协调器用MET_Data.Confirm来响应。
MET_Data.Request(
……
RouteF,//路由检测
……)
当RoutF为真的时候,网络层就通过AODV路由算法进行工作,并创建路由表,发送路由请求帧。AODV路由算法主要包括路由发现,路由建立,路由维护和路由管理,在AODV算法中,源节点以广播形式发送路由请求(RREQ)报文,RREQ报文中有着源节点和目的节点的网络地址,当相邻节点收到RRQE后判断是否属于自己的命令,不是则寻找下一个,是则响应请求[8-10]。
在公共层中,网络层向所连接设备的MAC层发送数据帧。
MET_AF_Data.Request(
METAddr_t *Addr,//网络地址及发送格式
METPoint_t *EP,//端口地址
PANID,//命令ID
*buf,//缓冲区指针
*judgeID,//判断序号
……
)
当MAC层接收到对应报文之后,MAC层将发送一条MET_RC_Data.Request语句给物理层,物理层响应一个MET_RC_Data.Confirm语句给MAC层,MAC层通过射频发送给所需要的目的节点中,完成无线通信的功能。
3 系统测试与数据处理
3.1 传感器采集测试
根据上述方案组建系统后,将系统中各节点上电并烧录相应的程序,安装到室外进行测试,测试系统准备了3个采集节点和一个协调器。通过远程的控制可以实时了解气象参数的变化,最终这些参数回传到PC上。
经实际测试表明,基于ModBus协议和ZigBee网络的气象无线传感网采集系统实现了对有线节点和无线传感网的通信与控制,测量值如图8所示。
3.2 通信距离测试
在上文中提到过,通过理论的计算最大通信距离可以达到3.7 km,测试地点在室外的大片空地上,试验中随着距离的加大,会出现传感器节点能够收到命令帧,但协调器收不到数据的情况,丢包率如表1所示。
由测试表可知,使用CC2951芯片后节点的通信距离得到了显著的提高,1 000 m以内的通信丢包率很低,当通信距离达到1 500 m以上时通信链路出现了不稳定,测试结果发现,理论计算值和测量值存在很大差异,不过测试的效果还是达到了预期要求。如果单以CC2531的射频功率,射频距离是远远达不到要求的。
4 结论
本文基于ModBus协议和ZigBee网络开发了气象无线传感网采集系统。系统由数据采集节点、路由中继节点和协调器节点组成,节点以CC2531芯片为主控芯片,实现了气象参数网络化的采集,由PC端控制传感器的工作,可以同时采集包括气压、气温、湿度、光照、风速和风向的气象参数。系统使用低成本的无线模块和传感器,具有价格低廉的特点。性能试验表明:
(1)通过气象无线传感网采集系统,用户使用PC可动态访问户外气象信息,为野外气象信息获取提供了一种低成本、方便的技术方案。
(2)传感器采集试验表明,通过RS-485接口能够成功地由单端口控制多传感器,并且能够实时地采集到户外的气象信息。
(3)通信距离试验表明,在正常工作状态,1 km通信距离下丢包率小于0.1,能够满足正常工作需求。
(4)由于挂载的传感器功能单一,造成了不必要的空间和资源的浪费,尤其是增加了电能的损耗,如果使用多参数传感器,可以使系统集成度更高。下一步将采用大规模的节点设计,尝试单节点挂载多个多参数传感器,通过进一步的改进,提高系统的稳定性和实用性。
参考文献
[1] YICK J,MUKHERJEE B,GHOSAL D.Wireless sensor network survey[J].Computer Networks,2008,52(12):2292-2330.
[2] 邰鸣,李双.基于RS485通信方式的多单片机控制系统[J].微计算机应用,2008,29(7):109-112.
[3] Yu Chengbo,Liu Yanfei,Wang Cheng.Research on ZigBee wireless sensors network based on ModBus protocol[J].Wireless Sensor Network,2009,1(1):43-47.
[4] 马飞,郑云水.基于ZigBee网络的智能铁鞋系统设计[J].电子技术应用,2012,38(12):26-28.
[5] 万蓉凤,修春波,卢少磊.基于ZigBee技术的风速测量系统的设计[J].中南大学学报(自然科学版),2013,44(51):162-165.
[6] AKYILDIZI F,WANG X D,WANG W L.Wireless meshnetworks:Asurvey[J].Computer Networks,2005,47(4):445-487.
[7] 章伟聪,俞新武,李忠成.基于CC2530及ZigBee协议栈设计无线网络传感器节点[J].计算机系统应用,2011,20(7):184-187.
[8] 黄旭,王子欧,季爱明.基于ZigBee无线Mesh网络的温湿度测量系统[J].微型机与应用,2014,31(9):89-91.
[9] Xu Bing.Design of automatic weather station based on ZigBee[D].Nanjing,China:Nanjing University of Information Science&Technology,2008.
[10] 刘邵华,黄廷磊,夏锋.一种基于AODV路由协议改进的无线Mesh路由协议[J].微型机与应用,2013,32(4):54-57.