一种基于ZigBee网络的多网关传输系统
技术领域
本发明属于无线通信技术领域,涉及一种基于ZigBee网络的多网关传输系统,具体涉及个域网标志符相同的单个ZigBee网络的多网关传输系统。
背景技术
ZigBee(中文音译为“紫蜂”)是一种新兴的短距离、低速率无线网络技术,具有低功耗、低成本、低复杂度、组网灵活等优点,在无线传感网应用中正获得越来越多的关注。ZigBee协议层从下到上分别为物理层(PHY)、媒体访问控制(MAC)层、网络层(NWK)、应用层(APL)等,其中,MAC层和PHY层采用IEEE 802.15.4协议标准,上层协议则由ZigBee联盟定义并进行了标准化。ZigBee可工作在868MHz、915MHz和2.4GHz三个频段上,传输速率20~250Kb/s,在三个频段上共划分了27个信道。
随着ZigBee技术应用的日益增加,通过ZigBee网关完成传感网和互联网之间的信息交换,实现数据的远程传输和处理,已成为该领域的一个研究热点。ZigBee网关的主要功能是数据汇总和消息转换,一方面将ZigBee网络中的数据进行地址、协议转换后发送给以太网;另一方面将以太网传送过来的数据进行地址、协议转换后发送给ZigBee网络节点。因此,ZigBee网关是ZigBee网络与以太网数据交换的中转站。
常规的单个ZigBee网络只有一个网关,传感网与以太网之间的数据交换通过唯一的网关转换实现。但是,单网关ZigBee网络存在如下缺点:首先,在地域跨度大、现场布局特殊或地理环境复杂的情况下,ZigBee布网需采用大量中继节点来保证网内通信通畅,容易造成不必要的浪费;其次,虽然ZigBee技术主要面向低速率数据传输,但当ZigBee网络节点数量巨大,且所有上报数据必须经过唯一网关时,对网关数据处理能力的要求将很高;第三,ZigBee模块与数据转换模块间往往通过串口通信,而串口的通信速率有限,因此容易由于大数据量导致网络延时;最后,在常规ZigBee网络中由于网关处于核心地位,当网关节点出现故障时,容易导致整个网络瘫痪。
为了解决现有技术的不足,本发明主要基于ZigBee通信协议,提供一个基于ZigBee网络的多网关传输系统。
发明内容
鉴于现有技术存在的不足,本发明的目的旨在提供一种基于ZigBee网络的多网关传输系统。通过在单个ZigBee网络中设置多个网关的方法,将ZigBee网络中所有传给单个网关的数据分成几部分分别传送给多个网关,多个网关同时进行数据转换和传输,PC服务器通过TCP/IP协议汇总各网关数据,对数据进行集中处理。本发明提供的基于ZigBee网络的多网关传输系统可有效降低由于大数据量造成的网络延时,明显减少ZigBee网络中继节点个数,避免由于网关节点出现故障导致整个网络瘫痪的情况。
本发明通过如下技术方案实现:
一种基于ZigBee网络的多网关传输系统,其包括终端节点、路由节点、网关节点和PC服务器;其特征在于:所述终端节点连接传感器和/或受控设备,用于将采集到的传感器数据上报给父节点;所述路由节点自加入网络后,用于接收各个网关发送的设备状态消息,以及选择一个最优上报网关并转发终端数据至所述最优上报网关;所述网关节点用于接收路由节点的所述上报数据,并将所述上报数据进行地址和协议转换后传输到以太网;所述PC服务器基于TCP/IP协议汇总和处理各网关数据;所述基于ZigBee网络的多网关传输系统具有双向通信功能,所述终端节点上报传感器和/或受控设备数据为上行模式,所述PC服务器向下发送控制命令为下行模式;当处于所述下行模式时,所述PC服务器发出控制命令至以太网,通过指定IP地址和端口号送至最优上报网关,通过ZigBee网内通信最终到达所述终端节点连接的传感器和/或受控设备;所述路由节点在内存中建立一个网关状态管理表,所述网关状态管理表以链表的形式建立,所述链表的每个结点对应存储一个网关的状态,所述状态包括网关的短地址、该路由与网关通信路由成本和网关Active标志位,所述链表通过接收各个网关周期性发送的设备状态消息以更新,所述路由节点根据网关状态管理表选择最优上报网关;所述网关节点包括ZigBee模块、RS232-TCP/IP转换模块、电源管理模块;所述ZigBee模块用于与ZigBee网络内节点通信,在网关加入网络后,对ZigBee网络内的路由广播包含自己短地址的设备状态消息;所述RS232-TCP/IP转换模块用于将所述ZigBee模块串口传过来的数据包进行地址和协议转换,以及将数据包通过以太网转发到指定IP地址和端口号PC服务器应用程序,并能接收PC服务器数据进行逆转换;所述网关节点数量可根据需要增加或减少,当ZigBee网络中节点数量多、数据量大时,相应增加网关节点数量;当ZigBee网络中节点数量少、数据量小时相应减少网关节点数量。
本发明还提供了:
所述终端节点、路由节点和网关节点属于一个ZigBee网络,所述终端节点、路由节点和网关节点的每个节点的个域网标志符相同。
所述每个路由节点都保存一个最优上报网关地址,所述最优上报网关与自身通信的路由成本最低。
所述路由节点当前上报网关不固定,最优上报网关地址可动态变化。
所述路由节点当前上报网关关闭,路由自动从剩余网关中重新寻找所述最优上报网关。
所述网关节点RS232-TCP/IP转换模块用集成了TCP/IP协议栈的嵌入式设备实现。
所述PC服务器运行软件汇总网关数据,软件采用基于TCP的socket编程,PC端软件为TCP/IP通信的服务器端,网关为客户机端,PC端软件设置合适端口号侦听各网关数据。
所述PC服务器上运行软件汇总网关数据后,将数据转发到其他应用程序,以便进一步处理数据,所述其他应用程序包括本机上或其他计算机上运行的应用程序。
附图说明
图1是本发明提供的一种基于ZigBee网络的多网关传输系统的架构示意图。
图2是本发明提供的一种基于ZigBee网络的多网关传输系统的ZigBee模块硬件设计框图。
图3是本发明提供的一种基于ZigBee网络的多网关传输系统的网关节点硬件设计框图。
图4是本发明提供的一种基于ZigBee网络的多网关传输系统的终端节点软件运行流程图。
图5是本发明提供的一种基于ZigBee网络的多网关传输系统的路由节点软件运行流程图。
图6是本发明提供的一种基于ZigBee网络的多网关传输系统的网关设备管理链表图。
图7是本发明提供的一种基于ZigBee网络的多网关传输系统的网关节点软件运行流程图。
图8是本发明提供的一种基于ZigBee网络的多网关传输系统的一个PC上位机软件实例截图。
具体实施方式
下面结合具体附图和实施案例对本发明作进一步说明。
附图1所示为一种基于ZigBee网络的多网关传输系统的架构示意图,主要包括终端节点、路由节点、网关节点和PC服务器。所述终端节点连接传感器或受控设备,将采集到的传感器数据上报给父节点;所述路由节点自加入网络后,用于接收各个网关发送的设备状态消息,从中选择一个最优上报网关并转发终端数据至该网关;所述网关节点用于接收路由上报数据,将数据进行地址、协议转换后传输到以太网;所述PC服务器用于通过TCP/IP协议汇总各网关数据并进行集中处理。
系统的硬件设计
终端节点与路由节点的硬件设计基本相同,都采用德州仪器公司的CC2430芯片作为核心通信模块,在PCB电路板上提供电源模块、外部晶振电路、JTAG(Joint TestAction Group)接口、UART(Universal Asynchronous Receiver/Transmitter)串口、按键和复位电路等,ZigBee模块硬件设计框图如附图2所示。终端节点通过UART串口连接传感器或受控设备,也可通过I/O直接控制设备或进行模数转换采样。终端采用4.2V、容量为1700mAh的可充电电池供电,由电源模块将电压转换至3.3V为终端供电。路由节点采用电源供电,由电源模块将220V交流电转换成3.3V直流电,为ZigBee模块供电。
网关节点硬件设计框图如附图3所示,主要由ZigBee模块、RS232-TCP/IP转换模块和电源管理模块组成。ZigBee模块同终端节点、路由节点的ZigBee模块相同;RS232-TCP/IP转换模块可利用32位RISC(reduced instruction set computer)、ARM(Advanced RISCMachine)等嵌入式微处理器实现,该模块集成了TCP/IP协议栈,通过RJ45接口连入100M的以太网;电源管理模块将220V交流电转换成3.3V直流电给ZigBee模块、RS232-TCP/IP转换模块供电。ZigBee模块与RS232-TCP/IP转换模块之间通过RS232串口通信。
系统的软件设计
软件部分采用德州仪器公司的ZigBee2006协议栈。软件部分的设计描述如下。
终端节点
终端节点软件运行流程如附图4所示,终端节点开机后首先进行软硬件初始化,接着开始寻找网络;当加入到网络后,终端节点周期性上报数据。终端节点可以连接不同类型的传感器或受控设备,如温湿度传感器、光照度传感器、电气开关等。有些终端传输数据是单向的,不需要接受控制命令,如温湿度传感器;有些终端传输数据是双向的,既要上报数据又需接受控制、配置命令,如电气开关。终端节点上报数据消息帧中需要包含终端设备类型、短地址,用来接收以太网命令消息。PC端软件通过分析接收消息帧内终端设备类型,判断出相关终端设备是否需要下行消息;如果需要,则保存上报该消息的网关地址信息。
终端节点将传感器数据或设备状态、设备类型、短地址构造成一个消息帧后,将消息上报至父节点,上报父节点地址通过Z-Stack协议栈NLME_GetCoordShortAddr()接口函数获得。
路由节点
路由节点对网关选择情况的好坏直接影响网络传输数据量的大小,选择更加合适的网关,能减少数据包路由转发次数,提高系统效率。路由节点软件运行流程如附图5所示。路由节点加入网络后会对所有网关节点广播一条Cluster ID为RefNode_Gateway_Req的消息,网关节点收到该消息后会立即返回一条Cluster ID为Gateway_Update的消息,路由节点收到该消息后会在内存中创建一个如附图6所示的网关状态管理链表,链表的每个结点存储一个网关的状态信息。该链表创建后通过接收各个网关周期性发送的Gateway_Update消息来更新。当网络中新加入一个网关后,插入一个新结点到链表头;关闭一个现存网关后,删除链表中对应的网关结点。路由节点从多个网关中选择与其通信路由成本最小的作为最优网关,由于ZigBee路由采用简化版的平面距离矢量路由协议和簇树算法相结合的路由方式,最优网关通常为物理距离最近的网关。
附图6所示链表的结点存储信息包括网关的短地址、路由与网关通信的路由成本、网关Active标志位。网关短地址可从接收网关广播的Gateway Update消息中获得。路由与网关通信的路由成本可通过多种方法获得,例如可将路由节点与各网关节点通信所需路由转发跳数作为参考值;或者计算路由节点发送数据包至各网关节点,网关节点收到数据包回复一条消息至该路由节点所用的时间作为参考值;也可对网关回复消息到达的先后顺序进行编号作为参考值。Active标志位表示网关的活动状态,是一个布尔型的变量,1表示活动,0表示关闭。通过函数定期检查和重置该标志位用来判断网关的活动状态。例如网关每T1=5秒钟广播一条Gateway_Update消息,路由收到该消息后将链表中网关对应的结点Active标志位置1;路由每T2=15秒检查一次链表中各结点Active标志位,若值为0说明没有收到该网关Gateway_Update消息,判断该网关已关闭,进行删除结点操作;若值为1说明网关处于活动状态,将该标志位清0。设置T2大于T1,保证路由能够检测到网关活动状态。
设置一个周期性触发事件,定期比较链表中各结点路由成本值的大小,将最小路由成本值对应的网关地址设为最优网关地址;定期检测不活动网关,对不活动网关进行删除结点操作;之后匹配该不活动网关地址是否为已选择最优网关地址,如果恰好为最优网关地址,路由自动从剩余网关中重新寻找最优网关。
路由通过Cluster ID判断收到的消息类型,当收到终端上报消息时,将消息的目的地址改为选择好的最优网关地址,如
dstAddr.addr.shortAddr=GetBestGatewayAddr();
GetBestGatewayAddr()函数能够返回16位最优网关短地址,然后将该消息通过无线转发;当收到网关下行消息时,转发消息至终端节点。
网关节点
网关节点软件运行流程如附图7所示。当网关节点加入网络后,对路由节点周期性广播包含自身短地址的Gateway_Update消息,路由通过该消息建立和更新网关设备管理链表,路由开机后为了尽快获得最优网关地址,会广播RefNode_Gateway_Req消息,各网关收到该消息后立即回复一条Gateway_Update消息,之后该消息仍周期性广播。
网关是ZigBee网络与以太网数据交换的中转站,网关的ZigBee模块集成了ZigBee2006协议栈,RS232-TCP/IP转换模块集成了TCP/IP协议栈。RS232-TCP/IP转换模块可以设置本地IP、端口号、PC服务器目标IP、目标端口号,并设置与ZigBee模块匹配的波特率,通过RS232实现两模块间的通信。当收到路由消息,网关对数据包进行协议、地址转换后发送到以太网,根据目标IP地址和端口号到达指定PC上位机;当收到PC上位机消息,网关对数据包进行协议、地址转换后转发给ZigBee终端。
路由节点上报网关不固定,对最优上报网关地址实施动态管理,某个网关节点的关闭与增加对多网关传输系统功能实现没有影响。网关节点数量可根据需要增加或减少,当ZigBee网络中节点数量多、数据量大时,可增加网关节点数量,减小网络延时;当ZigBee网络中节点数量少、数据量小时,可相应减少网关节点数量,节省资源。
PC上位机软件
PC服务器运行软件汇总各网关数据,软件采用基于TCP的socket编程,PC端软件为TCP/IP通信的服务器端,网关为客户机端,PC端软件设置合适端口号侦听各网关数据。软件汇总网关数据后,可以处理数据或将数据转发到其他应用程序,包括本机上或其他计算机上运行的应用程序,以便对数据进一步处理。
附图8所示为一个PC上位机软件实例截图。PC端软件作为服务器端建立了一个端口号为7123的TCP连接,共有4个作为客户端的网关接入到网络中,从图中可以看到每个网关对应的IP地址与端口号,选中某一网关后软件左侧的数据区显示从相应网关接收的数据。如图中所示为选中IP地址为10.8.4.184、端口号为5000的网关采集到的数据。为了对数据进行更灵活的处理,软件汇总多个网关的数据后,将数据转发给其它应用程序进一步处理。如图中所示为将采集到的数据转发给IP地址为58.210.56.165、端口号为7124的应用程序。
本基于ZigBee网络的多网关传输系统可进行双向通信。终端上报传感器数据值为上行模式,PC端向下发送控制命令为下行模式。处于上行模式时,PC端软件汇总各网关数据,每收到一条数据,判断数据帧内设备类型,若某设备类型需要下行控制、配置命令,则将转发该数据包的最优网关IP地址和端口号、ZigBee终端短地址存储至内存中,可通过链表的形式建立;若设备不需要下行数据,不存储转发网关信息。处于下行模式时,PC端软件发送控制命令至某一ZigBee终端前,根据ZigBee终端短地址从链表中查询转发数据包的网关IP地址和端口号,发送下行数据至以太网,通过指定IP地址和端口号送至最优上报网关,最后通过ZigBee网内通信到达终端节点连接的受控设备。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。