一种Modbus主站通信方法及装置与流程

文档序号:37075821发布日期:2024-02-20 21:30阅读:15来源:国知局
一种Modbus主站通信方法及装置与流程

本发明涉及核电厂仪表和控制系统,具体涉及一种modbus主站通信方法及装置。


背景技术:

1、modbus通信是通过主站与从站一问一答来实现的,通常会经过多轮的请求或应答操作来完成某一项通信任务的数据传输。考虑到大量数据传输的通信场景,将所有数据传输完成可能需要主从站的多次问答,其对应的网络传输时间会比较长,加上主从站对通信包的组包与数据处理等时间,整个通信过程花费的时间则更长。此外,modbus主站在通信前会根据协议规则来划分通信包,比如同一个功能码下,当数据的通信地址不连续时会划分新的通信包;不同功能码之间也会划分新的通信包。基于上述分包规则,如果前后通信数据的功能码不同、通信地址频繁断续等,都会增加modbus通信包的数量,导致modbus的通信效率降低。

2、现有专利cn112073280a公开了一种基于modbus协议的通信方法、装置及通信设备,该方法令主站在进行读功能码类型通信时,将两个不连续地址段拼接为一个连续地址段,从而令各个数据的通信地址连续起来,由此减少生成的通信包数量,提高modbus通信效率。该方法具体包括:根据主设备对应的modbus编码配置信息和指令传输信息,计算得到指令发送时间间隔所对应的无效地址限值,其中,发送时间间隔是指依次发送两条指令之间的时间间隔;按照modbus编码配置信息中的寄存器地址由小到大的顺序,依次在两个相邻但地址不连续的有效地址之间添加无效地址,得到至少一个地址连续的目标地址块;其中,每个目标地址块中包含的无效地址数量小于无效地址限值;针对每个目标地址块生成一条通信指令,并将通信指令发送至从设备。该方法增加了主、从站对无效地址上数据的处理,且存在误使用无效数据的风险。

3、现有专利cn111294264a公开了一种基于modbus tcp协议的通信方法及装置,该方法令主站将多个modbus通信包组合成一个来发送,由从站依次解析并应答,由此减少发包次数,提高modbus通信效率。该方法包括:按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;发送组合请求报文至从站,以使从站从组合请求报文中依次拆分出请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向主站返回组合应答报文;若在设定时间内,接收到从站返回的组合应答报文,则对组合应答报文进行依次拆分。该方法需要从站也具备处理组合请求报文的能力,对从站要求较高,通用性不强,不适用于所有从站设备。

4、综上所述,上述专利都是通过减少读操作功能码的通信包数来提高modbus通信效率,未针对写操作功能码的通信进行优化,且对于从站的要求较高,通用性较差。


技术实现思路

1、基于上述技术问题,本发明提出一种modbus主站通信方法及装置,解决现有技术中仅通过减少读操作功能码的通信包数来提高modbus通信效率,且对于从站的要求较高,通用性较差的问题。

2、为实现上述目的,本发明提出一种modbus主站通信方法,该方法包括:

3、对modbus主站的通信点进行排序,并获取排序结果;

4、对modbus主站的通信数据包进行分包,并获取通信分包;

5、对通信分包进行包内容预填充;

6、根据排序结果,对预填充后的通信分包进行周期处理。

7、进一步地,对modbus主站的通信点进行排序,并获取排序结果,包括:

8、获取通信点的属性信息,属性信息包括对端设备号、通信方向、在modbus协议中的线圈地址或离散变量地址或输入寄存器地址或保持寄存器地址及其对应的功能码和变量类型;

9、按照通信点的对端设备号从小到大的顺序排列;

10、对于相同对端设备号的通信点,按照功能码的操作类型排序;

11、对于相同操作类型的功能码的通信点,按照地址从小到大的顺序排列。

12、进一步地,对modbus主站的通信数据包进行分包,并获取通信分包,包括:

13、判断前后两个通信点的对端设备号是否相同,如果不同,则进行分包,否则不分包;

14、判断相同对端设备号的前后两个通信点的功能码的操作类型是否相同,如果不同,则进行分包,否则不分包;

15、判断相同操作类型的功能码的前后两个通信点的地址是否连续,如果地址不连续,则进行分包,否则不分包。

16、进一步地,对modbus主站的通信数据包进行分包,并获取通信分包,还包括:

17、当相同操作类型的功能码的前后两个通信点的地址连续,但容量小于通信数据包的大小时,进行分包。

18、进一步地,通信分包的类型包括modbus tcp协议读操作类型功能码、modbus tcp协议第一写操作类型功能码、modbus tcp协议第二写操作类型功能码、modbus rtu协议读操作类型功能码、modbus rtu协议第一写操作类型功能码、modbus rtu协议第二写操作类型功能码,

19、当通信分包为modbus tcp协议读操作类型功能码的类型时,字段包括事务处理标识符、协议标识符、后续字段的长度、单元标识符、功能码、线圈起始地址或离散变量起始地址或输入寄存器起始地址或保持寄存器起始地址、线圈数量或离散变量数量或输入寄存器数量或保持寄存器数量;

20、当通信分包为modbus tcp协议第一写操作类型功能码时,字段包括事务处理标识符、协议标识符、后续字段的长度、单元标识符、功能码、线圈起始地址或保持寄存器起始地址、输出值;

21、当通信分包为modbus tcp协议第二写操作类型功能码时,字段包括事务处理标识符、协议标识符、后续字段的长度、单元标识符、功能码、线圈起始地址或保持寄存器起始地址、线圈数量或保持寄存器数量、字节计数、输出值;

22、当通信分包为modbus rtu协议读操作类型功能码时,字段包括子链路号、功能码、线圈起始地址或离散变量起始地址或输入寄存器起始地址或保持寄存器起始地址、线圈数量或离散变量数量或输入寄存器数量或保持寄存器数量、crc校验值;

23、当通信分包为modbus rtu协议第一写操作类型功能码时,字段包括子链路号、功能码、线圈起始地址或保持寄存器起始地址、输出值与crc校验值;

24、当通信分包为modbus rtu协议第二写操作类型功能码时,字段包括子链路号、功能码、线圈起始地址或保持寄存器起始地址、线圈数量或保持寄存器数量、字节计数、输出值与crc校验值。

25、进一步地,根据排序结果,对预填充后的通信分包进行周期处理,包括:

26、判断预填充后的通信分包的类型;

27、如果预填充后的通信分包的类型为写操作类型,则在填充输出值和crc校验值字段后,发送预填充后的通信分包;

28、如果预填充后的通信分包的类型为读操作类型,则直接发送预填充后的通信分包。

29、为实现上述目的,本发明还提出一种modbus主站通信装置。该装置包括:

30、排序模块,用于对modbus主站的通信点进行排序,并获取排序结果;

31、分包模块,用于对modbus主站的通信数据包进行分包,并获取通信分包;

32、填充模块,用于对通信分包进行包内容预填充;

33、处理模块,用于根据排序结果,对预填充后的通信分包进行周期处理。

34、进一步地,排序模块,用于:

35、获取通信点的属性信息,属性信息包括对端设备号、通信方向、在modbus协议中的线圈地址或离散变量地址或输入寄存器地址或保持寄存器地址及其对应的功能码和变量类型;

36、按照通信点的对端设备号从小到大的顺序排列;

37、对于相同对端设备号的通信点,按照功能码的操作类型排序;

38、对于相同操作类型的功能码的通信点,按照地址从小到大的顺序排列。

39、进一步地,分包模块,用于:

40、判断前后两个通信点的对端设备号是否相同,如果不同,则进行分包,否则不分包;

41、判断相同对端设备号的前后两个通信点的功能码的操作类型是否相同,如果不同,则进行分包,否则不分包;

42、判断相同操作类型的功能码的前后两个通信点的地址是否连续,如果地址不连续,则进行分包,否则不分包。

43、进一步地,分包模块,还用于:

44、当相同操作类型的功能码的前后两个通信点的地址连续,但容量小于通信数据包的大小时,进行分包。

45、进一步地,通信分包的类型包括modbus tcp协议读操作类型功能码、modbus tcp协议第一写操作类型功能码、modbus tcp协议第二写操作类型功能码、modbus rtu协议读操作类型功能码、modbus rtu协议第一写操作类型功能码、modbus rtu协议第二写操作类型功能码,

46、当通信分包为modbus tcp协议读操作类型功能码的类型时,字段包括事务处理标识符、协议标识符、后续字段的长度、单元标识符、功能码、线圈起始地址或离散变量起始地址或输入寄存器起始地址或保持寄存器起始地址、线圈数量或离散变量数量或输入寄存器数量或保持寄存器数量;

47、当通信分包为modbus tcp协议第一写操作类型功能码时,字段包括事务处理标识符、协议标识符、后续字段的长度、单元标识符、功能码、线圈起始地址或保持寄存器起始地址、输出值;

48、当通信分包为modbus tcp协议第二写操作类型功能码时,字段包括事务处理标识符、协议标识符、后续字段的长度、单元标识符、功能码、线圈起始地址或保持寄存器起始地址、线圈数量或保持寄存器数量、字节计数、输出值;

49、当通信分包为modbus rtu协议读操作类型功能码时,字段包括子链路号、功能码、线圈起始地址或离散变量起始地址或输入寄存器起始地址或保持寄存器起始地址、线圈数量或离散变量数量或输入寄存器数量或保持寄存器数量、crc校验值;

50、当通信分包为modbus rtu协议第一写操作类型功能码时,字段包括子链路号、功能码、线圈起始地址或保持寄存器起始地址、输出值与crc校验值;

51、当通信分包为modbus rtu协议第二写操作类型功能码时,字段包括子链路号、功能码、线圈起始地址或保持寄存器起始地址、线圈数量或保持寄存器数量、字节计数、输出值与crc校验值。

52、进一步地,处理模块,用于:

53、判断预填充后的通信分包的类型;

54、如果预填充后的通信分包的类型为写操作类型,则在填充输出值和crc校验值字段后,发送预填充后的通信分包;

55、如果预填充后的通信分包的类型为读操作类型,则直接发送预填充后的通信分包。

56、基于上述技术方案,本发明至少具有如下有益效果:

57、1、本发明依据获取的通信点的属性信息对modbus通信点的排序进行优化,简化modbus通信包分包机制并预先填充modbus通信包内容,最终根据通信点的排序结果对预填充后的通信分包进行周期处理,通过本方法及装置能够在满足modbus通信要求基础上,提高modbus通信的处理效率,从而保证通信的高效性。

58、2、本发明针对modbus通信包分包方法进行优化,将功能码操作类型相同且地址连续的通信点优化为同一通信包,尤其对于写操作类型功能码,通过该分包方法能够减少分包层级,提高分包效率并且减少modbus通信包数量,提高通信效率。

59、3、本发明提出对modbus通信包进行分包后,对modbus通信包内容预先填充,避免在modbus通信过程中边计算边填充内容,从而缩短通信过程处理时间,提高主站发包效率及modbus通信效率。

60、4、本发明提出的一种modbus主站通信方法及装置具备很强的通用性,不需要modbus从站进行任何改动,适用场景广泛,能够满足核电现场不同的应用需求。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1