CN112468382B - 一种经济型基于modbus协议rtu通信方法及系统 - Google Patents
一种经济型基于modbus协议rtu通信方法及系统 Download PDFInfo
- Publication number
- CN112468382B CN112468382B CN202011513050.1A CN202011513050A CN112468382B CN 112468382 B CN112468382 B CN 112468382B CN 202011513050 A CN202011513050 A CN 202011513050A CN 112468382 B CN112468382 B CN 112468382B
- Authority
- CN
- China
- Prior art keywords
- host
- slave
- data packet
- byte
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/69—Spread spectrum techniques
- H04B1/713—Spread spectrum techniques using frequency hopping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/69—Spread spectrum techniques
- H04B1/713—Spread spectrum techniques using frequency hopping
- H04B1/715—Interference-related aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/69—Spread spectrum techniques
- H04B1/713—Spread spectrum techniques using frequency hopping
- H04B1/715—Interference-related aspects
- H04B2001/7152—Interference-related aspects with means for suppressing interference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40228—Modbus
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种经济型基于MODBUS协议RTU通信方法及系统,其中的模块具备一个发送通道和至少两个接收通道,并且两个接收通道能够分别使能自动确认与重传功能,在发送跳频同步包时不开启ART使数据包能够广播,而在发送前导数据包和数据包时开启ART使通信可靠,最大限度地利用了经济型模块的常见内置增值机制并降低了微控制器负担,跳频抗干扰由协议实现。协议不需要无线模块内置跳频能力或协处理器,降低了对模块的依赖和要求,真正实现高经济性。对比其他协议,本发明的跳频同步在闲时进行而非在发起通信时才开始进行,大大降低了闲时功耗。
Description
技术领域
本发明涉及数据通信技术领域,具体涉及一种经济型基于MODBUS协议RTU通信方法及系统,适用于经济型无线工控产品的开发。
背景技术
随着物联网技术的日益革新,物联网设备逐渐渗透到人们日常生活中的各个方面。其中,MODBUS-RTU是一种常用于工业物联网的通信协议,其接线简单、抗干扰好,并且开发容易,被广泛接受与应用,是一种非常成熟的经济型总线技术。
MODBUS-RTU技术已有很多年历史,因此积累了大量专用代码和技术,其中相当多数都已经经过投产验证。然而,MODBUS-RTU需要一对RS-485双绞线,而在很多场合,如室内等,是不方便布线的。很多无线技术应运而生,它们既可以免去布线又可以直接沿用过去的成熟应用代码。
现有的MODBUS-RTU通信方法有如下缺点:
1. 经济性差。尤其是4G、5G解决方案,DTU的造价在某些情况下甚至超出节点硬件的十倍之多;其他如Wi-Fi、蓝牙和Zigbee的DTU则稍稍便宜,但仍然在几倍的范围内,违背了MODBUS-RTU注重经济性的原则。这些解决方案不可能变得便宜,因为它们必须严格符合相应的通讯协议规范;而4G、5G解决方案甚至还要额外向运营商支付数据费用。
2. 配置复杂。MODBUS-RTU是一种非常简单的协议,而4G、5G以及Wi-Fi等却比MODBUS-RTU复杂数个量级。使用市场上现有的DTU,需要用户既了解MODBUS-RTU又了解其他远要复杂的通讯协议,大大提升了用户的配置和学习负担。
3. 安全性差。尤其是部分基于Wi-Fi的DTU,为了节省成本,甚至放弃了数据加密的算力和软件架构。这使得系统很容易遭到攻击。
4. 时延较长。尤其是部分基于4G、5G、Wi-Fi的DTU,由于每一次通讯都要经过基站和电信基础设施,因此从指令发出到接收到返回码的时间甚至长达数秒。在工业场合如PLC等,我们经常会扫描总线以获得各个电接点的输入,而扫描用法需要返回时间在100毫秒内。
5. 接线麻烦。由于这些DTU都非常昂贵,因此它们往往是独立于节点设备的另购配件,并未被集成进节点内部。这意味着有多少个节点就要购买多少个此种DTU,就要接多少次线;接线非常繁琐,也容易出现接触不良,大大增加了故障排除的难度。
6. 可靠性差。尤其是4G、5G解决方案,经常出现DTU过热、通信基站信道饱和、忘记充值通信费用等问题。这大大降低了系统的可用性,尤其是在那些需要短平快解决方案的场合。
7. 体积庞大。独立的DTU必然比集成化的经济型通讯模组,如nRF24L01、HW3000等更占地方,在某些狭小空间是不合适的。
8. 功耗较高。独立的DTU必然导致较高的功耗,在某些对功率有要求的场合是不合适的。
以上缺点,尤其是1、2、3、4是无线MODBUS-RTU的推广和应用的主要限制。
发明内容
本发明的目的在于提出一种经济型基于MODBUS协议RTU通信方法及系统,以解决现有技术中所存在的一个或多个技术问题,至少提供一种有益的选择或创造条件。
为达到上述目的,本发明提供一种适用于经济型无线通信模组的MODBUS-RTU协议,具体包括如下四个模块:主机微控制器模块,主机通信模块,从机微控制器模块,从机通信模块。
为了实现上述目的,根据本发明的一方面,提供一种经济型基于MODBUS协议RTU通信方法,所述方法包括以下步骤:
S100,主机在接通电源后,主机通信模块配置主机发送通道M_TA为跳频同步广播地址A_SYNC,从干扰最小的频率点F_PREV上每隔一定间隔发送同步数据包P_SYNC;干扰最小的频率点为RSSI值最大的频段或者丢包率小于预设值的频段,例如丢包率小于8%的频段;
其中,每隔一定间隔的时间的取值范围为[80,5000]毫秒;
其中,所述主机通信模块用于主机有线或无线的信号收发,包括至少一个可配置地址的主机发送通道M_TA和至少两个可独立配置接受地址的接收通道,即主机第一接收信道M_RA1、主机第二接收信道M_RA2,并具备可配置的确认回复和重传功能ART,ART为超过应用程序响应时间进行重传;
其中,同步数据包P_SYNC至少包括四个字节,包括第一同步字节、第二同步字节、第三同步字节和第四同步字节,其中,第一同步字节与第二同步字节均为0x00,第三同步字节为F_PREV,第四同步字节为CRC校验值;此时,M_RA1的ART是关闭的,M_RA2的ART是打开的,即主机第一接收信道关闭超时重传,主机第二接收信道开启超时重传;
S200,从机在接通电源后,从机通信模块配置从机第一接收通道S_RA1为跳频同步广播地址A_SYNC,并挑选第一个频段监听一段时间t1;若一个时间阈值t2内未发现合法的同步数据包P_SYNC,合法的同步数据包即未收到同步数据包或同步数据包中的第三同步字节F_PREV或第四同步字节CRC不正确,则跳转到第二个频段继续监听,依此类推,直到发现合法的同步数据包,即当前频段为找到的F_PREV,并在该频段上连续接收数据包;其中,S_RA1的ART是关闭的,S_RA2的ART是打开的,即从机第一接收信道关闭超时重传,从机第二接收信道开启超时重传;其中,t1> t2,t1和t2均为预设时间,t1取值范围为[500,10000]毫秒,t2取值范围为[100,5000]毫秒;
其中,所述从机通信模块用于从机无线收发,包括至少一个可配置地址的从机发送通道S_TA和至少两个可独立配置接受地址的接收通道,即从机第一接收信道S_RA1、从机第二接收信道S_RA2,并具备可配置的确认回复和重传ART功能。
S300,主机对从机发起MODBUS指令时,首先配置主机发送通道M_TA和主机第一接收信道M_RA1为S_RA2,并打开M_RA1的ART;若指令发起时主机正在F_PREV和F_NEXT上交替发送P_SYNC,则在F_PREV和F_NEXT上交替发送前导数据包P_PREAM;若主机仅在F_NEXT上交替发送P_SYNC,则仅在F_NEXT上发送前导数据包P_PREAM;从机若收到前导数据包,则进入S_RX功能,准备接收数据包;从机上的无线模块回复主机P_ACK数据包,主机收到此回复确认从机所在的频段;
其中,F_NEXT为主机通过包括RSSI和丢包率检测方法发现原频段F_PREV现在干扰较大时,即RSSI并不是最大值或者丢包率超过预设值,则跳转到其他频段为F_NEXT,在F_PREV和F_NEXT上交替发送P_SYNC;
其中,S_RX功能为:接收主机发送的数据包,然后对数据包进行解密并对解密后的数据包进行重新拆包拼接,即得到原传输的MODBUS指令,并对该MODBUS指令进行处理后生成对应的回复;
其中,前导数据包P_PREAM至少包括四个字节,包括第一前导字节、第二前导字节、第三前导字节和第四前导字节,其中,第一前导字节为0x00,第二前导字节为从机的MODBUS地址,第三前导字节为F_NEXT,第四前导字节为CRC校验值;
S400,主机将MODBUS指令分成多个分组,然后将最后一个分组填充到分组平均大小的整数倍,并将MODBUS指令的字节数放在最后一个分组的末尾;接下来,在每个分组的前面填充两个字节的随机数,再在前面填充上整个信息的双字节CRC值,形成一个数据包;优选地,在实时时钟可用时,CRC值可以用时间戳代替,使协议能够防止重播攻击;
S500,调用M_ENC功能使用KEY对数据包进行加密;优选地,加密使用XXTEA等小体积高效算法,使资源简陋的单片机也能实现;在加密的数据包前面再填充四个字节的数值,包括第一加密字节、第二加密字节、第三加密字节和第四加密字节,其中,第一加密字节为从0x01开始的包序号,第二加密字节为从机的MODBUS地址,第三加密字节为包的总个数,第四加密字节为CRC校验值,最终形成一个传输单元;
S600,通过M_TX功能对这个传输单元的数据向从机进行发送;主机发送完成后,即进入M_RX功能准备接受从机发来的数据包;
其中,由于发送时自动确认和自动重传功能被打开,因此丢包无需通知微控制器,无线模块自身会迅速协调链路进行重新发送;若多次重发均失败,则再启动一次发送,直到超出某个特定的界限值时退出;
S700,从机的S_RX功能接收这些主机发送的数据包,然后经过S_DEC功能对数据包进行解密、S_UNP功能对解密后的数据进行重新拆包拼接,其中DEC与UNP分别为ENC与PAK的反操作,即得到传输的MODBUS指令,从机对MODBUS指令进行处理后生成回复分组;
S800,从机进入S_PAK功能将该回复分组打包,在进入S_ENC功能将打包后的分组加密;然后,使用从机的数据发送S_TX功能(与M_TX类似)发送数据包,配置S_TA和S_RA1为主机地址M_RA2,并打开S_RA1的ART;主机经由M_RX功能(与S_RX类似)即得到MODBUS指令的返回值;
S_TX功能为:从机向主机进行发送数据包;从机发送完成后,即进入M_RX功能准备接受主机发来的数据包;
M_RX功能为:接收从机发送来的数据包;然后经过数据包进行解密、对解密后的数据进行重新拆包拼接,即得到传输的MODBUS指令,主机对MODBUS指令进行处理后生成回复分组,即MODBUS指令的返回值;
进一步地,在一次通信完成后,主机回到M_SYNC功能,从机回到S_SYNC功能,开始同步频率并准备下一次传输;若主机在刚刚的传输中探测到太多错误,(即ART超过容忍阈值或者CRC校验失败次数超过预设值),则跳转到一个新的频率F_LATEST并通过交替在F_NEXT和F_LATEST上发送P_SYNC来让从机同步到此频率,完成跳频从而规避干扰源。
进一步地,主机通过包括RSSI和丢包率检测方法发现原频段F_PREV现在干扰较大时,即RSSI并不是最大值的频段或者丢包率超过预设值,则跳转到其他频段F_NEXT,在F_PREV和F_NEXT上交替发送P_SYNC;交替若干次数后仅在F_NEXT上发送该P_SYNC;各从机若仍在原F_PREV,则在接收到该P_SYNC数据包后被驱赶到新的频段F_NEXT,若已经在F_NEXT,则维持频段不变。
进一步地,所述主机微控制器模块用于运行主机协议;所述主机通信模块用于主机无线收发,包括至少一个可配置地址的发送通道M_TA和至少两个可独立配置接受地址的接收通道M_RA1、M_RA2,并具备可配置的确认回复和重传(ART)功能。
进一步地,在同一个通信网络中包括一个主机,而最多有255个从机,主机包括主机微控制器模块、主机通信模块;从机包括从机微控制器模块、从机通信模块。
进一步地,所述从机微控制器模块用于运行从机协议;所述从机通信模块用于从机无线收发,包括至少一个可配置地址的发送通道S_TA和至少两个可独立配置接受地址的接收通道S_RA1、S_RA2,并具备可配置的确认回复和重传(ART)功能。
进一步地,所述主机微控制器模块和主机通信模块在一个芯片封装内或者多个芯片封装内;所述从机微控制器模块和主机通信模块在一个芯片封装内或者多个芯片封装内。
进一步地,所述主机协议包括八个子功能:主机跳频发起功能M_SYNC,主机前导数据包发送功能M_PREAM,主机数据打包功能M_PAK,主机数据加密功能M_ENC,主机数据解密功能M_DEC,主机数据解包功能M_UNP,主机数据发送功能M_TX和主机数据接收功能M_RX。
进一步地,所述从机协议包括七个子功能:从机跳频跟随功能S_SYNC,从机数据打包功能S_PAK,从机数据加密功能S_ENC,从机数据解密功能S_DEC,从机数据解包功能S_UNP,从机数据发送模块S_TX和从机数据接收功能S_RX;
主机和所有的从机均持有同一个预先设置的秘钥KEY,主机有一个固定的无线地址,固定填写于主机的M_RA2中,它的一种形式为由HASH(0x00,KEY)。各个MODBUS地址为ADDR的从机有不同且和ADDR一一对应的无线地址,固定填写于从机各自的S_RA2中,它的一种形式为HASH(ADDR,KEY),其中,函数HASH()为哈希函数,即把设定长度的数据输入通过散列算法变换成固定长度的输出,该输出就是散列值。
本发明还提供了一种经济型基于MODBUS协议RTU通信系统,所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下系统的单元中:
主机同步单元,用于在主机在接通电源后,主机通信模块配置主机发送通道M_TA为跳频同步广播地址A_SYNC,从干扰最小的频率点F_PREV上每隔一定间隔发送同步数据包P_SYNC;
从机跳频单元,用于在从机在接通电源后,从机通信模块配置从机第一接收通道S_RA1为跳频同步广播地址A_SYNC,并挑选第一个频段监听一段时间t1;若一个时间阈值t2内未发现合法的同步数据包P_SYNC,合法的同步数据包即未收到同步数据包或同步数据包中的第三同步字节F_PREV或第四同步字节CRC不正确,则跳转到第二个频段继续监听,依此类推,直到发现合法的同步数据包,即当前频段为找到的F_PREV,并在该频段上连续接收数据包;
主机指令发起单元,用于主机对从机发起MODBUS指令时,首先配置主机发送通道M_TA和主机第一接收信道M_RA1的地址为从机地址S_RA2,并打开M_RA1的ART;若指令发起时主机正在F_PREV和F_NEXT上交替发送P_SYNC,则在F_PREV和F_NEXT上交替发送前导数据包P_PREAM;若主机仅在F_NEXT上交替发送P_SYNC,则仅在F_NEXT上发送前导数据包P_PREAM;从机若收到前导数据包,则进入S_RX功能,准备接收数据包;从机上的无线模块回复主机P_ACK数据包,主机收到此回复确认从机所在的频段;其中,F_NEXT为主机通过包括RSSI和丢包率检测方法发现原频段F_PREV现在干扰较大时,即RSSI并不是最大值或者丢包率超过预设值,则跳转到其他频段为F_NEXT,在F_PREV和F_NEXT上交替发送P_SYNC;其中,S_RX功能为:接收主机发送的数据包,然后对数据包进行解密并对解密后的数据包进行重新拆包拼接,即得到原传输的MODBUS指令,并对该MODBUS指令进行处理后生成对应的回复;
数据打包单元,用于主机将MODBUS指令分成多个分组,然后将最后一个分组填充到分组的平均大小,并将MODBUS指令的字节数放在最后一个分组的末尾;接下来,在每个分组的前面填充两个字节的随机数,再在前面填充上整个信息的双字节CRC值,形成一个数据包;
数据加密单元,用于对数据包进行加密,并在加密的数据包前面再填充四个字节的数值,包括第一加密字节、第二加密字节、第三加密字节和第四加密字节,其中,第一加密字节为从0x01开始的包序号,第二加密字节为从机的MODBUS地址,第三加密字节为包的总个数,第四加密字节为CRC校验值,最终形成一个传输单元;
数据发送单元,用于对传输单元的数据向从机进行发送;主机发送完成后,即准备接受从机发来的数据包;
数据重组单元,用于从机接收这些主机发送的数据包,然后对数据包进行解密并对解密后的数据进行重新拆包拼接,即得到MODBUS指令,从机对MODBUS指令进行处理后生成回复分组;
数据传输单元,用于从机将该回复分组打包并将打包后的分组加密;然后,从机向主机进行发送数据,配置S_TA和S_RA1为主机地址M_RA2,并打开S_RA1的ART;接收从机发送来的数据包;然后经过数据包进行解密、对解密后的数据进行重新拆包拼接,即得到传输的MODBUS指令,主机对MODBUS指令进行处理后生成回复分组,即MODBUS指令的返回值。
本发明的有益效果为:本发明提供一种经济型基于MODBUS协议RTU通信方法及系统,该方法是针对MODBUS-RTU总线设计的通信协议,解决了通用协议中经济性差、时延高、可靠性差、信息安全性差的问题。
1.本发明的方法构建的协议唯一的要求就是模块具备一个发送通道和至少两个接收通道,并且两个接收通道能够分别使能自动确认与重传(ART)功能。市场上大部分经济型模块都满足此要求。不同于其他协议,本协议在发送跳频同步包时不开启ART使数据包能够广播,而在发送前导数据包和数据包时开启ART使通信可靠,最大限度地利用了经济型模块的常见内置增值机制并降低了微控制器负担。
2.跳频抗干扰由协议实现,适用于很多廉价模块如HW3000,nRF24L01,SI24R1等。协议不需要无线模块内置跳频能力或协处理器,降低了对模块的依赖和要求,真正实现高经济性。对比其他协议,本协议的跳频同步在闲时进行而非在发起通信时才开始进行,通讯可以直接在已经同步好的频段上发起,降低了通信发起的时延。
3.相比于那些在发起通信时才开始频繁同步频率的协议,本协议闲时跳频包发射的峰值频率可以远低,因为在MODBUS-RTU网络中闲时往往远大于忙时。这有助于通过诸多对峰值发射功率有限制的无线认证。
4.与其他类似网络协议相比,本协议能够实现真正可靠的1主机:255从机通信,突破很多网络协议如Gazell的1主机:8从机通信限制,可以满足有很多MODBUS-RTU设备的场合。
5.无线网络易受干扰,而本方案的数据包重传最大限度地利用了廉价无线模块中常见的自动确认和重发功能,极大地减少了微控制器的工作量,实时性好。实际测试中,即便在8位微控制器上传输200字节,环路响应时间也能达到50毫秒以内,与其他方案相比可完全满足MODBUS-RTU扫描所需。
6.本方法的协议内置加密算法如XXTEA具备相当强的信息安全性,配合每个包加密前插入的随机数(加盐)可以防止嗅探攻击,在模块内置实时时钟并插入时间戳时还具备抗重播攻击能力,同时又远比AES容易实现,编译生成的二进制更小。
7.一主多从的简单网络,利用各个从机MODBUS-RTU地址的不同自动生成不同的从机网络地址,配置和MODBUS-RTU一样简单,仅需要配置不同的加密密钥以区别不同网络。
8.本方法的协议的数据包格式充分利用了MODBUS协议中有效地址为1-247的特点,使得只要查看每个包的前四个字节就能知道包的类别(同步、前导、数据),高效可靠。同步包的长度(4字节)和数据包(32字节)相比远要短,大大降低了闲时功耗。而且,每个从机的无线地址是不同的,这样只有目标从机会返回回复,降低了其他从机的功耗。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的参考标号表示相同或相似的元素,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,在附图中:
图1所示为一种经济型基于MODBUS协议RTU通信方法的流程图;
图2所示为一种经济型基于MODBUS协议RTU通信系统结构图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示为根据本发明的一种经济型基于MODBUS协议RTU通信方法的流程图,下面结合图1来阐述根据本发明的实施方式的一种经济型基于MODBUS协议RTU通信方法。
本发明提出一种经济型基于MODBUS协议RTU通信方法,具体包括以下步骤:
S100,主机在接通电源后,主机通信模块配置主机发送通道M_TA为跳频同步广播地址A_SYNC,从干扰最小的频率点F_PREV上每隔一定间隔发送同步数据包P_SYNC;干扰最小的频率点为RSSI值最大的频段或者丢包率小于预设值的频段,例如丢包率小于8%的频段;
其中,所述主机通信模块用于主机有线或无线的信号收发,包括至少一个可配置地址的主机发送通道M_TA和至少两个可独立配置接受地址的接收通道,即主机第一接收信道M_RA1、主机第二接收信道M_RA2,并具备可配置的确认回复和重传功能ART,ART为超过应用程序响应时间进行重传;
其中,同步数据包P_SYNC至少包括四个字节,包括第一同步字节、第二同步字节、第三同步字节和第四同步字节,其中,第一同步字节与第二同步字节均为0x00,第三同步字节为F_PREV,第四同步字节为CRC校验值;此时,M_RA1的ART是关闭的,M_RA2的ART是打开的,即主机第一接收信道关闭超时重传,主机第二接收信道开启超时重传;
S200,从机在接通电源后,从机通信模块配置从机第一接收通道S_RA1为跳频同步广播地址A_SYNC,并挑选第一个频段监听一段时间t1;若一个时间阈值t2内未发现合法的同步数据包P_SYNC,合法的同步数据包即未收到同步数据包或同步数据包中的第三同步字节F_PREV或第四同步字节CRC不正确,则跳转到第二个频段继续监听,依此类推,直到发现合法的同步数据包,即当前频段为找到的F_PREV,并在该频段上连续接收数据包;其中,S_RA1的ART是关闭的,S_RA2的ART是打开的,即从机第一接收信道关闭超时重传,从机第二接收信道开启超时重传;其中,t1> t2,t1和t2均为预设时间,t1取值范围为[500,10000]毫秒,t2取值范围为[100,5000]毫秒;关闭或打开ART的意义为将信道的超时重传功能关闭或者开启;
其中,所述从机通信模块用于从机无线收发,包括至少一个可配置地址的从机发送通道S_TA和至少两个可独立配置接受地址的接收通道,即从机第一接收信道S_RA1、从机第二接收信道S_RA2,并具备可配置的确认回复和重传ART功能。
S300,主机对从机发起MODBUS指令时,首先配置主机发送通道M_TA和主机第一接收信道M_RA1的地址为S_RA2的地址,并打开M_RA1的ART;若指令发起时主机正在F_PREV和F_NEXT上交替发送P_SYNC,则在F_PREV和F_NEXT上交替发送前导数据包P_PREAM;若主机仅在F_NEXT上交替发送P_SYNC,则仅在F_NEXT上发送前导数据包P_PREAM;从机若收到前导数据包,则进入S_RX功能,准备接收数据包;从机上的无线模块回复主机P_ACK数据包,主机收到此回复确认从机所在的频段,并进入步骤S400的M_PAK功能开始数据打包;
其中,F_NEXT为主机通过包括RSSI和丢包率检测方法发现原频段F_PREV现在干扰较大时,即RSSI并不是最大值或者丢包率超过预设值,则跳转到其他频段为F_NEXT,在F_PREV和F_NEXT上交替发送P_SYNC;
其中,S_RX功能为:接收主机发送的数据包,然后对数据包进行解密并对解密后的数据包进行重新拆包拼接,即得到原传输的MODBUS指令,并对该MODBUS指令进行处理后生成对应的回复;
其中,前导数据包P_PREAM至少包括四个字节,包括第一前导字节、第二前导字节、第三前导字节和第四前导字节,其中,第一前导字节为0x00,第二前导字节为从机的MODBUS地址,第三前导字节为F_NEXT,第四前导字节为CRC校验值;
S400,在M_PAK功能中,主机将MODBUS指令分成至少24字节的分组,然后将最后一个分组填充到24的整数倍,并将MODBUS指令的字节数放在最后一个分组的末尾;接下来,在每个分组的前面填充两个字节的随机数,再在前面填充上整个信息的双字节CRC值,形成一个28字节的数据包;优选地,在实时时钟可用时,CRC值可以用时间戳代替,使协议能够防止重播攻击;
S500,调用M_ENC功能使用KEY对数据包进行加密;优选地,加密使用XXTEA等小体积高效算法,使资源简陋的单片机也能实现;在加密的数据包前面再填充四个字节的数值,包括第一加密字节、第二加密字节、第三加密字节和第四加密字节,其中,第一加密字节为从0x01开始的包序号,第二加密字节为从机的MODBUS地址,第三加密字节为包的总个数,第四加密字节为CRC校验值,最终形成一个32个字节的传输单元;
S600,通过M_TX功能对这32个字节的传输单元的数据向从机进行发送;主机发送完成后,即进入M_RX功能准备接受从机发来的数据包;
其中,由于发送时自动确认和自动重传功能被打开,因此丢包无需通知微控制器,无线模块自身会迅速协调链路进行重新发送;若多次重发均失败,则再启动一次发送,直到超出某个特定的界限值(界限值一般设置范围[50,800]次)时退出,即重发失败次数超过界限值时退出;
S700,从机的S_RX功能接收这些主机发送的数据包,然后经过S_DEC功能对数据包进行解密、S_UNP功能对解密后的数据进行重新拆包拼接,其中DEC与UNP分别为ENC与PAK的反操作,即得到传输的MODBUS指令,从机对MODBUS指令进行处理后生成回复分组;
S800,从机进入S_PAK功能将该回复分组打包,在进入S_ENC功能将打包后的分组加密;然后,使用从机的数据发送S_TX功能(与M_TX类似)发送数据包,配置S_TA和S_RA1为主机地址M_RA2,并打开S_RA1的ART;主机经由M_RX功能(与S_RX类似)即得到MODBUS指令的返回值;
S_TX功能为:从机向主机进行发送数据包;从机发送完成后,即进入M_RX功能准备接受主机发来的数据包;
M_RX功能为:接收从机发送来的数据包;然后经过数据包进行解密、对解密后的数据进行重新拆包拼接,即得到传输的MODBUS指令,主机对MODBUS指令进行处理后生成回复分组,即MODBUS指令的返回值;
进一步地,在一次通信完成后,主机回到M_SYNC功能,从机回到S_SYNC功能,开始同步频率并准备下一次传输;若主机在刚刚的传输中探测到太多错误,(即ART超过容忍阈值或者CRC校验失败次数超过预设值),则跳转到一个新的频率F_LATEST并通过交替在F_NEXT和F_LATEST上发送P_SYNC来让从机同步到此频率,完成跳频从而规避干扰源。
进一步地,主机通过包括RSSI和丢包率检测方法发现原频段F_PREV现在干扰较大时,即RSSI并不是最大值或者丢包率超过预设值,则跳转到其他频段F_NEXT,在F_PREV和F_NEXT上交替发送P_SYNC;交替若干次数后仅在F_NEXT上发送该P_SYNC;各从机若仍在原F_PREV,则在接收到该P_SYNC数据包后被驱赶到新的频段F_NEXT,若已经在F_NEXT,则维持频段不变。
进一步地,在同一个通信网络中包括一个主机,而最多有255个从机,主机包括主机微控制器模块、主机通信模块;从机包括从机微控制器模块、从机通信模块。
进一步地,所述主机微控制器模块用于运行主机协议;所述主机通信模块用于主机无线收发,包括至少一个可配置地址的发送通道M_TA和至少两个可独立配置接受地址的接收通道M_RA1、M_RA2,并具备可配置的确认回复和重传(ART)功能。
进一步地,所述从机微控制器模块用于运行从机协议;所述从机通信模块用于从机无线收发,包括至少一个可配置地址的发送通道S_TA和至少两个可独立配置接受地址的接收通道S_RA1、S_RA2,并具备可配置的确认回复和重传(ART)功能。
进一步地,所述主机微控制器模块和主机通信模块在一个芯片封装内或者多个芯片封装内;所述从机微控制器模块和主机通信模块在一个芯片封装内或者多个芯片封装内。
进一步地,所述主机协议包括八个子功能:主机跳频发起功能M_SYNC,主机前导数据包发送功能M_PREAM,主机数据打包功能M_PAK,主机数据加密功能M_ENC,主机数据解密功能M_DEC,主机数据解包功能M_UNP,主机数据发送功能M_TX和主机数据接收功能M_RX。
进一步地,所述从机协议包括七个子功能:从机跳频跟随功能S_SYNC,从机数据打包功能S_PAK,从机数据加密功能S_ENC,从机数据解密功能S_DEC,从机数据解包功能S_UNP,从机数据发送模块S_TX和从机数据接收功能S_RX;
主机和所有的从机均持有同一个预先设置的秘钥KEY,主机有一个固定的无线地址,固定填写于主机的M_RA2中,它的一种形式为由HASH(0x00,KEY)。各个MODBUS地址为ADDR的从机有不同且和ADDR一一对应的无线地址,固定填写于从机各自的S_RA2中,它的一种形式为HASH(ADDR,KEY),其中,函数HASH()为哈希函数,即把设定长度的数据输入通过散列算法变换成固定长度的输出,该输出就是散列值。
本发明的一种经济型基于MODBUS协议RTU通信方法提供一种实施例,阐述该方法如何在主机和从机之间进行通信:
某主机上电,关闭自动应答功能,选择干扰较小的信道5,并在前导数据包广播地址【FF FC ED 27 6A】上发送前导数据包【00 00 05 CRC】。其中,FC ED 27 6A为该网络的秘钥经过HASH变换后得到的,而第一个字节则是可变的,若为00则为主机地址,若为FF则是广播地址,若为其他值则为该从机节点的MODBUS地址。
某MODBUS地址为0x94的从机上电,关闭自动应答功能,并在各个频段上轮番寻找前导数据包。先查看信道1,发现等待一段时间后无法收到前导数据包,于是切换到信道2,以此类推,直到找到信道5,并停留在信道5。
主机发现信道5被干扰决定切换到信道7,于是更改前导数据包为【00 00 07CRC】,并在信道5和信道7上交替发送。从机在信道5上收到该前导数据包后更改信道为信道7。若从机在一段时间内都没有收到前导数据包,则重新开始在各个频段上轮番寻找前导数据包。
主机向从机发起通信。主机首先开启自动应答功能,然后在信道5和信道7上均向该从机地址【94 FC ED 27 6A】发送前导数据包,试探从机的回应。
从机已经处于信道7,接收到该前导数据包后由其无线模块在信道7上自动回复应答,并进入接收模式。主机收到该应答后,切换发送信道到信道7,并将指令填充至24字节长度的整数倍,并将最后一个字节替换为指令总长度。然后打包、发送至相应的从机的地址。
假设指令有35(0x23)个字节,则填充后生成的两个32字节的数据包为【01 94 02CRC ENC[0:27]】和【02 94 02 CRC ENC[28:55]】,其中ENC[0:55]是下述数组【CRC16HCRC16L RANDOM RANDOM 原始指令[0:23] CRC16H CRC16L RANDOM RANDOM 原始指令[24:34] 00 00 00 ... 23】经过XXTEA加密后得到的。其中RANDOM是互相独立的随机数。
主机逐个发送这些数据包到从机,从机则逐个接收数据包,直到序号为PKTNUM(这里为2)的包被收到,并解密、解包得到原信息。从机将该信息处理后也遵循类似方式发回主机的地址【00 FC ED 27 6A】,主机即获取了从机对此指令的响应。
在通信完成后,主机和从机均关闭自动应答。主机发现刚刚的通信中丢包过于频繁,决定继续跳频到信道15,于是更改同步包为【00 00 0F CRC8】,并在信道7和信道15上交替发送。从机截获该同步包后也切换到信道15完成同步。
本发明的实施例提供的一种经济型基于MODBUS协议RTU通信系统,如图2所示为本发明的一种经济型基于MODBUS协议RTU通信系统结构图,该实施例的一种经济型基于MODBUS协议RTU通信系统包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种经济型基于MODBUS协议RTU通信系统实施例中的步骤。
所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下系统的单元中:
主机同步单元,用于在主机在接通电源后,主机通信模块配置主机发送通道M_TA为跳频同步广播地址A_SYNC,从干扰最小的频率点F_PREV上每隔一定间隔发送同步数据包P_SYNC;
从机跳频单元,用于在从机在接通电源后,从机通信模块配置从机第一接收通道S_RA1为跳频同步广播地址A_SYNC,并挑选第一个频段监听一段时间t1;若一个时间阈值t2内未发现合法的同步数据包P_SYNC,合法的同步数据包即未收到同步数据包或同步数据包中的第三同步字节F_PREV或第四同步字节CRC不正确,则跳转到第二个频段继续监听,依此类推,直到发现合法的同步数据包,即当前频段为找到的F_PREV,并在该频段上连续接收数据包;
主机指令发起单元,用于主机对从机发起MODBUS指令时,首先配置主机发送通道M_TA和主机第一接收信道M_RA1的地址为从机地址S_RA2,并打开M_RA1的ART;若指令发起时主机正在F_PREV和F_NEXT上交替发送P_SYNC,则在F_PREV和F_NEXT上交替发送前导数据包P_PREAM;若主机仅在F_NEXT上交替发送P_SYNC,则仅在F_NEXT上发送前导数据包P_PREAM;从机若收到前导数据包,则进入S_RX功能,准备接收数据包;从机上的无线模块回复主机P_ACK数据包,主机收到此回复确认从机所在的频段;其中,F_NEXT为主机通过包括RSSI和丢包率检测方法发现原频段F_PREV现在干扰较大时,即RSSI并不是最大值或者丢包率超过预设值,则跳转到其他频段为F_NEXT,在F_PREV和F_NEXT上交替发送P_SYNC;其中,S_RX功能为:接收主机发送的数据包,然后对数据包进行解密并对解密后的数据包进行重新拆包拼接,即得到原传输的MODBUS指令,并对该MODBUS指令进行处理后生成对应的回复;
数据打包单元,用于主机将MODBUS指令分成至少24字节的分组,然后将最后一个分组填充到24的整数倍,并将MODBUS指令的字节数放在最后一个分组的末尾;接下来,在每个分组的前面填充两个字节的随机数,再在前面填充上整个信息的双字节CRC值,形成一个28字节的数据包;
数据加密单元,用于对数据包进行加密,并在加密的数据包前面再填充四个字节的数值,包括第一加密字节、第二加密字节、第三加密字节和第四加密字节,其中,第一加密字节为从0x01开始的包序号,第二加密字节为从机的MODBUS地址,第三加密字节为包的总个数,第四加密字节为CRC校验值,最终形成一个32个字节的传输单元;
数据发送单元,用于对32个字节的传输单元的数据向从机进行发送;主机发送完成后,即准备接受从机发来的数据包;
数据重组单元,用于从机接收这些主机发送的数据包,然后对数据包进行解密并对解密后的数据进行重新拆包拼接,即得到MODBUS指令,从机对MODBUS指令进行处理后生成回复分组;
数据传输单元,用于从机将该回复分组打包并将打包后的分组加密;然后,从机向主机进行发送数据,配置S_TA和S_RA1为主机地址M_RA2,并打开S_RA1的ART;接收从机发送来的数据包;然后经过数据包进行解密、对解密后的数据进行重新拆包拼接,即得到传输的MODBUS指令,主机对MODBUS指令进行处理后生成回复分组,即MODBUS指令的返回值。
所述一种经济型基于MODBUS协议RTU通信系统可以运行于桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备中。所述一种经济型基于MODBUS协议RTU通信系统,可运行的系统可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述例子仅仅是一种经济型基于MODBUS协议RTU通信系统的示例,并不构成对一种经济型基于MODBUS协议RTU通信系统的限定,可以包括比例子更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述一种经济型基于MODBUS协议RTU通信系统还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种经济型基于MODBUS协议RTU通信系统运行系统的控制中心,利用各种接口和线路连接整个一种经济型基于MODBUS协议RTU通信系统可运行系统的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述一种经济型基于MODBUS协议RTU通信系统的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
另一方面,本公开一种使用经济型无线模块和微控制器构成的MODBUS-RTU工业物联网节点,该节点的内部模块包括但不限于:
模块1,电源管理模块,为整个通信网络中所有工业物联网节点(即所有主机和从机)提供供电。
模块2,输入输出模块,这些模块是电干接点或模拟输入输出接点,用于从环境中采集量或向环境输出量。优选地,这些输入输出端子都采用电气隔离。
模块3,符合本发明要求的经济型无线模块,该无线模块被直接集成于MODBUS-RTU节点之内,由电源整理模块供电。
模块4,具备足以运行本发明所述协议的资源的微控制器,该微控制器由电源管理模块供电,并与经济型无线模块相连。
尽管本发明的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,从而有效地涵盖本发明的预定范围。此外,上文以发明人可预见的实施例对本发明进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本发明的非实质性改动仍可代表本发明的等效改动。
Claims (6)
1.一种经济型基于MODBUS协议RTU通信方法,其特征在于,所述方法包括以下步骤:
S100,主机在接通电源后,主机通信模块配置主机发送通道M_TA为跳频同步广播地址A_SYNC,从干扰最小的频率点F_PREV上每隔一定间隔发送同步数据包P_SYNC;
其中,所述主机通信模块用于主机有线或无线的信号收发,包括至少一个可配置地址的主机发送通道M_TA和至少两个可独立配置接受地址的接收通道,即主机第一接收信道M_RA1、主机第二接收信道M_RA2,并具备可配置的确认回复和重传功能ART,ART为超过应用程序响应时间进行重传;
其中,同步数据包P_SYNC至少包括四个字节,包括第一同步字节、第二同步字节、第三同步字节和第四同步字节;
此时,M_RA1的ART是关闭的,M_RA2的ART是打开的,即主机第一接收信道关闭超时重传,主机第二接收信道开启超时重传;
S200,从机在接通电源后,从机通信模块配置从机第一接收通道S_RA1为跳频同步广播地址A_SYNC,并挑选第一个频段监听一段时间t1;若一个时间阈值t2内未发现合法的同步数据包P_SYNC,未发现合法的同步数据包即未收到同步数据包或同步数据包中的第三同步字节F_PREV或第四同步字节CRC不正确,则跳转到第二个频段继续监听,依此类推,直到发现合法的同步数据包,即当前频段为找到的F_PREV,并在该频段上连续接收数据包;其中,S_RA1的ART是关闭的,S_RA2的ART是打开的;
其中,所述从机通信模块用于从机无线收发,包括至少一个可配置地址的从机发送通道S_TA和至少两个可独立配置接受地址的接收通道,即从机第一接收信道S_RA1、从机第二接收信道S_RA2,并具备可配置的确认回复和重传ART功能;
S300,主机对从机发起MODBUS指令时,首先配置主机发送通道M_TA和主机第一接收信道M_RA1为S_RA2,并打开M_RA1的ART;若指令发起时主机正在F_PREV和F_NEXT上交替发送P_SYNC,则在F_PREV和F_NEXT上交替发送前导数据包P_PREAM;若主机仅在F_NEXT上交替发送P_SYNC,则仅在F_NEXT上发送前导数据包P_PREAM;从机若收到前导数据包,则进入S_RX功能,准备接收数据包;从机上的无线模块回复主机P_ACK数据包,主机收到此回复确认从机所在的频段;
其中,F_NEXT为主机通过包括RSSI和丢包率检测方法发现原频段F_PREV现在干扰较大时,即RSSI并不是最大值或者丢包率超过预设值,跳转到的其他频段即为F_NEXT;在F_PREV和F_NEXT上交替发送P_SYNC;
其中,S_RX功能为:接收主机发送的数据包,然后对数据包进行解密并对解密后的数据包进行重新拆包拼接,即得到原传输的MODBUS指令,并对该MODBUS指令进行处理后生成对应的回复;
其中,前导数据包P_PREAM至少包括四个字节,包括第一前导字节、第二前导字节、第三前导字节和第四前导字节;
S400,主机将MODBUS指令分成多个分组,然后将最后一个分组填充到分组平均大小的整数倍,并将MODBUS指令的字节数放在最后一个分组的末尾;接下来,在每个分组的前面填充两个字节的随机数,再在前面填充上整个信息的双字节CRC值,形成一个数据包;
S500,对数据包进行加密,并在加密的数据包前面再填充四个字节的数值,包括第一加密字节、第二加密字节、第三加密字节和第四加密字节,最终形成一个传输单元;
S600,对传输单元的数据向从机进行发送;主机发送完成后,即准备接受从机发来的数据包;
S700,从机接收这些主机发送的数据包,然后对数据包进行解密并对解密后的数据进行重新拆包拼接,即得到MODBUS指令,从机对MODBUS指令进行处理后生成回复分组;
S800,从机将该回复分组打包并将打包后的分组加密;然后,从机向主机进行发送数据,配置S_TA和S_RA1为主机地址M_RA2,并打开S_RA1的ART;接收从机发送来的数据包;然后经过数据包进行解密并对解密后的数据进行重新拆包拼接,即得到传输的MODBUS指令,主机对MODBUS指令进行处理后生成回复分组,即得到MODBUS指令的返回值。
2.根据权利要求1所述的一种经济型基于MODBUS协议RTU通信方法,其特征在于,在同一个通信网络中包括一个主机,而最多有255个从机,主机包括主机微控制器模块、主机通信模块;从机包括从机微控制器模块、从机通信模块。
3.根据权利要求2所述的一种经济型基于MODBUS协议RTU通信方法,其特征在于,在S200中,t1> t2,t1和t2均为预设时间,t1取值范围为[500,10000]毫秒,t2取值范围为[100,5000]毫秒。
4.根据权利要求3所述的一种经济型基于MODBUS协议RTU通信方法,其特征在于,其中,同步数据包P_SYNC中的第一同步字节与第二同步字节均为0x00,第三同步字节为F_PREV,第四同步字节为CRC校验值;
前导数据包P_PREAM中的第一前导字节为0x00,第二前导字节为从机的MODBUS地址,第三前导字节为F_NEXT,第四前导字节为CRC校验值;
加密的数据包中的第一加密字节为从0x01开始的包序号,第二加密字节为从机的MODBUS地址,第三加密字节为包的总个数,第四加密字节为CRC校验值。
5.根据权利要求3所述的一种经济型基于MODBUS协议RTU通信方法,其特征在于,所述主机微控制器模块和主机通信模块在一个芯片封装内或者多个芯片封装内;所述从机微控制器模块和主机通信模块在一个芯片封装内或者多个芯片封装内。
6.一种经济型基于MODBUS协议RTU通信系统,其特征在于,所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下系统的单元中:
主机同步单元,用于在主机接通电源后,主机通信模块配置主机发送通道M_TA为跳频同步广播地址A_SYNC,从干扰最小的频率点F_PREV上每隔一定间隔发送同步数据包P_SYNC;
从机跳频单元,用于在从机接通电源后,从机通信模块配置从机第一接收通道S_RA1为跳频同步广播地址A_SYNC,并挑选第一个频段监听一段时间t1;若一个时间阈值t2内未发现合法的同步数据包P_SYNC,未发现合法的同步数据包即未收到同步数据包或同步数据包中的第三同步字节F_PREV或第四同步字节CRC不正确,则跳转到第二个频段继续监听,依此类推,直到发现合法的同步数据包,即当前频段为找到的F_PREV,并在该频段上连续接收数据包;
主机指令发起单元,用于主机对从机发起MODBUS指令时,首先配置主机发送通道M_TA和主机第一接收信道M_RA1的地址为从机地址S_RA2,并打开M_RA1的ART;若指令发起时主机正在F_PREV和F_NEXT上交替发送P_SYNC,则在F_PREV和F_NEXT上交替发送前导数据包P_PREAM;若主机仅在F_NEXT上交替发送P_SYNC,则仅在F_NEXT上发送前导数据包P_PREAM;从机若收到前导数据包,则进入S_RX功能,准备接收数据包;从机上的无线模块回复主机P_ACK数据包,主机收到此回复确认从机所在的频段;其中,F_NEXT为主机通过包括RSSI和丢包率检测方法发现原频段F_PREV现在干扰较大时,即RSSI并不是最大值或者丢包率超过预设值,跳转到的其他频段即为F_NEXT;在F_PREV和F_NEXT上交替发送P_SYNC;
其中,S_RX功能为:接收主机发送的数据包,然后对数据包进行解密并对解密后的数据包进行重新拆包拼接,即得到原传输的MODBUS指令,并对该MODBUS指令进行处理后生成对应的回复;
数据打包单元,用于主机将MODBUS指令分成多个分组,然后将最后一个分组填充到分组平均大小的整数倍,并将MODBUS指令的字节数放在最后一个分组的末尾;接下来,在每个分组的前面填充两个字节的随机数,再在前面填充上整个信息的双字节CRC值,形成一个数据包;
数据加密单元,用于对数据包进行加密,并在加密的数据包前面再填充四个字节的数值,包括第一加密字节、第二加密字节、第三加密字节和第四加密字节,其中,第一加密字节为从0x01开始的包序号,第二加密字节为从机的MODBUS地址,第三加密字节为包的总个数,第四加密字节为CRC校验值,最终形成一个传输单元;
数据发送单元,用于将传输单元的数据向从机进行发送;主机发送完成后,即准备接受从机发来的数据包;
数据重组单元,用于从机接收这些主机发送的数据包,然后对数据包进行解密并对解密后的数据进行重新拆包拼接,即得到MODBUS指令,从机对MODBUS指令进行处理后生成回复分组;
数据传输单元,用于从机将该回复分组打包并将打包后的分组加密;然后,从机向主机进行发送数据,配置S_TA和S_RA1为主机地址M_RA2,并打开S_RA1的ART;接收从机发送来的数据包;然后经过数据包进行解密、对解密后的数据进行重新拆包拼接,即得到传输的MODBUS指令,主机对MODBUS指令进行处理后生成回复分组,即MODBUS指令的返回值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011513050.1A CN112468382B (zh) | 2020-12-20 | 2020-12-20 | 一种经济型基于modbus协议rtu通信方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011513050.1A CN112468382B (zh) | 2020-12-20 | 2020-12-20 | 一种经济型基于modbus协议rtu通信方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112468382A CN112468382A (zh) | 2021-03-09 |
CN112468382B true CN112468382B (zh) | 2021-12-28 |
Family
ID=74803112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011513050.1A Active CN112468382B (zh) | 2020-12-20 | 2020-12-20 | 一种经济型基于modbus协议rtu通信方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112468382B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113660190B (zh) * | 2021-05-17 | 2023-05-30 | 捷佳润科技集团股份有限公司 | 一种新型带唤醒机制rtu通讯协议的设计方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067238A (zh) * | 2012-12-28 | 2013-04-24 | 深圳市研控自动化科技有限公司 | 一种兼容于modbus总线的数据采集方法 |
CN105577482A (zh) * | 2016-02-04 | 2016-05-11 | 北京安控科技股份有限公司 | 基于Modbus RTU通信协议的从智能模块入网的方法 |
US20160373562A1 (en) * | 2015-06-17 | 2016-12-22 | Honeywell International, Inc. | Rtu serial communication mechanism |
CN110851392A (zh) * | 2019-11-13 | 2020-02-28 | 中广核研究院有限公司北京分公司 | 基于Modbus RTU协议的通讯方法及通讯系统 |
CN111124986A (zh) * | 2019-12-30 | 2020-05-08 | 贵州兔淘智能科技有限公司 | 一种与Modbus兼容且更高效的异步串口通信协议 |
-
2020
- 2020-12-20 CN CN202011513050.1A patent/CN112468382B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067238A (zh) * | 2012-12-28 | 2013-04-24 | 深圳市研控自动化科技有限公司 | 一种兼容于modbus总线的数据采集方法 |
US20160373562A1 (en) * | 2015-06-17 | 2016-12-22 | Honeywell International, Inc. | Rtu serial communication mechanism |
CN105577482A (zh) * | 2016-02-04 | 2016-05-11 | 北京安控科技股份有限公司 | 基于Modbus RTU通信协议的从智能模块入网的方法 |
CN110851392A (zh) * | 2019-11-13 | 2020-02-28 | 中广核研究院有限公司北京分公司 | 基于Modbus RTU协议的通讯方法及通讯系统 |
CN111124986A (zh) * | 2019-12-30 | 2020-05-08 | 贵州兔淘智能科技有限公司 | 一种与Modbus兼容且更高效的异步串口通信协议 |
Also Published As
Publication number | Publication date |
---|---|
CN112468382A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106878926B (zh) | 一种基于低功耗蓝牙的数据传输方法、从主设备及系统 | |
EP3614786B1 (en) | Data transmission method and apparatus | |
US10517071B2 (en) | Wireless communication device, wireless communication system, wireless communication method and program | |
US7594021B2 (en) | Radio communication system, radio communication apparatus and method, and program | |
Chen et al. | WirelessHART and IEEE 802.15. 4e | |
CN110708688A (zh) | 智能设备配网方法、装置以及控制器和介质 | |
US10382531B2 (en) | Controlling a remote device over a network | |
US7974578B2 (en) | Baseband controller in a micronetwork | |
CN111083654B (zh) | 无线无源开关实现控制的方法、无线无源开关,以及代理节点 | |
CN111490916B (zh) | 紫蜂ZigBee子设备的绑定方法、系统、装置及介质 | |
CN104518864A (zh) | 利用分段然后加密安全的电力线通信(plc)网络节点 | |
KR20120075477A (ko) | 교차하는 요청들을 이용한 그룹 소유자 선택 | |
CN112468382B (zh) | 一种经济型基于modbus协议rtu通信方法及系统 | |
CN112260780B (zh) | 一种网络接入的方法、装置及系统 | |
CN204721613U (zh) | 一种Wi-Fi物联网系统及Wi-Fi物联网设备 | |
CN104883724A (zh) | 一种Wi-Fi物联网设备通信方法及Wi-Fi物联网系统 | |
CN114503516A (zh) | 物联网模块 | |
CN104012162A (zh) | 通信网络中的位置隐私 | |
CN111954123B (zh) | 无线音频设备信息同步的方法、系统、介质及无线音频设备 | |
US10104192B2 (en) | Selective multiple-media access control | |
CN103546201A (zh) | 一种基于蓝牙技术的自适应保密数据传输系统 | |
Neupane | A Comparative study of Wireless Star Networks Implemented with Current Wireless Protocols | |
WO2023235373A1 (en) | Efficient unicast super frame communications | |
US20100054178A1 (en) | Method of parallel wireless communication | |
US20130135532A1 (en) | Apparatus and method for communicating wireless video based on zigbee network protocol |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |