CN105808549B - 基于映射文件自动组帧及分析帧的客户端方法 - Google Patents
基于映射文件自动组帧及分析帧的客户端方法 Download PDFInfo
- Publication number
- CN105808549B CN105808549B CN201410840884.1A CN201410840884A CN105808549B CN 105808549 B CN105808549 B CN 105808549B CN 201410840884 A CN201410840884 A CN 201410840884A CN 105808549 B CN105808549 B CN 105808549B
- Authority
- CN
- China
- Prior art keywords
- modbus
- client
- data
- write
- server
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
提供一种自动组帧及分析帧的MODBUS客户端方法,包括:在MODBUS客户端和MODBUS服务器端设备之间建立连接;选择MODBUS映射文件,接着解析该映射文件以将MODBUS数据模型加载到MODBUS客户端的数据库中;选择要进行测试的一个或多个数据项,通过访问数据库得到所选择数据项的所有信息;对于读取操作,客户端通过得到的信息自动生成请求帧,客户端接着向服务器端发起读取请求,当客户端接收到服务器返回的响应帧时,根据响应帧中包含的数据的数据类型,自动地将响应帧中包含的数据解码成可读取的值以进行结果分析;对于写入操作,根据所需写入值的数据类型,写入值被编码成字节数组,客户端使用得到的信息和所编码的写入值自动生成请求帧,客户端向服务器端发起写请求,并接收服务器执行写入动作后返回的结果响应。
Description
技术领域
本发明涉及一种MODBUS客户端方法,更具体地涉及基于映射文件自动组帧及分析帧的MODBUS客户端方法。
背景技术
MODBUS是由Modicon公司在1979年发布的全球第一个真正用于工业现场的总线协议,是用于连接到网络的设备之间的客户端/服务器端通信的应用层消息协议。
MODBUS客户端可以用来验证在智能电子设备(Intelligent Electronic Device)中实现了的服务器端MODBUS规约。通过使用不同的映射文件,MODBUS客户端可用于各种类型的IED设备,诸如FUSION、MiCOM、SEPAM和VAMP。
通常,利用手动输入的功能码和数据请求来建立请求帧。另外,因为服务器端将响应帧内的数据进行了编码,并且响应帧内的数据的数据格式多种多样,所以难于直接分析响应帧内的数据。
现有技术中有几种被广泛使用的针对MODBUS协议的第三方测试工具,例如:由Applied Systems Engineering,Inc.(ASE公司)提供的ASE2000通信测试工具、由TriangleMicroWorks Inc.提供的TMW测试工具。这些测试工具都只能分析请求帧和响应帧的格式,无法直接分析帧内的数据。而且对于第三方测试工具而言,需要通过手动输入信息来生成请求PDU帧,诸如起始寄存器地址、寄存器数量、所需写入的数据值等等。在生成请求帧之前,所写入的数据必须被手动编码成字节数组。而在分析结果之前,响应帧中的读取数据必须被手动解码。手动编码和解码数据耗时且易出错。
因此,在客户端和服务器端之间的MODBUS协议的验证效率不高,尤其是在需要遍历检查整个MODBUS数据模型的时候。因此,期望能够提供一种能够自动地生成请求帧和自动地分析响应帧的MODBUS客户端。
发明内容
该发明的目的是为了解决现有技术中的上述问题,提供一种能够自动地生成请求帧和自动地分析响应帧的MODBUS客户端方法。
根据本发明的一方面,提供一种自动组帧及分析帧的MODBUS客户端方法,包括:在MODBUS客户端和MODBUS服务器端设备之间建立连接;选择MODBUS映射文件,接着解析该映射文件以将MODBUS数据模型加载到MODBUS客户端的数据库中;选择要进行测试的一个或多个数据项,通过访问数据库得到所选择数据项的所有信息;对于读取操作,客户端通过得到的信息自动生成请求帧,客户端接着向服务器端发起读取请求,当客户端接收到服务器返回的响应帧时,根据响应帧中包含的数据的数据类型,自动地将响应帧中包含的数据解码成可读取的值以进行结果分析;对于写入操作,根据所需写入值的数据类型,写入值被编码成字节数组,客户端使用得到的信息和所编码的写入值自动生成请求帧,客户端向服务器端发起写请求,并接收服务器执行写入动作后返回的结果响应。
其中MODBUS映射文件是包括整个MODBUS数据模型的XML格式文件。
其中利用XML格式解析MODBUS映射文件,MODBUS映射文件内部的数据模型的所有数据项可被加载到MODBUS客户端的数据库。MODBUS映射文件内部的数据模型的解析规则可随产品类型的不同而不同。
其中所选择数据项的所有信息包括以下中的至少之一:功能码、起始寄存器地址、寄存器数量、数据值、数据类型。
其中所述数据类型包括以下中的之一:布尔型、字符串型、不带符号/带符号的16位整型、不带符号/带符号的32位整型、32位浮点型,64位浮点型、IEC60870-5CP56Time2a类型。
其中请求帧格式随功能码的不同而不同。
其中所述功能码可用于在远程设备中写入连续寄存器的块。
其中所述功能码可用于读取远程设备中保持寄存器的连续块的内容。
因此,本发明提供了一种能够自动地生成请求帧和分析响应帧的MODBUS客户端方法。通过加载映射文件,客户端能够获得每个所选择数据项的信息以生成请求帧,每个所选择数据项的信息包括功能码、起始寄存器地址、寄存器数量、数据值、数据类型等等。其中映射文件是XML格式文件,包含了整个MODBUS数据模型。同时,在写请求时数据值可以根据数据值的数据类型被编码进请求帧;在读请求时响应帧内的数据可以根据数据值的数据类型被解码成可读的值。
根据本发明,所设计的MODBUS客户端不仅能够分析请求帧和响应帧的格式,而且能够分析包含在帧内的数据值。
根据本发明,所设计的MODBUS客户端能够通过使用功能码和请求数据自动地生成请求帧。
需要写入的数据根据数据类型被编码并生成请求帧,响应帧内的读取数据根据数据类型被自动解码以进行结果分析。
本发明的新特征如下:
a)通过在MODBUS客户端中实现本发明的上述方法,使用MODBUS数据模型中所选择的数据的功能码和数据请求(例如起始寄存器地址、寄存器数量、数据值、数据类型等等)自动地生成请求PDU帧。
b)同时,当发送写请求时,数据值被根据数据类型自动编码成请求PDU帧,并且,当接收读取响应时,响应PDU帧内的数据被根据数据类型自动解码成数据值。数据类型可以是例如布尔型、字符串型、16位整型(不带符号/带符号)、32位整型(不带符号/带符号)、32位浮点型,64位浮点型、IEC60870-5CP56Time2a等等。
c)通过使用映射文件(XML格式文件),MODBUS服务器(IED)中的整个MODBUS数据模型可以被加载到MODBUS客户端进行测试。因此,只要提供与服务器端的MODBUS数据模型相同的映射文件,该MODBUS客户端就能够用于与各种类型的MODBUS服务器端进行通信。
附图说明
通过下面结合附图对示例实施例的详细描述,将更好地理解本发明。应当清楚地理解,所描述的示例实施例仅仅是作为说明和示例,而本发明不限于此。本发明的精神和范围由所附权利要求书的具体内容限定。下面描述附图的简要说明,其中:
图1示出了一般的MODBUS帧结构。
图2示出了根据本发明的在MODBUS客户端中实现的客户端处理的组帧、数据编码和解码的序列图。
图3示出了根据本发明的MODBUS映射文件的示例。以及
图4示出了根据本发明的MODBUS客户端界面的示例。
具体实施方式
图1示出了一般的MODBUS帧结构。
MODBUS协议定义了与底层通信层相独立的简单协议数据单元(PDU)。MODBUS协议在特定总线或网络上的映射可以引入关于应用数据单元(ADU)的一些附加字段。
MODBUS应用数据单元(ADU)由发起MODBUS事务的客户端来生成。功能码向服务器指示执行哪种动作。MODBUS应用协议制定了由客户端发起的请求的格式。
在图1中,一般的MODBUS ADU的帧包括附加地址、功能码、数据以及纠错码。其中功能码和数据构成MODBUS的简单协议数据单元(PDU)。
图2示出了根据本发明的在MODBUS客户端中实现的客户端处理的组帧、数据编码和解码的序列图。
本发明涉及生成由客户端发起请求的报文帧,和服务器端返回的响应帧的结果分析。
图2的序列图包括以下步骤:
1)在MODBUS客户端和MODBUS服务器端设备之间建立连接。
2)选择MODBUS映射文件,该MODBUS映射文件包含了在服务器端设备内部的整个MODBUS数据模型。并且,接着解析该映射文件以将MODBUS数据模型加载到MODBUS客户端的数据库中。
3)在读取和写入操作之前,需要选择要进行测试的数据项。通过访问数据库得到所选择数据的所有信息(即,功能码、起始寄存器地址、寄存器数量、数据值、数据类型等等)。
4)对于读取操作,客户端通过得到的信息自动生成请求帧。客户端接着向服务器发起读取请求。当客户端接收到服务器返回的响应帧时,根据响应帧中包含的数据的数据类型,自动地将响应帧中包含的数据解码成可读取的值以进行结果分析。
5)对于写入操作,根据所需写入值的数据类型,写入值被编码成字节数组。客户端使用得到的信息和所编码的写入值自动生成请求帧。接着,客户端向服务器发起写请求。服务器执行写入动作并返回结果响应。
本发明中,MODBUS客户端的数据库中的MODBUS数据模型是基于MODBUS映射文件的解析而产生的,进而MODBUS客户端在从数据库得到的信息的基础上自动生成请求帧并能自动分析响应帧。
关于本发明的MODBUS映射文件,映射文件是包括整个MODBUS数据模型的XML格式文件。该XML格式规则可随产品类型(如MiCOM P20,P30、Sepam S40,S80产品等)的不同而不同。通过利用格式规则解析映射文件,映射文件内部的数据模型的所有数据项可被加载到客户端的数据库。对于每个数据项,能够看到其所有的相关信息,即,功能码“fc”、起始地址(“base”+偏移)、寄存器/离散位的数量(取决于数据类型,例如,对于32位浮点为4字节)、数据类型“mdbType”等。MODBUS映射文件的示例参见图3所示。
数据类型:
Bool:布尔型,真或假
String(字符串):大小取决于其长度
Uint16/Int16:16位无符号/有符号整型,大小为2字节
Uint32/Int32:32位无符号/有符号整型,大小为4字节
Float32:32位浮点型,大小为4字节
Float64:64位浮点型,大小为8字节
Time(时间):用于时间同步,大小为8字节,IEC60870-5CP56Time2a类型
请求帧格式:
请求帧格式随功能码的不同而不同。
下面以功能码03(0x03)和16(0x10)为例进行描述。
功能码:03(0x03)
该功能码用于读取远程设备中保持寄存器的连续块的内容。请求PDU指定起始寄存器地址和寄存器数量。响应消息中的寄存器数据被打包成每个寄存器两个字节,在每个字节内调整二进制内容。
以下表格是功能码为03(0x03)时的请求帧和响应帧格式。
请求帧
功能码 | 1字节 | 0x03 |
起始地址 | 2字节 | 0x0000至0xFFFF |
寄存器数量 | 2字节 | 1至125(0x7D) |
响应帧
功能码 | 1字节 | 0x03 |
字节计数 | 1字节 | 2×N |
寄存器值 | N×2字节 |
N为寄存器数量。
功能码:16(0x10)
该功能码用于在远程设备中写入连续寄存器的块(1至123寄存器)。在请求数据字段中指定所请求的写入值。数据被打包成每个寄存器两个字节。正常响应返回功能码、起始地址和写入的寄存器数量。
以下表格是功能码为16(0x10)时的请求帧和响应帧格式。
请求帧
功能码 | 1字节 | 0x10 |
起始地址 | 2字节 | 0x0000至0xFFFF |
寄存器数量 | 2字节 | 0x0001至0x007B |
字节计数 | 1字节 | 2×N |
寄存器值 | N×2字节 | 值 |
N为寄存器数量
响应帧
功能码 | 1字节 | 0x10 |
起始地址 | 2字节 | 0x0000至0xFFFF |
寄存器数量 | 2字节 | 1至123(0x7B) |
MODBUS客户端的用户界面如图4所示。
在分析映射文件之后,整个MODBUS数据模型被加载在客户端的数据网格中。MODBUS协议的验证变得非常简单。
用户需要做的唯一一件事是选择一个数据项,并点击“读取/写入”按钮。也可一次选择多个数据项,如果选择的是多项数据,所选中的数据项会被批量顺序自动执行。
客户端将编码数据,建立请求帧并解码响应帧。这些动作的处理都是自动地在客户端内部实现。用户就可以在文本框中看到请求/响应报文以及用于结果分析的编码/解码值。
例如:当选中数据网格中的第6个数据项时,从整个MODBUS数据模型的数据库中能够得到其所有信息,如下所示。
起始地址:426,寄存器数量:02,功能码:03,数据类型:float32
当点击读取按钮时,利用得到的信息自动建立请求帧,如附图标记410所指示。下面说明410所指示的请求帧的格式,其中
70:服务器设备地址112,
03:功能码03
01AA:起始寄存器地址426,
00 02:寄存器数量02,
EF 36:CRC检验码。
在服务器返回响应消息后,响应帧和解码值如附图标记420所指示。下面说明附图标记420所指示的响应帧的格式,其中
70:服务器设备地址112,
03:功能码03,
04:字节数04,
42 48 00 00:数据字节数组,
0F 5A:CRC检验码。
根据float32数据类型,从数据字节数组{42,48,00,00}中将数据值解码为50。
根据本发明的MODBUS客户端可用于各种智能电子设备的MODBUS协议验证,改善智能电子设备的通讯协议实现的质量。通过使用本发明的MODBUS客户端,在每次回归测试中都能够遍历整个MODBUS数据模型。对于数据模型,测试覆盖率可达100%。因此能够保证智能电子设备的质量。
通过使用本发明的MODBUS客户端方法,能够节省一批用来进行MODBUS协议验证的第三方测试工具的昂贵的授权使用费。
本发明的MODBUS客户端提供了一个可以用来对各种类型的智能电子设备执行功能性测试的单一的工具。
通过基于映射文件的自动组帧MODBUS客户端方法,能极大地改进MODBUS协议的验证测试效率。因此,IED设备通讯协议开发和测试周期(成本)能大幅降低,并能缩短产品上市时间。
本发明的MODBUS客户端能够自动执行大多数测试操作(组帧、数据编码和解码),因此能够避免人为错误,提高了测试结果可靠性。
本发明的MODBUS客户端能够用于其他未说明的智能电子设备,只要在MODBUS客户端加入不同格式规则的映射文件即可。
虽然已经图示和描述了所考虑的本发明的示例实施例,但是本领域技术人员可以理解,随着技术的进步,可以作出各种变更和修改并可以用等价物替换其元素而不背离本发明的真实范围。
Claims (7)
1.一种自动组帧及分析帧的MODBUS客户端方法,包括:
在MODBUS客户端和MODBUS服务器端设备之间建立连接;
选择MODBUS映射文件,接着解析该映射文件以将MODBUS数据模型加载到MODBUS客户端的数据库中,其中,所述MODBUS映射文件是包括整个MODBUS数据模型的XML格式文件;
选择要进行测试的一个或多个数据项,通过访问数据库得到所选择数据项的所有信息,其中,所选择数据项的所有信息包括以下中的至少之一:功能码、起始寄存器地址、寄存器数量、数据值、数据类型;
对于读取操作,客户端通过得到的信息自动生成请求帧,客户端接着向服务器发起读取请求,当客户端接收到服务器返回的响应帧时,根据响应帧中包含的数据的数据类型,自动地将响应帧中包含的数据解码成可读取的值以进行结果分析;
对于写入操作,根据写入值的数据类型,写入值被编码成字节数组,客户端使用得到的信息和所编码的写入值自动生成请求帧,客户端向服务器发起写请求,并接收服务器执行写入动作后返回的结果响应。
2.如权利要求1所述的MODBUS客户端方法,其中
利用XML格式解析MODBUS映射文件,MODBUS映射文件内部的数据模型的所有数据项被加载到MODBUS客户端的数据库中。
3.如权利要求1所述的MODBUS客户端方法,其中
MODBUS映射文件内部的数据模型的解析规则随产品类型的不同而不同。
4.如权利要求1所述的MODBUS客户端方法,其中
所述数据类型包括以下中的之一:布尔型、字符串型、不带符号/带符号的16位整型、不带符号/带符号的32位整型、32位浮点型,64位浮点型、IEC60870-5 CP56Time2a类型。
5.如权利要求1所述的MODBUS客户端方法,其中
请求帧格式随功能码的不同而不同。
6.如权利要求1所述的MODBUS客户端方法,其中
所述功能码用于在远程设备中写入连续寄存器的块。
7.如权利要求1所述的MODBUS客户端方法,其中
所述功能码用于读取远程设备中保持寄存器的连续块的内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410840884.1A CN105808549B (zh) | 2014-12-30 | 2014-12-30 | 基于映射文件自动组帧及分析帧的客户端方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410840884.1A CN105808549B (zh) | 2014-12-30 | 2014-12-30 | 基于映射文件自动组帧及分析帧的客户端方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808549A CN105808549A (zh) | 2016-07-27 |
CN105808549B true CN105808549B (zh) | 2020-07-07 |
Family
ID=56980289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410840884.1A Active CN105808549B (zh) | 2014-12-30 | 2014-12-30 | 基于映射文件自动组帧及分析帧的客户端方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808549B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111800524B (zh) * | 2020-07-10 | 2022-10-14 | 河北科瑞达仪器科技股份有限公司 | Modbus报文中多路数据原地址的解析方法 |
CN112463662B (zh) * | 2020-12-16 | 2024-04-05 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
CN114070732B (zh) * | 2021-11-17 | 2024-01-05 | 远景智能国际私人投资有限公司 | 基于物联网的数据处理方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051143B2 (en) * | 2001-06-25 | 2006-05-23 | Schneider Automation Inc. | Method, system and program for the transmission of modbus messages between networks |
CN102638451A (zh) * | 2012-03-14 | 2012-08-15 | 江苏斯菲尔电气股份有限公司 | Modbus通讯协议的寄存器列表数据的动态重组方法 |
CN103546467A (zh) * | 2013-10-23 | 2014-01-29 | 上海爱控自动化设备有限公司 | 在TCP/IP网络上传输Modbus RTU协议的方法 |
CN103929439A (zh) * | 2014-05-07 | 2014-07-16 | 昆山华恒焊接股份有限公司 | 一种数据传输方法及modbus服务器 |
-
2014
- 2014-12-30 CN CN201410840884.1A patent/CN105808549B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051143B2 (en) * | 2001-06-25 | 2006-05-23 | Schneider Automation Inc. | Method, system and program for the transmission of modbus messages between networks |
CN102638451A (zh) * | 2012-03-14 | 2012-08-15 | 江苏斯菲尔电气股份有限公司 | Modbus通讯协议的寄存器列表数据的动态重组方法 |
CN103546467A (zh) * | 2013-10-23 | 2014-01-29 | 上海爱控自动化设备有限公司 | 在TCP/IP网络上传输Modbus RTU协议的方法 |
CN103929439A (zh) * | 2014-05-07 | 2014-07-16 | 昆山华恒焊接股份有限公司 | 一种数据传输方法及modbus服务器 |
Non-Patent Citations (1)
Title |
---|
Modbus通信协议自动测试系统的研究与开发;胡能辉;《中国优秀硕士学位论文全文数据库信息科技辑》;20120515(第05期);正文第9、38-40、60-77页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105808549A (zh) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107436844B (zh) | 一种接口用例合集的生成方法及装置 | |
CN110445860B (zh) | 一种报文发送方法、装置、终端设备及存储介质 | |
CN110928802B (zh) | 基于自动生成用例的测试方法、装置、设备及存储介质 | |
CN110647471B (zh) | 接口测试用例生成方法、电子装置及存储介质 | |
CN111694749A (zh) | 接口自动测试方法、装置、计算机设备及可读存储介质 | |
CN107133233B (zh) | 一种配置数据查询的处理方法及装置 | |
CN112685029A (zh) | 一种可视化模板的生成方法、装置、设备及存储介质 | |
CN112380046B (zh) | 计算结果校验方法、系统、装置、设备及存储介质 | |
CN105808549B (zh) | 基于映射文件自动组帧及分析帧的客户端方法 | |
CN111131403A (zh) | 一种物联网设备的消息编解码方法及装置 | |
CN112631924A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN113127108A (zh) | 业务请求的处理方法及装置、存储介质以及电子设备 | |
CN110688111A (zh) | 业务流程的配置方法、装置、服务器和存储介质 | |
CN110381056B (zh) | 基于Netty的私有协议编解码方法及装置 | |
CN111835808B (zh) | 数据存储方法及装置、数据读取方法及装置、存储介质 | |
CN111078529B (zh) | 客户端写入模块测试方法、装置、电子设备 | |
CN109379083A (zh) | 基于教育系统的base64编码转换方法及电子设备 | |
CN115495082B (zh) | Tlv格式数据自动转换方法及相关设备 | |
CN113238940B (zh) | 一种接口测试结果的比对方法、装置、设备和存储介质 | |
CN108415827B (zh) | 应用自动化处理方法、装置、客户端及系统 | |
CN116069324A (zh) | 一种基于Vue的动态表单构建方法及装置 | |
CN114968822A (zh) | 接口测试方法、装置、计算机设备及存储介质 | |
US20120303728A1 (en) | Report generation system with reliable transfer | |
CN113961632A (zh) | 消息数据处理方法、装置及电子设备 | |
CN111510159B (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 |