一种可拓展的Modbus协议解析方法及装置的制造方法

文档序号:9931312阅读:361来源:国知局
一种可拓展的Modbus协议解析方法及装置的制造方法
【技术领域】
[0001]本发明涉及通信协议解析技术领域,尤其涉及一种可拓展的Modbus协议解析方法及装置。
【背景技术】
[0002]Modbus是由Modi con (现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议,现已经成为一种通用的工业标准,广泛用于控制器之间的通信互联。当在一 Modbus网络上通信时,每个控制器需要知道该网络中与其通信的所有控制器的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
[0003]当控制器接收到信息帧(如请求帧或回复帧)时,通过协议内容的软件逻辑逐帧解析以获取信息帧中的数据信息。以Modbus协议的04功能码(读输入寄存器)为例,请求方控制器需要发送多次请求才能获取到所有的信息,而且每帧回复帧的数据字节数可能不同,如有的为4个字节、有的为2个字节,在对回复帧进行解析时,一般会通过软件语句(if…else...)判别字节数,并根据协议内容针对不同的字节数将每帧中的数据取出,解析成具体数值。
[0004]然而,在控制器之间通信时,避免不了会出现有的控制器为新版本协议、有的控制器为旧版本协议,而控制器间的通信需在协议内容完全一致的前提下才能通信成功,新旧版本协议无法兼容,即具有不同版本协议的控制器之间无法通信。进一步,对于控制器产品中Modbus协议的升级需涉及软件源码的更改,开发效率低,并且程序代码量大,不利于用户现场的软件升级,也不利于产品的长期维护和发展。

【发明内容】

[0005]本申请通过提供一种可拓展的Modbus协议解析方法及装置,解决了现有技术中控制器之间由于Modbus协议版本不同而无法通信,以及Modbus协议升级涉及软件源码的更改、牵涉程序代码量大且开发效率低的技术问题,实现了控制器之间兼容不同版本的Modbus协议,减少维护产品软件匹配的成本,协议升级无需对原程序代码进行改动,提高了协议升级效率,并且有利于产品的长期维护和发展。
[000?] —方面,本发明提供了一种可拓展的Modbus协议解析方法,用于基于Modbus协议的控制器之间进行通信,所述Modbus协议解析方法包括以下步骤:
[0007]S1、根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;
[0008]S2、通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析。
[0009]可选的,所述信息属性集合包括:请求帧信息的属性、回复帧单元信息的属性和参数设置属性;其中,
[0010]所述请求帧信息的属性包括:请求帧的总数量,以及各请求帧的帧序号、功能码、起始地址和地址量;
[0011]所述回复帧单元信息的属性包括:回复帧单元信息的总数量,以及各回复帧单元信息的名称、起始地址和数据属性;
[0012]所述参数设置属性包括:设置单元的总数量,以及各设置单元的序号、名称和起始地址。
[0013]可选的,所述步骤S2具体包括子步骤:
[0014]S21、向Modbus协议固有的逻辑处理程序中导入所述协议解析配置文件,并通过所述逻辑处理程序对所述协议解析配置文件进行处理,以获取所述信息属性集合中信息属性的关联性;
[0015]S22、创建并启动控制器之间的通信解析线程;
[0016]S23、基于所述信息属性集合中信息属性的关联性发送一请求帧,并接收对应所述请求帧的回复帧;
[0017]S24、通过比较所述请求帧请求获得的信息量和所述回复帧的信息量,判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本,在所述回复帧的协议版本高于或等于所述请求帧的协议版本时,跳转执行子步骤S25,或在所述回复帧的协议版本低于所述请求帧的协议版本时,跳转执行子步骤S26;
[0018]S25、基于所述协议解析配置文件中定义的通信需求解析所述回复帧,解析完成后跳转执行子步骤S27;
[0019]S26、按低版本协议解析所述回复帧,解析完成后跳转执行子步骤S27;
[0020]S27、进入下一请求帧的处理线程中。
[0021 ] 可选的,在所述子步骤S22之后,且在所述子步骤S23之前,所述步骤S2还包括子步骤:
[0022]S28、判断是否存在参数设置事件,当存在参数设置事件时,跳转执行子步骤S29,当不存在参数设置事件时,跳转执行子步骤S23;
[0023]S29、执行参数设置操作,更新所述参数设置属性,并在完成所述参数设置操作后,跳转执行子步骤S28。
[0024]可选的,在所述子步骤S23之后,且在所述子步骤S24之前,所述步骤S2还包括子步骤:
[0025]S210、对所述回复帧进行校验,并判断所述回复帧是否校验成功,在校验成功时,跳转执行子步骤S24,或在校验失败时,跳转执行子步骤S27。
[0026]另一方面,本发明还提供了一种可拓展的Modbus协议解析装置,用于基于Modbus协议的控制器之间进行通信,所述Modbus协议解析装置包括:
[0027]配置文件生成单元,用于根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;
[0028]信息解析处理单元,用于通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析。
[0029]可选的,所述信息属性集合包括:请求帧信息的属性、回复帧单元信息的属性和参数设置属性;其中,
[0030]所述请求帧信息的属性包括:请求帧的总数量,以及各请求帧的帧序号、功能码、起始地址和地址量;
[0031]所述回复帧单元信息的属性包括:回复帧单元信息的总数量,以及各回复帧单元信息的名称、起始地址和数据属性;
[0032]所述参数设置属性包括:设置单元的总数量,以及各设置单元的序号、名称和起始地址。
[0033]可选的,所述信息解析处理单元具体包括:
[0034]信息属性获取模块,用于向Modbus协议固有的逻辑处理程序中导入所述协议解析配置文件,并通过所述逻辑处理程序对所述协议解析配置文件进行处理,以获取所述信息属性集合中信息属性的关联性;
[0035]线程创建启动模块,用于创建并启动控制器之间的通信解析线程;
[0036]帧信息收发模块,用于基于所述信息属性集合中信息属性的关联性发送一请求帧,并接收对应所述请求帧的回复帧;
[0037]协议版本比较判断模块,用于通过比较所述请求帧请求获得的信息量和所述回复帧的信息量,判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本;
[0038]第一回复帧解析模块,用于在所述回复帧的协议版本高于或等于所述请求帧的协议版本时,基于所述协议解析配置文件中定义的通信需求解析所述回复帧;
[0039]第二回复帧解析模块,用于在所述回复帧的协议版本低于所述请求帧的协议版本时,按低版本协议解析所述回复帧;
[0040]下一请求帧处理模块,用于在所述第一回复帧解析模块或所述第二回复帧解析模块完成对所述回复帧的解析后,进入下一请求帧的处理线程中。
[0041 ]可选的,所述信息解析处理单元还包括:
[0042]参数设置事件判断模块,用于在所述线程创建启动模块创建并启动控制器之间的通信解析线程之后,且在所述帧信息收发模块发送一请求帧之前,判断是否存在参数设置事件;
[0043]参数设置执行模块,用于当存在参数设置事件时,执行参数设置操作,更新所述参数设置属性;
[0044]第一执行模块,用于当不存在参数设置事件时,通过所述帧信息收发模块发送一请求帧,并接收对应所述请求帧的回复帧;
[0045]第二执行模块,用于在所述参数设置执行模块完成所述参数设置操作后,通过所述参数设置事件判断模块继续判断是否存在参数设置事件。
[0046]可选的,所述信息解析处理单元还包括:
[0047]回复帧校验模块,用于在所述帧信息收发模块接收所述回复帧之后,且在所述协议版本比较判断模块判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本之前,对所述回复帧进行校验,并判断所述回复帧是否校验成功;<
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1