掌桥专利:专业的专利平台
掌桥专利
首页

一种WiFi承载Modbus的无线传感网络协议构建方法

文献发布时间:2024-01-17 01:27:33


一种WiFi承载Modbus的无线传感网络协议构建方法

技术领域

本发明属于信息自动化领域,具体为一种WiFi承载Modbus的无线传感网络协议构建方法,涉及一种新的适用于大型复杂工业设备监测场景的分散设备监测系统,包含节点交互流程、状态数据无线组网、传输协议、数据封装与解析等。

背景技术

随着现代测量和信息技术的飞速发展,传统工业的运行和管理正向信息化、智能化全面提升。类似大型水电站等大工业场景,占地面积大、设备种类多,传统监测方式容易引起施工及布线复杂等问题,因此亟需提升电站设备的监测和管理水平。无线传感器网络(WirelessSensorNetwork,WSN)融合分布式信息处理技术,具有多重监测、数据全面、组网灵活、互动友好等优势,能简化测量设备和通信网络、节约施工材料与人力成本,是提升设备监测和管理水平的优势技术。

然而在已有的通信协议设计中,通信场景复杂多变、网络覆盖情况不同,没有考虑不同应用场景应针对性地进行设计,不能完全用一套协议来应付所有场景。另一方面,目前大多数设计考虑的是大量数据的传输,而忽视了时效、丢包等影响。若能设计一种适用于大型工业场景分布式的、无线自组网的关键辅机设备的在线监测系统通信协议,将能进一步提高数据传输的效率,减少丢包和误码的状况。

现有技术如下:

与专利CN107920051A“一种互联网中无线传感器网络协议构建方法”的技术对比,区别如下;

1、专利CN107920051A中无线传感网络协议的基础是于IEEE802.15.4,而我们采用的是IEEE802.11b协议。

2、专利CN107920051A中,扩展payload的方式是通过IPv6报文头部的压缩实现的,而我们采用的是简化WiFi的帧头和帧尾,从而达到拓展payload的目的。

与专利CN103068071A“无线传感网中的有偏向低代价生成树的构建方法”的技术对比,区别如下;

1、与专利CN103068071A中无线传感器网络优先选择可充电节点组成有偏向低代价生成树,从而尽量减少不可充电节点的工作量以减少其能量消耗,达到延长网络生命期的目的。而我们采用减少节点间的交互流程,提高节点的响应速度,从而达到减少节点能耗、提高节点寿命的目的。

2、与专利CN103068071A中对无线传感网络的节点路径采用了有偏向低代价生成树计算方法,而我们直接采用了WiFi路由自带的路径生成算法。

3、专利CN103068071A中并未对数据包的封装格式做改进,也未改变节点的交互方式。

与专利CN103037468A“无线传感网中的有偏向最短路径生成树构建方法”的技术对比,区别如下;

1、与专利CN103037468A中无线传感器网络采用有偏向最短路径生成树算法,在节点类别等同的条件下,优先选择能够扩展更多新节点加入到生成树上的节点,从而尽量减少不可充电节点的工作量以减少其能量消耗,达到延长网络生命期的目的。而我们采用减少节点间的交互流程,提高节点的响应速度,从而达到减少节点能耗、提高节点寿命的目的。

2、专利CN103037468A中对无线传感网络的节点路径采用了有偏向低代价生成树计算方法,而我们直接采用了WiFi路由自带的路径生成算法。

3、专利CN103037468A中并未对数据包的封装格式做改进,也未改变节点的交互方式。

发明内容

为解决上述技术问题,本发明提出了一种WiFi承载Modbus的无线传感网络协议构建方法,包含节点交互流程、状态数据无线组网、传输协议、数据封装与解析等,对目前丢包、拥塞等状况得到修正。

为实现上述目的,本发明采取的技术方案是:

一种WiFi承载Modbus的无线传感网络协议构建方法,包括如下步骤:

WiFi承载Modbus协议;

对WiFi的时序进行重新定义;

无线组网与数据传输流程;

优化了WiFi的MAC帧格式,分配更多字段给PayloadType,同时将Modbus协议嵌入WiFi协议中,充分扩展WiFi数据帧容量。

作为本发明进一步改进,所述步骤1)包括;

1.1)协议流程设计;

制定MAC层的协议,MAC层定义了数据在网络中的传输和封装格式,约束了信道的访问和使用方式,其中WSN采用多节点协同工作的分布式网络,MAC层的协议遵循分布式结构;

对MAC协议流程的消息类型和节点状态进行定义;

对于任意一组节点,假设A节点为信源节点,B节点为信宿节点;

1.2)数据帧设计;

对于MAC数据帧的封装格式,首先将原有数据帧进行简化,将多余字节分配给数据内容字段,再将Modbus帧嵌入WiFi数据帧中,利用WiFi协议来承载Modbus协议。

作为本发明进一步改进,所述步骤1.1)中MAC协议流程的消息类型和节点状态进行定义如下:

包括消息类型和节点类型。

作为本发明进一步改进,所述消息类型包括;RS含义如下信源节点准备发送数据,探测信道是否空闲;CS含义如下信宿节点收到RS消息后,回复此条消息,表明当前信道空闲,可以接收数据;ACK含义如下信宿节点回应数据被成功接收且准确;DA含义如下等待发送的数据。

作为本发明进一步改进,所述步骤1.1)中节点的协议流程如下;

Step1.假设网络中某个数据采集传感器为节点A,网络协调器为节点B,当两个节点没有数据需要收发时,均处于静止状态Q;

Step2.节点A需要向节点B发送数据,A向B发送RS(1011)消息,表明自己当前有一组数据需要发送,探测信道是否空闲,此时A从Q状态跳转到WCS状态;

Step3.B收到A发出的RS消息后,首先判断该消息目的地址是否为自己,若地址正确,则向A回复CS1100消息,表明当前信道空闲,可以向自己发送数据,此时B从Q状态跳转到WDA状态;

Step4.A收到B回复的CS消息后,表明目前可以进行数据传输,A将数据封装到数据包内,在帧控制位表明为DA0000消息,封装完成后发送至B节点,此时A由WCS状态跳转至WACK状态;

Step5.B收到DA消息后,对数据进行FCS校验,若校验错误则丢弃该数据并向上位机反馈错误消息,若检验正确则接收该条数据,向A回复ACK1101消息;

Step6.A成功接收到ACK消息后,表明本次数据传输完成,A、B均跳转回Q状态,等待下一次数据传输。

作为本发明进一步改进,所述步骤1.2)利用WiFi协议来承载Modbus协议,改造后的数据帧格式如下;

所述步骤1.2)利用WiFi协议来承载Modbus协议,改造后的数据帧格式如下;

(1)、帧控制位:2字节,用于指示四种消息类型:RS、CS、ACK、DA,代码分别为:1011、1100、1101、0000;

(2)Duration/ID位:2字节,用作WiFi数据帧的NAV设置;

(3)目的地址位:6字节,用于指示信宿节点的位置;

(4)源地址位:6字节,用于指示信源节点的位置;

(5)时间间隔:4字节,由于Modbus数据帧没有起始和结束符,所以规定两条Modbus帧发送有4个字符的停顿间隔,用于指示Modbus帧的开始;

(6)Modbus数据帧:256字节,将Modbus帧内嵌到WiFi的数据内容字段,封装格式如下,封装字段依次是:

(6.1)设备地址位:1字节,用于指示消息的发起者,值为发送节点ID,根据工业场地分区进行编号,从0x01开始定义一直到0xff;

(6.2)功能码:1字节,用于指示消息目的地,值为目标节点ID,根据节点的主要任务进行定义,根据应用场景,只需对前五个功能码进行如下定义:01指示读取线圈状态,02指示读取输入状态,03指示读取保持寄存器,04指示读取输入寄存器,05指示强制线圈;

(6.3)指令段长度:2字节,用于指示该条Modbus数据帧的长度,可以达到减少校验步骤的目的;

(6.4)Modbus指令段:246字节,用于指示实际数据内容或指令消息;

(6.5)CRC校验码:2字节,用于校验Modbus数据帧是否正确;

(7)FCS校验码位:2字节,用于校验WiFi数据帧是否正确;

(8)四个字节的间隔、第二条Modbus帧为256字节、四个字节的间隔、第三条Modbus帧为256字节、四个字节的间隔、第四条Modbus帧为256字节、四个字节的间隔、第五条Modbus帧为256字节、Nul和FCS校验码位为2字节。

作为本发明进一步改进,所述步骤1.2)一条WiFi数据帧最多有1500个字节,一条Modbus帧最多有256个字节,因此一条WiFi数据包嵌入5条Modbus数据包,一条WiFi数据帧一次可传输5条Modbus帧,数据在WSN网络中传输时,对消息类型进行简化后,帧控制位只有四种代码,识别起来更简便。Duration/ID位、目的地址、源地址和FCS校验码,均沿用原来WiFi的格式;

Modbus的设备地址根据厂房数目和编号进行设置,在该系统下,只用前五个功能码就足够指示所有的指令,所以不对05之后的编号进行定义;

由于Modbus数据帧没有起始和结束符,所以规定两条Modbus帧发送有4个字符的停顿间隔,新的Modbus帧在小于该时间间隔发送,接收设备将认为它是前一帧的延续,这会导致CRC校验出错,数据接收失败。

作为本发明进一步改进,所述步骤1.2)数据在系统中的传输是采用透传模式,WiFi设备不会修改和处理内嵌的Modbus数据包,而Modbus指令也不会对WiFi的传输结构造成影响。

作为本发明进一步改进,所述步骤2)无线;网络组建和数据传输流程分为四个模块:WiFi网络初始化、节点加入网络、Modbus组帧、数据传输。

作为本发明进一步改进,所述WiFi网络初始化流程如下;

首先确认一个全功能节点,再向外发送信标请求命令,并设置扫描期限T,扫描期限内没有检测到信标,则确定该节点为网络的协调器,并选定网络标识;

所述节点加入网络流程如下;

数据在网络中进行传输的前提:节点扫描附近的协调器并发出入网申请,协调器收到请求后根据情况决定是否同意连接;

所述Modbus执行流程如下;

先对串口进行初始化,再进行测试,测试正确即可给从机发送指令,节点执行指令并向主机反馈结果;

所述数据传输流程如下;

将数据进行封装,再按数据链路进行传输。

本发明是一种适用于大型工业场景设备状态监测的方法,使用WiFi协议承载Modbus协议:首先对协议的消息类型和节点状态进行定义,再对数据的封装格式进行设计,将新的协议用于大型水电站设备监测,根据测试情况选择不同的频域带宽,最后根据水电站对监测数据的具体要求对协议的TTL做出调整。

附图说明

图1是通信协议的数据链路层的介质访问子层的协议流程图;

图2是将modbus协议嵌入WiFi协议的示意图;

图3是无线传感器网络的通信协议组网和数据采集流程图;

图4是本发明应用于大型水电站关键辅机设备的在线监测系统的框架模;

图5是通信频段设定为2.4GHz,不存在外源数据信道占用的情况下,设置TTL(Time-To-Live)为1s,不同频域有效带宽对数据传输的效果;

图6是在选定的频域带宽下,不同信道数目下的系统数据传输性能。

具体实施方式

下面结合附图与具体实施方式对本发明作进一步详细描述:

实施例

在本实施例中,搭建附图1所示的大型水电站监测应用系统测试和验证。该系统有四个监测区域,在监测设备和区域中部署传感器节点,周期性实时采集设备的振动、温度、电气工况等状态信息。节点将采集的数据封装后通过WiFi无线网络发送至协调器,经由RS-485总线发送至上位机。上位机通过以太网将数据传输至在线监测系统,由监测人员进行分析,将数据送入局域网,实现网内多用户数据共享。监测人员也可向节点下发指令,调取实时状态数据。

水电站监测系统数据传输采用的是多跳路由模式,直接采用现有WiFi协议流程和封装格式难度较大,容易在跳转的过程中出现丢包、拥塞等状况。WiFi数据链路层的核心在于介质访问(MediumAccessControl,MAC)层的协议制定,MAC层定义了数据在网络中的传输和封装格式,约束了信道的访问和使用方式,因此MAC层的协议流程和封装格式直接决定着网络的通信性能。由于该系统的无线传感器网络是多节点协同工作的分布式网络,因此MAC层的协议也必然遵循分布式结构。首先对MAC协议流程的消息类型和节点状态进行定义,如发明内容所述。重新定义后的协议流程如附图1所示:Step1.当A、B均未发收到任何命令时,均处于Q状态;Step2.当A向B发送RS消息,A由Q状态转换到WCS;B判断消息目的地址是否为自己,若地址正确,B由Q状态跳转至WDA,并向A发出CS消息表示信道可用;Step3.若A收到B发出的CS消息,表明当前信道空闲,可以进行数据传输;Step4.当A向B发送DA时,A跳转至WACK状态;B对数据进行校验,若数据正确,则向A返回ACK消息;Step5.当A收到B回应的ACK消息,表明本次数据传输完成,A、B回到Q状态,等待下一次的数据传输。

对于MAC数据帧的封装格式,首先将原有数据帧进行简化,将多余字节分配给数据内容字段,再将Modbus帧嵌入WiFi数据帧中,利用WiFi协议来承载Modbus协议。

在图2的封装格式下,一条WiFi数据帧最多有1500个字节,一条Modbus帧最多有256个字节,因此一条WiFi数据包可嵌入5条Modbus数据包,一条WiFi帧一次就可传输5条Modbus帧,数据在系统网络中传输时,消息帧数目大幅减少,出现拥塞状况的概率降低。在对消息类型进行简化后,数据帧的帧控制位只有四种代码,识别起来更加简便。Duration/ID位、目的地址、源地址和FCS校验码,均沿用原来WiFi的格式。

为实现分散测点的无线数据采集,还需对组网流程进行规范,网络组建和数据传输流程如附图3所示,流程主要分为四个模块:WiFi网络初始化、节点加入网络、Modbus组帧、数据传输。

WiFi网络初始化首先判断节点是否为全功能节点(FullFuncTIonDevice,FFD),如果该节点满足条件,网络向外发送一个信标(Beacon)请求命令,并设置一个扫描期限T,如果在扫描期限内都没有检测到信标,那么就认为该FFD不是其他网络的协调器,并将它确定为这个网络的协调器,那么此时就可以建立自己的WiFi网络、产生信标并广播出去。接着对信道进行扫描,如果信道的能量不达标,则抛弃该信道,重新选择其他信道。找到合适的信道就可为网络选定一个网络标识,完成以上步骤后,就成功初始化了WiFi网络。

节点加入网络的主要步骤包括:节点主动扫描附近的协调器,若检测到协调器则发送入网申请,协调器接收到节点的连接请求后根据情况决定是否允许其连接,然后对请求连接的节点做出响应;节点加入网络是数据能在网络中进行传输的前提,节点成功加入网络后,协调器将分配一个地址给节点。

Modbus的执行流程:首先对串口进行初始化,初始化内容包括选择传输模式、设置从机地址和配置串口,此系统的数据传输协议规定总线上只有一个主机,可以有多个从机,在网络初始化阶段就对每个从机设备设定了唯一的网络地址。初始化完成后对通信进行测试,测试正确后即可给从机发送指令;接收到命令的从机设备会对CRC校验码进行验证,校验正确则可解析指令的信息并执行该条指令,执行完成后向主机反馈执行结果,如果校验错误则抛弃该条数据并向主机反馈错误信息。

网络构建完成后就可开始执行数据采集,发送到WiFi节点,节点经由RS-485线发送至上位机。最后用户可在上线对数据进行分析和转发,以实现对关键辅机设备的实时监测,如附图4所示。

将上述通信协议用于大型水电站进行测试,无线通信可行性测试选择10个分散区域的辅机状态数据,每个测点1000组数据,共收集10000组数据。在系统WiFi所有信道(14条)均为本次任务服务,且不存在外源数据信道占用的情况下,设置TTL(Time-To-Live)为1s,不同频域有效带宽对数据传输的效果如附图5所示。根据附图5的结果,针对应用场景选择适合的频域有效带宽以保证数据的完整性。

考虑应用系统所在无线网络环境中还存在诸多共用信道的无线数据系统,数据传输时经常会存在信道占用的情况。在已经选定的带宽条件下,同样采集并传输分散源点10×1000组振动数据,当载荷竞争条件下信道数目不同时,系统无线数据传输的性能测试结果如附图6所示。

测试结果表明:随着有效带宽内数据载荷量的上升,本系统的数据传输可用信道数目减少,平均网络时延和丢包率显著上升,当丢包率超过25‰时,系统无法正常工作。在原有设定的TTL阈值1s状态下,针对上述丢包率过高的问题,采取提高TTL延拓设定策略,当数据透传中出现超时延门限丢包时,以500ms时间片间隔延长TTL设定值。从附图6测试结果可见,当可用信道数目较多时,采用一次延拓就可将丢包率降到0;当可用信道数目为7条时,丢包率降到0需要对TTL进行两次延拓。当可用信道数目过少时,为了兼顾数据的时效性和完整性,在阈值达到4s后,不再对TTL进行延拓,将丢包率控制在0.8‰内。

以上所述,仅是本发明的较佳实施例而已,并非是对本发明作任何其他形式的限制,而依据本发明的技术实质所作的任何修改或等同变化,仍属于本发明所要求保护的范围。

技术分类

06120116223958