一种ZigBee和Modbus RTU协议实现数据交互的方法和装置
技术领域
本发明涉及通信领域,特别是涉及一种ZigBee和Modbus RTU协议实现数据交互的方法和装置。
背景技术
ZigBee是在IEEE802.15.4基础上发展来的一种无线通讯技术,该技术主要适用于低成本、低功耗的近距离传输中,但在上层应用中,ZigBee并没有一种统一标准可参考。
Modbus RTU协议是应用于电子控制器上的一种通用技术,它已经成为一个通用的工业标准。有了它,不同厂商生产的控制设备可以轻松的连成工业网络,进行集中的监控,但是目前还没有一种技术能够将ZigBee技术和Modbus RTU技术两者融合在一起,但又不涉及到协议转换的问题。
发明内容
本发明是为了解决现有技术中的不足而完成的,本发明的目的是提供了一种无需布线,且网络成本低、低功耗和安全可靠,简易方便的ZigBee和Modbus RTU协议实现数据交互的方法和装置。
本发明的一种ZigBee和Modbus RTU协议实现数据交互的方法,所述方法包括:ZigBee协议和Modbus RTU协议;
S1、数据初始化阶段,配置ZigBee模块通讯参数信息;确定所述Modbus RTU数据包位于所述ZigBee协议数据帧中数据负载段内的位置;附加ZigBee协议的数据帧头和帧尾,形成一包完整的ZigBee协议数据帧;
S2、数据发送阶段,通过ZigBee模块将封装好的数据帧发向对方的ZigBee模块;
S3、数据接收阶段,通过ZigBee模块接收对方ZigBee模块传来的数据帧信息;判断ZigBee协议数据帧的帧头和帧尾;确定Modbus RTU数据在ZigBee协议数据帧中数据负载段内的位置,解析Modbus RTU数据。
本发明的一种ZigBee和Modbus RTU协议实现数据交互的方法还可以是:
所述通讯参数信息包括波特率、通道号、网络地址和通讯模式等参数信息。
在步骤S3之后,ZigBee模块进入休眠状态,当需要再次发送Modbus命令数据时,唤醒所述ZigBee模块,再次执行步骤S2。
判断ZigBee协议数据帧的帧头和帧尾包括:判断所述数据是否属于ZigBee协议数据帧,然后通过所述数据长度判断所述数据帧信息是否完整,并判断所述数据帧信息是否被非法修改过。
本发明的一种ZigBee和Modbus RTU协议实现数据交互的装置,包括:
数据初始化模块,用于配置ZigBee模块通讯参数信息;确定所述Modbus RTU数据包位于所述ZigBee协议数据帧中数据负载段内的位置;附加ZigBee协议的数据帧头和帧尾,形成一包完整的ZigBee协议数据帧;
数据发送模块,用于通过ZigBee模块将封装好的数据帧发向对方的ZigBee模块;
数据接收模块,用于通过ZigBee模块接收对方ZigBee模块传来的数据帧信息;判断ZigBee协议数据帧的帧头和帧尾;确定Modbus RTU数据在ZigBee协议数据帧中数据负载段内的位置,解析Modbus RTU数据。
本发明的一种ZigBee和Modbus RTU协议实现数据交互的装置还可以是:
所述通讯参数信息包括波特率、通道号、网络地址和通讯模式等参数信息。
在数据接收模块之后包括:ZigBee模块休眠唤醒模块:ZigBee模块进入休眠状态,当需要再次发送Modbus命令数据时,唤醒所述ZigBee模块,再次执行数据发送模块。
判断ZigBee协议数据帧的帧头和帧尾包括:判断所述数据是否属于ZigBee协议数据帧,然后通过所述数据长度判断所述数据帧信息是否完整,并判断所述数据帧信息是否被非法修改过。
本发明的一种ZigBee和Modbus RTU协议实现数据交互的方法,包括数据初始化阶段,配置ZigBee模块通讯参数信息;确定所述Modbus RTU数据包位于所述ZigBee协议数据帧中数据负载段内的位置;附加ZigBee协议的数据帧头和帧尾,形成一包完整的ZigBee协议数据帧;数据发送阶段,通过ZigBee模块将封装好的数据帧发向对方的ZigBee模块;数据接收阶段,通过ZigBee模块接收对方ZigBee模块传来的数据帧信息;判断ZigBee协议数据帧的帧头和帧尾;确定Modbus RTU数据在ZigBee协议数据帧中数据负载段内的位置,解析Modbus RTU数据。这样,通过将Modbus RTU协议与ZigBee协议相结合,在数据的发送端采用在ZigBee传输数据帧中的数据负载段内置标准的Modbus RTU协议数据包,在数据的接收端采用相同的方式来解析出对应的Modbus RTU协议数据包,实现数据的相互传输和交互。本发明的一种ZigBee和Modbus RTU协议实现数据交互的方法和装置,汇集了两种协议的优点,既保留了ZigBee无线网络成本低、低功耗、安全可靠和无需布线的优势,同时又发挥了Modbus RTU协议有众多的应用模式等优势,提供了一种简易、方便的无线通讯模式。
附图说明
图1是本发明的一种ZigBee和Modbus RTU协议实现数据交互的方法的流程示意图。
图2为本发明中Modbus RTU协议数据包在ZigBee数据帧中的位置示意图。
图3为本发明一种ZigBee和Modbus RTU协议实现数据交互方法的数据发送流程图。
图4为本发明一种ZigBee和Modbus RTU协议实现数据交互方法的数据接收流程图。
图5是本发明的一种ZigBee和Modbus RTU协议实现数据交互装置的结构示意图。
图6是本发明一种A模块和B模块利用ZigBee和Modbus RTU协议实现数据交互装置的结构示意图。
图7是A模块使用ZigBee帧格式封包的示意图。
图8是A模块接收到的ZigBee帧格式示意图。
具体实施方式
下面结合附图的图1至图8对本发明的一种ZigBee和Modbus RTU协议实现数据交互的方法和装置作进一步详细说明。
本发明的一种ZigBee和Modbus RTU协议实现数据交互的方法,请参考图1,该方法包括:
首先,ZigBee协议,是基于IEEE802.15.4标准的低功耗个域网协议,根据ZigBee协议规定的技术是一种短距离、低功耗的无线通信技术。
Modbus RTU协议是应用于电子控制器上的一种通用技术,它已经成为一个通用的工业标准,有了它,不同厂商生产的控制设备可以轻松的连成工业网络,进行集中的监控。
S1、数据初始化阶段,配置ZigBee模块通讯参数信息;确定所述Modbus RTU数据包位于所述ZigBee协议数据帧中数据负载段内的位置;附加ZigBee协议的数据帧头和帧尾,形成一包完整的ZigBee协议数据帧;
优选的,所述通讯参数信息包括波特率、通道号、网络地址和通讯模式等参数信息;
S2、数据发送阶段,通过ZigBee模块将封装好的数据帧发向对方的ZigBee模块;
S3、数据接收阶段,通过ZigBee模块接收对方ZigBee模块传来的数据帧信息;判断ZigBee协议数据帧的帧头和帧尾;确定Modbus RTU数据在ZigBee协议数据帧中数据负载段内的位置,解析Modbus RTU数据。
上述流程中,在ZigBee协议传输中,将标准的Modbus RTU协议数据包放在了ZigBee数据帧中的负载数据段内,实现数据的传输和交互,将ZigBee协议和Modbus RTU协议两种技术相融合,实现了无线通讯的功能。Modbus RTU协议数据包放在ZigBee数据帧的RF Data位置,其前面的传输控制字是用来指示该包数据在整个数据块中的排序位置,在其之前的所有数据信息统称为ZigBee数据帧头,在其之后的数据信息统称为ZigBee数据帧尾。
图2是本发明Modbus RTU协议数据包在ZigBee数据帧中的位置示意图,在本发明中,Modbus RTU协议数据包放在ZigBee数据帧的RF Data位置,其前面的传输控制字是用来指示该包数据在整个数据块中的排序位置,在其之前的所有数据信息统称为ZigBee数据帧头,在其之后的数据信息统称为ZigBee数据帧尾。
图3为数据发送流程图,步骤201是程序开始;
步骤202是ZigBee无线模块初始化阶段,在该阶段要配置ZigBee模块的相关通讯参数,如波特率、通道号、网络地址和通讯模式等参数;
步骤203确定Modbus RTU协议数据包的内容,该数据包放在ZigBee协议数据帧中RF Data即数据负载段内,负载段内的数据要完全符合Modbus RTU协议;
步骤204附加ZigBee协议的数据帧头和帧尾,即附加ZigBee协议数据帧中除RFData段之外的所有数据信息,形成一包完整的ZigBee协议数据帧;
步骤205数据的发送阶段;
步骤206数据发送完成之后,该流程结束,ZigBee无线模块可进入休眠状态以节省功耗。
图4为数据接收流程图,步骤301是程序开始;
步骤302是数据接收阶段,ZigBee模块进入休眠状态,当需要再次发送Modbus命令数据时,唤醒所述ZigBee模块,接收空中传来有数据信息;
步骤303判断ZigBee协议数据帧头和帧尾,首先要看该数据是否属于ZigBee协议数据帧,然后通过数据长度再判断该帧信息是否完整,最后根据校验和可判断出该帧信息是否被非法修改过;
步骤304解析Modbus RTU协议数据包,根据Modbus RTU协议的规则来解析该帧信息中的RF Data数据段的信息;
步骤305数据解析完成之后,接收流程结束。
优选的,在数据接收阶段之后,ZigBee模块进入休眠状态,当需要再次发送Modbus命令数据时,唤醒所述ZigBee模块,再次执行数据发送阶段。
优选的,判断ZigBee协议数据帧的帧头和帧尾包括:判断所述数据是否属于ZigBee协议数据帧,然后通过所述数据长度判断所述数据帧信息是否完整,并判断所述数据帧信息是否被非法修改过。
例如,利用ZigBee和Modbus RTU协议实现A模块与B模块之间数据交互的实例如下:如图6所示,
步骤一、A模块发送数据(Modbus命令)到B模块;
步骤二、B模块接收A模块的数据,并解析Modbus数据,生成应答帧数据;
步骤三、B模块发送封装好的应答数据(Modbus响应)到A模块;
步骤四、A模块接收B模块的响应数据并解析。
A模块使用ZigBee帧格式封包,整个帧格式如图7所示,RF Data区域为数据区,也就是位于ZigBee协议数据帧中数据负载段内的位置,在该负载段内的位置填充Modbus数据,假设Modbus地址为1,使用Modbus命令执行写线圈1操作,将1号线圈设置为1。填充数据如下:01 01 00 00 00 01 FD CA;RF Data之前的内容,我们称之为帧头,RD Data之后的内容,我们称之为帧尾;B模块接收到A模块的ZigBee协议帧后,解析出数据域,也就是Modbus数据,根据Modbus协议来解析Modbus命令数据,并根据解析结果,再封装成满足ZigBee帧格式的响应数据帧,发往到A模块。
A模块接收到的ZigBee帧格式如图8所示,Receive Data为接收数据区。如果B模块解析成功,那么B模块在此区域填充的数据应该是:01 01 01 01 90 48;A模块校验接收到的B模块数据,判定此次通讯是否成功,若校验出错或者不满足Modbus响应帧格式,则解析错误。以上就是一个完整的利用ZigBee和Modbus RTU协议实现A模块与B模块之间数据交互的实例。
本发明还提供了一种ZigBee和Modbus RTU协议实现数据交互的装置,如图5所示,所述装置包括:数据初始化模块510:用于配置ZigBee模块通讯参数信息;确定所述ModbusRTU数据包位于所述ZigBee协议数据帧中数据负载段内的位置;附加ZigBee协议的数据帧头和帧尾,形成一包完整的ZigBee协议数据帧;数据发送模块520:用于通过ZigBee模块将封装好的数据帧发向对方的ZigBee模块;数据接收模块530:用于通过ZigBee模块接收对方ZigBee模块传来的数据帧信息;判断ZigBee协议数据帧的帧头和帧尾;确定Modbus RTU数据在ZigBee协议数据帧中数据负载段内的位置,解析Modbus RTU数据。优选的,所述通讯参数信息包括波特率、通道号、网络地址和通讯模式等参数信息。优选的,在数据接收模块530之后包括:在数据接收模块之后包括:ZigBee模块休眠唤醒模块:ZigBee模块进入休眠状态,当需要再次发送Modbus命令数据时,唤醒所述ZigBee模块,再次执行数据发送模块520。优选的,判断ZigBee协议数据帧的帧头和帧尾包括:判断所述数据是否属于ZigBee协议数据帧,然后通过所述数据长度判断所述数据帧信息是否完整,并判断所述数据帧信息是否被非法修改过。
上述仅对本发明中的几种具体实施例加以说明,但并不能作为本发明的保护范围,凡是依据本发明中的设计精神所作出的等效变化或修饰或等比例放大或缩小等,均应认为落入本发明的保护范围。