CN105721451B - 一种可拓展的Modbus协议解析方法及装置 - Google Patents
一种可拓展的Modbus协议解析方法及装置 Download PDFInfo
- Publication number
- CN105721451B CN105721451B CN201610057394.3A CN201610057394A CN105721451B CN 105721451 B CN105721451 B CN 105721451B CN 201610057394 A CN201610057394 A CN 201610057394A CN 105721451 B CN105721451 B CN 105721451B
- Authority
- CN
- China
- Prior art keywords
- frame
- information
- attribute
- protocol analysis
- modbus
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- 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
- H04L12/40006—Architecture of a communication node
- H04L12/40013—Details regarding a bus controller
-
- 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)
- Communication Control (AREA)
Abstract
本发明公开了一种可拓展的Modbus协议解析方法及装置,用于解决现有技术中控制器之间由于Modbus协议版本不同而无法通信,以及Modbus协议升级涉及软件源码的更改、牵涉程序代码量大且开发效率低的技术问题,所述Modbus协议解析方法包括步骤:S1、根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;S2、通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析。实现了控制器之间兼容不同版本的Modbus协议,减少维护产品软件匹配的成本,协议升级无需对原程序代码进行改动,提高了协议升级效率,有利于产品的长期维护和发展。
Description
技术领域
本发明涉及通信协议解析技术领域,尤其涉及一种可拓展的Modbus协议解析方法及装置。
背景技术
Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议,现已经成为一种通用的工业标准,广泛用于控制器之间的通信互联。当在一Modbus网络上通信时,每个控制器需要知道该网络中与其通信的所有控制器的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
当控制器接收到信息帧(如请求帧或回复帧)时,通过协议内容的软件逻辑逐帧解析以获取信息帧中的数据信息。以Modbus协议的04功能码(读输入寄存器)为例,请求方控制器需要发送多次请求才能获取到所有的信息,而且每帧回复帧的数据字节数可能不同,如有的为4个字节、有的为2个字节,在对回复帧进行解析时,一般会通过软件语句(if…else…)判别字节数,并根据协议内容针对不同的字节数将每帧中的数据取出,解析成具体数值。
然而,在控制器之间通信时,避免不了会出现有的控制器为新版本协议、有的控制器为旧版本协议,而控制器间的通信需在协议内容完全一致的前提下才能通信成功,新旧版本协议无法兼容,即具有不同版本协议的控制器之间无法通信。进一步,对于控制器产品中Modbus协议的升级需涉及软件源码的更改,开发效率低,并且程序代码量大,不利于用户现场的软件升级,也不利于产品的长期维护和发展。
发明内容
本申请通过提供一种可拓展的Modbus协议解析方法及装置,解决了现有技术中控制器之间由于Modbus协议版本不同而无法通信,以及Modbus协议升级涉及软件源码的更改、牵涉程序代码量大且开发效率低的技术问题,实现了控制器之间兼容不同版本的Modbus协议,减少维护产品软件匹配的成本,协议升级无需对原程序代码进行改动,提高了协议升级效率,并且有利于产品的长期维护和发展。
一方面,本发明提供了一种可拓展的Modbus协议解析方法,用于基于Modbus协议的控制器之间进行通信,所述Modbus协议解析方法包括以下步骤:
S1、根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;
S2、通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析。
可选的,所述信息属性集合包括:请求帧信息的属性、回复帧单元信息的属性和参数设置属性;其中,
所述请求帧信息的属性包括:请求帧的总数量,以及各请求帧的帧序号、功能码、起始地址和地址量;
所述回复帧单元信息的属性包括:回复帧单元信息的总数量,以及各回复帧单元信息的名称、起始地址和数据属性;
所述参数设置属性包括:设置单元的总数量,以及各设置单元的序号、名称和起始地址。
可选的,所述步骤S2具体包括子步骤:
S21、向Modbus协议固有的逻辑处理程序中导入所述协议解析配置文件,并通过所述逻辑处理程序对所述协议解析配置文件进行处理,以获取所述信息属性集合中信息属性的关联性;
S22、创建并启动控制器之间的通信解析线程;
S23、基于所述信息属性集合中信息属性的关联性发送一请求帧,并接收对应所述请求帧的回复帧;
S24、通过比较所述请求帧请求获得的信息量和所述回复帧的信息量,判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本,在所述回复帧的协议版本高于或等于所述请求帧的协议版本时,跳转执行子步骤S25,或在所述回复帧的协议版本低于所述请求帧的协议版本时,跳转执行子步骤S26;
S25、基于所述协议解析配置文件中定义的通信需求解析所述回复帧,解析完成后跳转执行子步骤S27;
S26、按低版本协议解析所述回复帧,解析完成后跳转执行子步骤S27;
S27、进入下一请求帧的处理线程中。
可选的,在所述子步骤S22之后,且在所述子步骤S23之前,所述步骤S2还包括子步骤:
S28、判断是否存在参数设置事件,当存在参数设置事件时,跳转执行子步骤S29,当不存在参数设置事件时,跳转执行子步骤S23;
S29、执行参数设置操作,更新所述参数设置属性,并在完成所述参数设置操作后,跳转执行子步骤S28。
可选的,在所述子步骤S23之后,且在所述子步骤S24之前,所述步骤S2还包括子步骤:
S210、对所述回复帧进行校验,并判断所述回复帧是否校验成功,在校验成功时,跳转执行子步骤S24,或在校验失败时,跳转执行子步骤S27。
另一方面,本发明还提供了一种可拓展的Modbus协议解析装置,用于基于Modbus协议的控制器之间进行通信,所述Modbus协议解析装置包括:
配置文件生成单元,用于根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;
信息解析处理单元,用于通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析。
可选的,所述信息属性集合包括:请求帧信息的属性、回复帧单元信息的属性和参数设置属性;其中,
所述请求帧信息的属性包括:请求帧的总数量,以及各请求帧的帧序号、功能码、起始地址和地址量;
所述回复帧单元信息的属性包括:回复帧单元信息的总数量,以及各回复帧单元信息的名称、起始地址和数据属性;
所述参数设置属性包括:设置单元的总数量,以及各设置单元的序号、名称和起始地址。
可选的,所述信息解析处理单元具体包括:
信息属性获取模块,用于向Modbus协议固有的逻辑处理程序中导入所述协议解析配置文件,并通过所述逻辑处理程序对所述协议解析配置文件进行处理,以获取所述信息属性集合中信息属性的关联性;
线程创建启动模块,用于创建并启动控制器之间的通信解析线程;
帧信息收发模块,用于基于所述信息属性集合中信息属性的关联性发送一请求帧,并接收对应所述请求帧的回复帧;
协议版本比较判断模块,用于通过比较所述请求帧请求获得的信息量和所述回复帧的信息量,判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本;
第一回复帧解析模块,用于在所述回复帧的协议版本高于或等于所述请求帧的协议版本时,基于所述协议解析配置文件中定义的通信需求解析所述回复帧;
第二回复帧解析模块,用于在所述回复帧的协议版本低于所述请求帧的协议版本时,按低版本协议解析所述回复帧;
下一请求帧处理模块,用于在所述第一回复帧解析模块或所述第二回复帧解析模块完成对所述回复帧的解析后,进入下一请求帧的处理线程中。
可选的,所述信息解析处理单元还包括:
参数设置事件判断模块,用于在所述线程创建启动模块创建并启动控制器之间的通信解析线程之后,且在所述帧信息收发模块发送一请求帧之前,判断是否存在参数设置事件;
参数设置执行模块,用于当存在参数设置事件时,执行参数设置操作,更新所述参数设置属性;
第一执行模块,用于当不存在参数设置事件时,通过所述帧信息收发模块发送一请求帧,并接收对应所述请求帧的回复帧;
第二执行模块,用于在所述参数设置执行模块完成所述参数设置操作后,通过所述参数设置事件判断模块继续判断是否存在参数设置事件。
可选的,所述信息解析处理单元还包括:
回复帧校验模块,用于在所述帧信息收发模块接收所述回复帧之后,且在所述协议版本比较判断模块判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本之前,对所述回复帧进行校验,并判断所述回复帧是否校验成功;
第三执行模块,用于在所述回复帧校验成功后,通过所述协议版本比较判断模块判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本;
第四执行模块,用于在所述回复帧校验失败后,通过所述下一请求帧处理模块,进入下一请求帧的处理线程中。
本发明申请提供的一个或多个技术方案,至少具有如下技术效果或优点:
由于在本发明方案中,首先根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;接着,通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析,进而实现控制器之间的有效通信。也就是说,在本发明方案中,将Modbus协议中的配置方案与逻辑处理分离,配置方案体现在所述协议解析配置文件中,统一管理控制器之间通信的信息属性集合,能够完整的体现协议内容,逻辑处理分析配置方案中的信息关联性,并基于此信息关联性对控制器之间的通信信息进行解析;协议内容由配置方案定义,在产品升级时,无需对逻辑处理代码进行更改,可实现零代码产品升级,且升级效率得到提高,并且逻辑处理中兼容不同版本协议,减少维护产品软件匹配的成本。有效地解决了现有技术中控制器之间由于Modbus协议版本不同而无法通信,以及Modbus协议升级涉及软件源码的更改、牵涉程序代码量大且开发效率低的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的第一种可拓展的Modbus协议解析方法流程图;
图2为本申请实施例提供的第二种可拓展的Modbus协议解析方法流程图;
图3A为本申请实施例提供的第一种可拓展的Modbus协议解析装置的结构框图;
图3B为本申请实施例提供的第二种可拓展的Modbus协议解析装置的结构框图。
具体实施方式
本申请实施例通过提供一种可拓展的Modbus协议解析方法,解决了现有技术中存在的控制器之间由于Modbus协议版本不同而无法通信,以及Modbus协议升级涉及软件源码的更改、牵涉程序代码量大且开发效率低的技术问题,实现了控制器之间兼容不同版本的Modbus协议,减少维护产品软件匹配的成本,协议升级无需对原程序代码进行改动,提高了协议升级效率,并且有利于产品的长期维护和发展。
本申请实施例的技术方案为解决上述技术问题,总体思路如下:
本申请实施例提供了一种可拓展的Modbus协议解析方法,用于基于Modbus协议的控制器之间进行通信,所述Modbus协议解析方法包括以下步骤:S1、根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;S2、通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析。
可见,在本申请实施例中,通过将Modbus协议中的配置方案与逻辑处理分离,配置方案体现在所述协议解析配置文件中,统一管理控制器之间通信的信息属性集合,能够完整的体现协议内容,逻辑处理分析配置方案中的信息关联性,并基于此信息关联性对控制器之间的通信信息进行解析;协议内容由配置方案定义,在产品升级时,无需对逻辑处理代码进行更改,可实现零代码产品升级,且升级效率得到提高,并且逻辑处理中兼容不同版本协议,减少维护产品软件匹配的成本。有效地解决了现有技术中控制器之间由于Modbus协议版本不同而无法通信,以及Modbus协议升级涉及软件源码的更改、牵涉程序代码量大且开发效率低的技术问题。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
实施例一
请参考图1,本申请实施例提供了一种可拓展的Modbus协议解析方法,用于基于Modbus协议的控制器之间进行通信,所述Modbus协议解析方法包括以下步骤:
S1、根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;
S2、通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析。
可理解为:在本发明方案中,将Modbus协议中的配置方案与逻辑处理分离,配置方案体现在所述协议解析配置文件中,统一管理控制器之间通信的信息属性集合,能够完整的体现协议内容,逻辑处理分析配置方案中信息属性集合的信息关联,并基于此信息关联对控制器之间的通信信息进行解析。
具体的,所述信息属性集合包括:请求帧信息的属性、回复帧单元信息的属性和参数设置属性;其中,所述请求帧信息的属性包括:请求帧的总数量,以及各请求帧的帧序号、功能码、起始地址、地址量和读取总量等;所述回复帧单元信息的属性包括:回复帧单元信息的总数量,以及各回复帧单元信息的名称、起始地址和数据属性等;所述参数设置属性包括:设置单元的总数量,以及各设置单元的序号、名称、起始地址、范围和默认值等。
进一步,可理解为:所述配置方案是非代码的,如文本、数据库等,体现的是信息属性集合中各信息属性的差异性;所述逻辑处理则是通过代码实现的,是通信过程中对各种不同属性信息的相同操作部分。以电力电子行业中基于modbus协议的控制通信为例,modbus协议可传输的帧最多支持255个字节的数据量,因此实际系统中需要分多帧才能获取到所有信息;设定第一帧信息的寄存器地址从0x00~0x63,存储有电网侧的信息,包括电网侧电压、电流等;设定第二帧信息的寄存器地址从0x64~0xC7,存储有负载侧电压、电流等;其中,第一、第二帧信息的电压、电流等寄存器的起始位置、需要的寄存器数量是不完全一样的,对应在“配置方案”中进行定义;将从对应寄存器地址中提取的信息从字节转为浮点数(即具体数值)的过程是一致的,对应在“逻辑处理”中完成处理。
在具体实施过程中,所述配置方案主要包括信息获取和参数设置两部分。其中,(1)信息获取部分由可定制的数据获取帧和帧内信息的属性组成,即由所述请求帧信息的属性和所述回复帧单元信息的属性组成,用户可以方便的自定义请求帧和回复帧的内容解析。例如,发送04功能码的请求帧,请求读取地址为0x00~0xC8的寄存器单元中的数据,需分两次发送请求帧,定义请求帧的总数量为2,第一帧请求帧的序号为0、起始地址为0x00、终止地址为0x63、读取寄存器数量为100,第二帧请求帧的序号为1、起始地址为0x64、终止地址为0xC8、读取寄存器数量为100;对应的,两帧请求帧的回复帧中,每帧回复帧含有50个信息(即50条单元信息),每条单元信息包含名称、信息在回复帧中的起始位置、共有字节数等信息内容。(2)参数设置部分由所述参数设置属性(包括设置单元的总数量,以及各设置单元的序号、名称、起始地址、范围和默认值等)组成;根据不同的通信需求,参数设置种类有很多,比如电力电子行业控制中所涉及的工作模式、目标电压值等,用户可同时进行多个参数设置,并分别进行标号、定义名称和起始地址等;又如,要求在协议的04功能码中增加一个电感电流数据,对应的需要在配置方案中将请求帧的长度更改,加一行电感电流的描述。其中,每个设置单元包括一个完整的设置单元属性(即包括各自的序号、名称、起始地址、范围和默认值等),参数的增删改只需针对配置方案中的设置单元操作,无需更改协议的固定代码。
进一步,信息获取是不间断、按请求帧顺序循环与其他控制器通信来获取实时信息,而参数设置是在用户触发设置时进行,优先级比信息获取高。
在具体实施过程中,请参考图2,所述步骤S2具体包括子步骤:
S21、向Modbus协议固有的逻辑处理程序中导入所述协议解析配置文件,并通过所述逻辑处理程序对所述协议解析配置文件进行处理,以获取所述信息属性集合中信息属性的关联性;具体的,所述协议解析配置文件放置在监控系统的安装目录下,Modbus协议程序在启动时打开并读取该协议解析配置文件。
S22、创建并启动控制器之间的通信解析线程;
S23、基于所述信息属性集合中信息属性的关联性发送一请求帧,并接收对应所述请求帧的回复帧;
S24、通过比较所述请求帧请求获得的信息量和所述回复帧的信息量,判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本,在所述回复帧的协议版本高于或等于所述请求帧的协议版本时,跳转执行子步骤S25,或在所述回复帧的协议版本低于所述请求帧的协议版本时,跳转执行子步骤S26;
S25、基于所述协议解析配置文件中定义的通信需求解析所述回复帧,解析完成后跳转执行子步骤S27;
S26、按低版本协议解析所述回复帧,解析完成后跳转执行子步骤S27;
S27、进入下一请求帧的处理线程中。
对于上述子步骤S24~S26,可理解为:通过比较所述请求帧请求获得的信息量(N1)和所述回复帧的信息量(N2),若N1小于或等于N2,则确定所述回复帧的协议版本高于或等于所述请求帧的协议版本,并基于所述协议解析配置文件中定义的通信需求解析所述回复帧,具体的,在所述协议解析配置文件中定义有从所述回复帧的N2个信息量中提取所需的N1个信息量的起始地址,Modbus协议固有的逻辑处理程序可从该起始地址提取所需的信息数据;例如,所述请求帧请求获得寄存器地址从0x00~0x63的100位电网侧电压、电流等的信息,而所述回复帧中包含有0x00~0xC7的200位信息,其中,寄存器地址从0x00~0x63的100位为电网侧电压、电流等的信息,寄存器地址从0x64~0xC7的100位为负载侧电压、电流等的信息,在此种情况下,回复帧的协议版本高于请求帧的协议版本,Modbus协议固有的逻辑处理程序则基于所述协议解析配置文件中定义的通信需求,只从回复帧中提取寄存器地址从0x00~0x63的100位电网侧电压、电流等的信息。对应的,由于通常高协议版本均兼容低协议版本,若N1大于N2,则确定所述回复帧的协议版本低于所述请求帧的协议版本,请求方则按低版本协议解析所述回复帧。
进一步,仍请参考图2,在所述子步骤S22之后,且在所述子步骤S23之前,所述步骤S2还包括子步骤:
S28、判断是否存在参数设置事件,当存在参数设置事件时,跳转执行子步骤S29,当不存在参数设置事件时,跳转执行子步骤S23;
S29、执行参数设置操作,更新所述参数设置属性,并在完成所述参数设置操作后,跳转执行子步骤S28。
其中,参数设置事件是用户触发发生的,当发生参数设置事件时,执行参数设置操作,其优先级比信息获取(即不间断、按请求帧顺序循环与其他控制器通信来获取实时信息)高。仍以电力电子行业中基于modbus协议的控制通信为例,表示系统当前运行状态的参数(即设置单元,如A相电网电压、B相电网电压等)需要在UI上展示给用户,可以对这些参数进行增删改,以满足用户不同的监控需要,在对这些参数进行增删改时,只需针对配置方案中的设置单元进行操作(即修改所述协议解析配置文件中的参数设置属性),无需更改协议的固定代码。
在具体实施过程中,为了确保回复帧的可靠性,进而确保基于回复帧提取的数据信息的可靠性,仍请参考图2,在所述子步骤S23之后,且在所述子步骤S24之前,所述步骤S2还包括子步骤:
S210、对所述回复帧进行校验,并判断所述回复帧是否校验成功,在校验成功时,跳转执行子步骤S24,或在校验失败时,跳转执行子步骤S27。
总而言之,在本发明方案中,通过将Modbus协议中的配置方案与逻辑处理分离,配置方案体现在所述协议解析配置文件中,统一管理控制器之间通信的信息属性集合,能够完整的体现协议内容,逻辑处理分析配置方案中的信息关联性,并基于此信息关联性对控制器之间的通信信息进行解析;协议内容由配置方案定义,在产品升级时,无需对逻辑处理代码进行更改,可实现零代码产品升级,且升级效率得到提高,并且逻辑处理中兼容不同版本协议,减少维护产品软件匹配的成本。有效地解决了现有技术中控制器之间由于Modbus协议版本不同而无法通信,以及Modbus协议升级涉及软件源码的更改、牵涉程序代码量大且开发效率低的技术问题。
实施例二
基于同一发明构思,请参考图3A,本申请实施例还提供了一种可拓展的Modbus协议解析装置,用于基于Modbus协议的控制器之间进行通信,所述Modbus协议解析装置包括:
配置文件生成单元31,用于根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;
信息解析处理单元32,用于通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析。
具体的,所述信息属性集合包括:请求帧信息的属性、回复帧单元信息的属性和参数设置属性;其中,
所述请求帧信息的属性包括:请求帧的总数量,以及各请求帧的帧序号、功能码、起始地址和地址量;
所述回复帧单元信息的属性包括:回复帧单元信息的总数量,以及各回复帧单元信息的名称、起始地址和数据属性;
所述参数设置属性包括:设置单元的总数量,以及各设置单元的序号、名称和起始地址。
在具体实施过程中,请参考图3B,所述信息解析处理单元32具体包括:
信息属性获取模块321,用于向Modbus协议固有的逻辑处理程序中导入所述协议解析配置文件,并通过所述逻辑处理程序对所述协议解析配置文件进行处理,以获取所述信息属性集合中信息属性的关联性;
线程创建启动模块322,用于创建并启动控制器之间的通信解析线程;
帧信息收发模块323,用于基于所述信息属性集合中信息属性的关联性发送一请求帧,并接收对应所述请求帧的回复帧;
协议版本比较判断模块324,用于通过比较所述请求帧请求获得的信息量和所述回复帧的信息量,判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本;
第一回复帧解析模块325,用于在所述回复帧的协议版本高于或等于所述请求帧的协议版本时,基于所述协议解析配置文件中定义的通信需求解析所述回复帧;
第二回复帧解析模块326,用于在所述回复帧的协议版本低于所述请求帧的协议版本时,按低版本协议解析所述回复帧;
下一请求帧处理模块327,用于在所述第一回复帧解析模块325或所述第二回复帧解析模块326完成对所述回复帧的解析后,进入下一请求帧的处理线程中。
进一步,仍请参考图3B,所述信息解析处理单元32还包括:
参数设置事件判断模块328,用于在所述线程创建启动模块322创建并启动控制器之间的通信解析线程之后,且在所述帧信息收发模块323发送一请求帧之前,判断是否存在参数设置事件;
参数设置执行模块329,用于当存在参数设置事件时,执行参数设置操作,更新所述参数设置属性;
第一执行模块3210,用于当不存在参数设置事件时,通过所述帧信息收发模块323发送一请求帧,并接收对应所述请求帧的回复帧;
第二执行模块3211,用于在所述参数设置执行模块329完成所述参数设置操作后,通过所述参数设置事件判断模块328继续判断是否存在参数设置事件。
在具体实施过程中,仍请参考图3B,所述信息解析处理单元32还包括:
回复帧校验模块3212,用于在所述帧信息收发模块323接收所述回复帧之后,且在所述协议版本比较判断模块324判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本之前,对所述回复帧进行校验,并判断所述回复帧是否校验成功;
第三执行模块3213,用于在所述回复帧校验成功后,通过所述协议版本比较判断模块324判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本;
第四执行模块3214,用于在所述回复帧校验失败后,通过所述下一请求帧处理模块327,进入下一请求帧的处理线程中。
根据上面的描述,上述可拓展的Modbus协议解析装置用于实现上述可拓展的Modbus协议解析方法,所以,该装置的工作过程与上述方法的一个或多个实施例一致,在此就不再一一赘述了。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种可拓展的Modbus协议解析方法,用于基于Modbus协议的控制器之间进行通信,其特征在于,所述Modbus协议解析方法包括以下步骤:
S1、根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;
S2、通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析;
所述步骤S2具体包括子步骤:
S21、向Modbus协议固有的逻辑处理程序中导入所述协议解析配置文件,并通过所述逻辑处理程序对所述协议解析配置文件进行处理,以获取所述信息属性集合中信息属性的关联性;
S22、创建并启动控制器之间的通信解析线程;
S23、基于所述信息属性集合中一信息属性的关联性发送一请求帧,并接收对应所述请求帧的回复帧;
比较所述请求帧请求获得的信息量和所述回复帧的信息量,并根据比较结果解析所述回复帧;
S27、进入下一请求帧的处理线程中。
2.如权利要求1所述的可拓展的Modbus协议解析方法,其特征在于,所述信息属性集合包括:请求帧信息的属性、回复帧单元信息的属性和参数设置属性;其中,
所述请求帧信息的属性包括:请求帧的总数量,以及各请求帧的帧序号、功能码、起始地址和地址量;
所述回复帧单元信息的属性包括:回复帧单元信息的总数量,以及各回复帧单元信息的名称、起始地址和数据属性;
所述参数设置属性包括:设置单元的总数量,以及各设置单元的序号、名称和起始地址。
3.如权利要求2所述的可拓展的Modbus协议解析方法,其特征在于,所述比较所述请求帧请求获得的信息量和所述回复帧的信息量,并根据比较结果解析所述回复帧,具体包括子步骤:
S24、通过比较所述请求帧请求获得的信息量和所述回复帧的信息量,判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本,在所述回复帧的协议版本高于或等于所述请求帧的协议版本时,跳转执行子步骤S25,或在所述回复帧的协议版本低于所述请求帧的协议版本时,跳转执行子步骤S26;
S25、基于所述协议解析配置文件中定义的通信需求解析所述回复帧,解析完成后跳转执行子步骤S27;
S26、按低版本协议解析所述回复帧,解析完成后跳转执行子步骤S27。
4.如权利要求3所述的可拓展的Modbus协议解析方法,其特征在于,在所述子步骤S22之后,且在所述子步骤S23之前,所述步骤S2还包括子步骤:
S28、判断是否存在参数设置事件,当存在参数设置事件时,跳转执行子步骤S29,当不存在参数设置事件时,跳转执行子步骤S23;
S29、执行参数设置操作,更新所述参数设置属性,并在完成所述参数设置操作后,跳转执行子步骤S28。
5.如权利要求3所述的可拓展的Modbus协议解析方法,其特征在于,在所述子步骤S23之后,且在所述子步骤S24之前,所述步骤S2还包括子步骤:
S210、对所述回复帧进行校验,并判断所述回复帧是否校验成功,在校验成功时,跳转执行子步骤S24,或在校验失败时,跳转执行子步骤S27。
6.一种可拓展的Modbus协议解析装置,用于基于Modbus协议的控制器之间进行通信,其特征在于,所述Modbus协议解析装置包括:
配置文件生成单元,用于根据控制器之间的通信需求,生成协议解析配置文件;其中,所述协议解析配置文件用于统一管理控制器之间通信的信息属性集合;
信息解析处理单元,用于通过Modbus协议固有的逻辑处理程序对所述协议解析配置文件进行处理,以基于所述信息属性集合对控制器之间的通信信息进行解析;
所述信息解析处理单元具体包括:
信息属性获取模块,用于向Modbus协议固有的逻辑处理程序中导入所述协议解析配置文件,并通过所述逻辑处理程序对所述协议解析配置文件进行处理,以获取所述信息属性集合中信息属性的关联性;
线程创建启动模块,用于创建并启动控制器之间的通信解析线程;
帧信息收发模块,用于基于所述信息属性集合中信息属性的关联性发送一请求帧,并接收对应所述请求帧的回复帧;
解析模块,用于比较所述请求帧请求获得的信息量和所述回复帧的信息量,并根据比较结果解析所述回复帧;
下一请求帧处理模块,用于在所述解析模块完成对所述回复帧的解析后,进入下一请求帧的处理线程中。
7.如权利要求6所述的可拓展的Modbus协议解析装置,其特征在于,所述信息属性集合包括:请求帧信息的属性、回复帧单元信息的属性和参数设置属性;其中,
所述请求帧信息的属性包括:请求帧的总数量,以及各请求帧的帧序号、功能码、起始地址和地址量;
所述回复帧单元信息的属性包括:回复帧单元信息的总数量,以及各回复帧单元信息的名称、起始地址和数据属性;
所述参数设置属性包括:设置单元的总数量,以及各设置单元的序号、名称和起始地址。
8.如权利要求7所述的可拓展的Modbus协议解析装置,其特征在于,所述解析模块具体包括:
协议版本比较判断模块,用于通过比较所述请求帧请求获得的信息量和所述回复帧的信息量,判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本;
第一回复帧解析模块,用于在所述回复帧的协议版本高于或等于所述请求帧的协议版本时,基于所述协议解析配置文件中定义的通信需求解析所述回复帧;
第二回复帧解析模块,用于在所述回复帧的协议版本低于所述请求帧的协议版本时,按低版本协议解析所述回复帧。
9.如权利要求8所述的可拓展的Modbus协议解析装置,其特征在于,所述信息解析处理单元还包括:
参数设置事件判断模块,用于在所述线程创建启动模块创建并启动控制器之间的通信解析线程之后,且在所述帧信息收发模块发送一请求帧之前,判断是否存在参数设置事件;
参数设置执行模块,用于当存在参数设置事件时,执行参数设置操作,更新所述参数设置属性;
第一执行模块,用于当不存在参数设置事件时,通过所述帧信息收发模块发送一请求帧,并接收对应所述请求帧的回复帧;
第二执行模块,用于在所述参数设置执行模块完成所述参数设置操作后,通过所述参数设置事件判断模块继续判断是否存在参数设置事件。
10.如权利要求8所述的可拓展的Modbus协议解析装置,其特征在于,所述信息解析处理单元还包括:
回复帧校验模块,用于在所述帧信息收发模块接收所述回复帧之后,且在所述协议版本比较判断模块判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本之前,对所述回复帧进行校验,并判断所述回复帧是否校验成功;
第三执行模块,用于在所述回复帧校验成功后,通过所述协议版本比较判断模块判断所述回复帧的协议版本是否高于或等于所述请求帧的协议版本;
第四执行模块,用于在所述回复帧校验失败后,通过所述下一请求帧处理模块,进入下一请求帧的处理线程中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610057394.3A CN105721451B (zh) | 2016-01-27 | 2016-01-27 | 一种可拓展的Modbus协议解析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610057394.3A CN105721451B (zh) | 2016-01-27 | 2016-01-27 | 一种可拓展的Modbus协议解析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105721451A CN105721451A (zh) | 2016-06-29 |
CN105721451B true CN105721451B (zh) | 2019-03-05 |
Family
ID=56155142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610057394.3A Active CN105721451B (zh) | 2016-01-27 | 2016-01-27 | 一种可拓展的Modbus协议解析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105721451B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113034873A (zh) * | 2019-12-25 | 2021-06-25 | 西安诺瓦星云科技股份有限公司 | 传感器通信方法、装置和系统 |
CN112350942A (zh) * | 2020-09-29 | 2021-02-09 | 广东艾科技术股份有限公司 | 无线数据传输方法、装置、系统和采集器、中继器、网关 |
CN112666389B (zh) * | 2021-01-07 | 2022-07-29 | 南方电网数字电网研究院有限公司 | 双芯智能电表双芯交互方法、装置、双芯智能电表和介质 |
CN112995133B (zh) * | 2021-02-02 | 2023-04-18 | 深圳市科陆电子科技股份有限公司 | 基于modbus协议的解析方法、装置及系统 |
CN117714564B (zh) * | 2024-02-05 | 2024-04-23 | 成都汉度科技有限公司 | 一种基于java语言的通用DLT645协议解析方法及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101996155A (zh) * | 2009-08-10 | 2011-03-30 | 北京多思科技发展有限公司 | 支持多种指令体系的处理器 |
CN102413141A (zh) * | 2011-11-30 | 2012-04-11 | 华为技术有限公司 | 网络消息解析方法及通信设备 |
CN102546558A (zh) * | 2010-12-29 | 2012-07-04 | 中兴通讯股份有限公司 | 一种光网络单元中协议的切换方法及光网络单元 |
CN103139025A (zh) * | 2011-12-05 | 2013-06-05 | 艾默生网络能源系统北美公司 | Modbus设备的接入方法及系统 |
CN104572221A (zh) * | 2015-01-30 | 2015-04-29 | 重庆邮电大学 | 一种车载ecu在线升级系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7441224B2 (en) * | 2006-03-09 | 2008-10-21 | Motorola, Inc. | Streaming kernel selection for reconfigurable processor |
-
2016
- 2016-01-27 CN CN201610057394.3A patent/CN105721451B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101996155A (zh) * | 2009-08-10 | 2011-03-30 | 北京多思科技发展有限公司 | 支持多种指令体系的处理器 |
CN102546558A (zh) * | 2010-12-29 | 2012-07-04 | 中兴通讯股份有限公司 | 一种光网络单元中协议的切换方法及光网络单元 |
CN102413141A (zh) * | 2011-11-30 | 2012-04-11 | 华为技术有限公司 | 网络消息解析方法及通信设备 |
CN103139025A (zh) * | 2011-12-05 | 2013-06-05 | 艾默生网络能源系统北美公司 | Modbus设备的接入方法及系统 |
CN104572221A (zh) * | 2015-01-30 | 2015-04-29 | 重庆邮电大学 | 一种车载ecu在线升级系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105721451A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105721451B (zh) | 一种可拓展的Modbus协议解析方法及装置 | |
CN106250199B (zh) | 一种多语言云编译的动态微服务调用方法及装置 | |
CN110147225A (zh) | 一种代码生成方法、装置及计算机设备、存储介质 | |
CN110276074B (zh) | 自然语言处理的分布式训练方法、装置、设备及存储介质 | |
CN112000355B (zh) | 用于固件升级的方法及装置、家电设备 | |
CN101894059B (zh) | 一种运行状态的检测方法及系统 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN105512097A (zh) | 一种文件解析方法 | |
CN105573774B (zh) | 应用程序参数管理及配置方法 | |
CN109446155B (zh) | 智能站描述文件导入导出配置方法及系统 | |
CN108322437A (zh) | 用于多规约设备之间的自适应通讯方法和装置 | |
CN106897153A (zh) | 调用应用编程接口的方法和系统 | |
CN107423073A (zh) | 系统的定制方法和系统 | |
CN105488293B (zh) | 一种配置scd中虚端子连线的方法及系统 | |
CN105511273B (zh) | 一种客户端运行管理方法及客户端 | |
CN109274777A (zh) | 一种导出配置文件的方法、装置、设备及可读存储介质 | |
CN109683923A (zh) | 一种配电自动化系统配置文件版本的校核方法及系统 | |
CN103945287B (zh) | 一种接口机处理消息的方法和接口机 | |
CN105933396B (zh) | 一种协同各渠道系统接口实现长流程的方法及系统 | |
CN106681852B (zh) | 一种浏览器兼容性的调整方法及装置 | |
CN113254045A (zh) | 软件初始化方法、系统及计算机可读存储介质 | |
CN101860532A (zh) | 多进程配置文件的保存及加载方法 | |
CN106776689A (zh) | 一种主机信息查询方法、装置和主机 | |
CN108259199A (zh) | 一种自动化命令生成方法及装置 | |
CN110806973A (zh) | 一种接口报文的自动生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |