CN111800524A - Modbus报文中多路数据原地址的解析方法 - Google Patents
Modbus报文中多路数据原地址的解析方法 Download PDFInfo
- Publication number
- CN111800524A CN111800524A CN202010664551.3A CN202010664551A CN111800524A CN 111800524 A CN111800524 A CN 111800524A CN 202010664551 A CN202010664551 A CN 202010664551A CN 111800524 A CN111800524 A CN 111800524A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- modbus
- analysis
- parameter
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
-
- 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
- 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/22—Parsing or analysis of headers
-
- 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)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种Modbus报文中多路数据原地址的解析方法,该方法为计算得到数据偏移地址,利用原地址解析算法计算出在数据域中参数的数据截取索引地址,将数据截取索引地址、Modbus中数据域部分解析得到的数据进行不同进制的数据转换,完成数据解析。本发明直接使用说明书中或通信规约中的原地址,降低技术使用难度,操作人员不需要过多了解Modbus的报文技术。且数学运算并不影响程序的执行性能,在开发中结构清晰,为上层应用开发中提供人性化设计提供支持。本发明适用于所有采用Modbus协议通信的系统。
Description
技术领域
本发明属于工业物联网领域,涉及一种数据地址的解析方法,具体地说是一种Modbus报文中多路数据原地址解析方法。
背景技术
MODBUS-RTU协议是被广泛应用于电子控制器上的一种串行通信协议,Modbus网络由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。通过此协议和网络,控制器之间、控制器和其它设备之间可以通信,且能够实现不同厂商生产的控制设备可以连成工业网络,进行集中监控。
Modbus协议是一种master/slave架构的协议,Modbus信息中的所有数据地址以零作为基准,各项数据的第一个数据地址的编号为0,编码机制是每8位算作一个单位。Modbus寻址空间由256个不同地址组成,地址0为广播地址,所有从站地址必须识别广播地址,因此在开发物联网应用系统中必然涉及到报文的数据解析问题。
而目前所有采用Modbus协议的控制系统中,普遍采取的数据解析方法为:采集的响应数据中,应用层程序通常事先定义好相对地址和数据长度与此路参数的对应关系,即使用相对地址,提前做好转换和对应关系,人为数一下索引地址然后截取响应报文中的数据。上述的方法对于非专业人员配置参数时,由于非专业人员对于协议的不理解,势必造成一定障碍和技术难度,进而无法完成参数的配置。
发明内容
本发明的目的是,提供一种Modbus报文中多数据原地址解析方法,以实现非专业人士在控制系统中轻松完成参数配置的目的。
为实现上述目的,本发明提供了一种Modbus报文中多路数据原地址的解析方法,利用设备通信规约中的寄存器起始地址、Modbus中的寄存器读开始地址计算得到数据偏移地址,然后将解析得到的数据偏移地址的数据类型与通信规约中的参数地址利用原地址解析算法,计算出在数据域中参数的数据截取索引地址;最后将数据截取索引地址、Modbus中数据域部分解析得到的数据进行不同进制的数据转换,完成数据解析。
作为对本发明的限定,包括依次进行的以下步骤:
一、根据报文内容,将字节数组的地址信息,功能码,数据长度,校验部分截取掉,取出数据部分,完成对Modbus中数据域部分的解析;
二、输入设备通信规约中的寄存器起始地址,参数地址;
三、根据Modbus中的寄存器读开始地址和寄存器起始地址计算出数据的偏移地址;
四、根据偏移地址数据的数据类型,计算出在数据域中参数的数据开始地址和数据结束地址;
五、将步骤一中得到的数据与步骤四中得到的数据进行16进制数据转换,完成数据解析。
作为对步骤三的限定:所述步骤三中偏移地址的计算方法为:偏移地址=寄存器起始地址-寄存器读开始地址+1。
作为对步骤四的限定:所述步骤四中数据开始地址的计算方法为:
数据开始地址=2*(起始参数地址的首位端点-寄存器读开始地址-偏移地址);
数据结束地址=数据开始地址+2*(起始参数地址的末位端点-起始参数地址的最左端地址+1)。
作为对步骤五的限定:所述步骤五中做16进制数据转换,完成数据解析的过程为:得到参数的索引地址后取出数据,并进行16进制数据转换形成编码,然后进制转换得到10进制数据。
由于采用了上述的技术方案,与现有技术相比,所取得的有益效果是:
本发明的数据解析方法不需要人为对索引地址进行数量上的计数,只需按照设备通信规约中的地址输入,本发明的算法根据各个地址数据即可计算出需要的截取索引地址,解决了现有技术中数据解析存在的遇到多参数需要多次计算,不够灵活,且易出错,非专业人员无法读取理解的问题。不仅方便数据转换,解析得到的数据具有直观、高性能、易操作、避免误操作的优点。且多参数同样适用,为上层应用提供功能上支持。
综上所述,本发明直接使用说明书中或通信规约中的原地址,降低技术使用难度,操作人员不需要过多了解Modbus的报文技术。且数学运算并不影响程序的执行性能,在开发中结构清晰,为上层应用开发中提供人性化设计提供支持。
本发明适用于所有采用Modbus协议通信的系统。
附图说明
下面结合附图及具体实施例对本发明作更进一步详细说明。
图1为本发明的原理框图;
图2为本发明实施例的读指令对应关系图;
图3为本发明实施例的响应数据对应关系图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明。应当理解,此处所描述的优选实施例仅用于说明和理解本发明,并不用于限定本发明。
实施例1 一种传感器通信系统中规约中的Modbus报文中多路数据原地址解析方法
本实施例中寄存器定义如表1所示
表1
本实施例中寄存器的测量参数如表2所示
表2
如果Modbus读指令为:01 03 00 01 00 18 14 00 ,则对应关系如图2所示;
而Modbus响应数据为:
01 03 30 07 D0 00 00 02 B9 02 1E 00 00 00 02 00 04 FF FF FF FF FF FF FFFF FF FF FF FF 01 02 01 09 00 00 FF FF FF FF FF FF F9 16 FA F6 00 00 00 50 06EA 83 27 ,对应关系如图3所示。
依据上述的读指令及相应数据,对其进行报文多路数据原地址解析,如图1所示,包括依次进行的以下步骤:
一、根据报文内容,将字节数组的地址信息,功能码,数据长度,校验部分截取掉,取出数据部分,完成对Modbus中数据域部分的解析。
即将上述的相应数据截取后的数据为:
07 D0 00 00 02 B9 02 1E 00 00 00 02 00 04 FF FF FF FF FF FF FF FF FF FFFF FF 01 02 01 09 00 00 FF FF FF FF FF FF F9 16 FA F6 00 00 00 50 06 EA
二、由说明书或设备通信规约中找到寄存器起始地址(StartDx )、参数地址(ItemDx),这两个地址作为输入型参数。
本步骤中于上述表2所显示的传感器通信规约中,取传感器通信规约中的pH下测量的mV值,那么该数值的StartDx = 40001,BeginDxAddr = 1, ItemDx = 40003~40004。
三、根据Modbus中的寄存器读开始地址(BeginDxAddr)和寄存器起始地址(StartDx)计算出数据的偏移地址(offset)。
本步骤中offset的计算方法为:offset = StartDx - BeginDxAddr + 1。
本实施中通信规约中得知StartDx = 40001,BeginDxAddr = 1,因此,本实施例中的offset = 40001 - 1 + 1 = 40001。
四、根据偏移地址数据的数据类型,计算出在数据域中参数的数据截取索引地址,其中,参数的数据截取索引地址包括数据开始地址(FromDataIndex)和数据结束地址(ToDataIndex)。
本步骤中FromDataIndex与ToDataIndex的计算方法分别为:
FromDataIndex=2 *( ItemDx1 - BeginDxAddr - offset),
ToDataIndex = FromDataIndex + 2 * (ItemDx2 - ItemDx1 + 1);
上述公式中ItemDx1为起始参数地址的首位端点,ItemDx2为起始参数地址的末位端点,因此本实施例中pH下主测量值为32位浮点型,对应寄存器的参数地址为40003~40004,因此本实施例中ItemDx = 40003~40004 ,ItemDx1 = 40003,itemDx2 = 40004
将上述数据数据带入公式后,计算得到:
FromDataIndex = 2 * (40003 - 1 - 40001 ) = 2;
ToDataIndex = 2 + 2 *( 40004 - 40003 +1) = 6。
五、将步骤一中得到的数据与步骤四中得到的数据进行16进制数据转换,完成数据解析。
本实施例中做16进制数据转换,完成数据解析。得到参数的索引地址即FromDataIndex =2、ToDataIndex)=6后,可取出数据“00 02 B9 02”进行进制转换,编码方式可以查询说明书(通常3412,1234),进制转换得到10进制数据值6.97。
Claims (6)
1.一种Modbus报文中多路数据原地址的解析方法,其特征在于,利用设备通信规约中的寄存器起始地址、Modbus中的寄存器读开始地址计算得到数据偏移地址,然后将解析得到的数据偏移地址的数据类型与通信规约中的参数地址利用原地址解析算法,计算出在数据域中参数的数据截取索引地址;最后将数据截取索引地址、Modbus中数据域部分解析得到的数据进行不同进制的数据转换,完成数据解析。
2.根据权利要求1所述的Modbus报文中多路数据原地址的解析方法,其特征在于, 包括依次进行的以下步骤:
一、根据报文内容,将字节数组的地址信息,功能码,数据长度,校验部分截取掉,取出数据部分,完成对Modbus中数据域部分的解析;
二、输入设备通信规约中的寄存器起始地址,参数地址;
三、根据Modbus中的寄存器读开始地址和寄存器起始地址计算出数据的偏移地址;
四、根据偏移地址数据的数据类型,计算出在数据域中参数的数据开始地址和数据结束地址;
五、将步骤一中得到的数据与步骤四中得到的数据进行16进制数据转换,完成数据解析。
3.根据权利要求2所述的Modbus报文中多路数据原地址的解析方法,其特征在于,所述步骤三中偏移地址的计算方法为:偏移地址=寄存器起始地址-寄存器读开始地址+1。
4.根据权利要求2或3所述的Modbus报文中多路数据原地址的解析方法,其特征在于,所述步骤四中数据开始地址的计算方法为:
数据开始地址=2*(起始参数地址的首位端点-寄存器读开始地址-偏移地址);
数据结束地址=数据开始地址+2*(起始参数地址的末位端点-起始参数地址的最左端地址+1)。
5.根据权利要求2或3所述的Modbus报文中多路数据原地址的解析方法,其特征在于,所述步骤五中做16进制数据转换,完成数据解析的过程为:得到参数的索引地址后取出数据,并进行16进制数据转换形成编码,然后进制转换得到10进制数据。
6.根据权利要求4中所述的Modbus报文中多路数据原地址的解析方法,其特征在于,所述步骤五中做16进制数据转换,完成数据解析的过程为:得到参数的索引地址后取出数据,并进行16进制数据转换形成编码,然后进制转换得到10进制数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010664551.3A CN111800524B (zh) | 2020-07-10 | 2020-07-10 | Modbus报文中多路数据原地址的解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010664551.3A CN111800524B (zh) | 2020-07-10 | 2020-07-10 | Modbus报文中多路数据原地址的解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111800524A true CN111800524A (zh) | 2020-10-20 |
CN111800524B CN111800524B (zh) | 2022-10-14 |
Family
ID=72806975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010664551.3A Active CN111800524B (zh) | 2020-07-10 | 2020-07-10 | Modbus报文中多路数据原地址的解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111800524B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112462655A (zh) * | 2020-11-19 | 2021-03-09 | 北京大华无线电仪器有限责任公司 | 一种仪器仪表内部通讯方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040054829A1 (en) * | 2001-06-25 | 2004-03-18 | White William A. | Method, system and program for the transmission of modbus messages between networks |
CN103425312A (zh) * | 2012-06-11 | 2013-12-04 | 上海理工大学 | 一种基于arm的触摸屏文件编译和解码方法 |
CN105808549A (zh) * | 2014-12-30 | 2016-07-27 | 施耐德电器工业公司 | 基于映射文件自动组帧及分析帧的客户端方法 |
CN107222458A (zh) * | 2017-04-17 | 2017-09-29 | 珠海格力电器股份有限公司 | 一种兼容Modbus协议的BACnet协议栈的数据处理方法及系统 |
CN108280030A (zh) * | 2018-01-12 | 2018-07-13 | 厦门科灿信息技术有限公司 | 一种寄存器地址的分配方法、系统及相关装置 |
CN108319178A (zh) * | 2017-01-16 | 2018-07-24 | 浙江正泰电器股份有限公司 | 变频器和自动获取产品内部参数信息的方法 |
US20180338348A1 (en) * | 2017-05-22 | 2018-11-22 | Honeywell International Inc. | Legacy modbus communication devices |
CN110417764A (zh) * | 2019-07-19 | 2019-11-05 | 西门子工厂自动化工程有限公司 | 发送数据的方法和装置及接收数据的方法和装置 |
CN111031070A (zh) * | 2019-12-30 | 2020-04-17 | 苏州浪潮智能科技有限公司 | 一种modbus通信的实现方法和装置 |
-
2020
- 2020-07-10 CN CN202010664551.3A patent/CN111800524B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040054829A1 (en) * | 2001-06-25 | 2004-03-18 | White William A. | Method, system and program for the transmission of modbus messages between networks |
CN103425312A (zh) * | 2012-06-11 | 2013-12-04 | 上海理工大学 | 一种基于arm的触摸屏文件编译和解码方法 |
CN105808549A (zh) * | 2014-12-30 | 2016-07-27 | 施耐德电器工业公司 | 基于映射文件自动组帧及分析帧的客户端方法 |
CN108319178A (zh) * | 2017-01-16 | 2018-07-24 | 浙江正泰电器股份有限公司 | 变频器和自动获取产品内部参数信息的方法 |
CN107222458A (zh) * | 2017-04-17 | 2017-09-29 | 珠海格力电器股份有限公司 | 一种兼容Modbus协议的BACnet协议栈的数据处理方法及系统 |
US20180338348A1 (en) * | 2017-05-22 | 2018-11-22 | Honeywell International Inc. | Legacy modbus communication devices |
CN108280030A (zh) * | 2018-01-12 | 2018-07-13 | 厦门科灿信息技术有限公司 | 一种寄存器地址的分配方法、系统及相关装置 |
CN110417764A (zh) * | 2019-07-19 | 2019-11-05 | 西门子工厂自动化工程有限公司 | 发送数据的方法和装置及接收数据的方法和装置 |
CN111031070A (zh) * | 2019-12-30 | 2020-04-17 | 苏州浪潮智能科技有限公司 | 一种modbus通信的实现方法和装置 |
Non-Patent Citations (1)
Title |
---|
李洁: "MODBUS通信协议解析", 《电子制作》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112462655A (zh) * | 2020-11-19 | 2021-03-09 | 北京大华无线电仪器有限责任公司 | 一种仪器仪表内部通讯方法 |
CN112462655B (zh) * | 2020-11-19 | 2023-09-01 | 北京大华无线电仪器有限责任公司 | 一种仪器仪表内部通讯方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111800524B (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111371638B (zh) | 智能设备测试方法、装置、服务器及存储介质 | |
JP6604341B2 (ja) | センサの登録方法、センサの登録システム及び中継装置 | |
CN109150854B (zh) | 基于xml文件的动态可配置通信规约转换系统 | |
CN111800524B (zh) | Modbus报文中多路数据原地址的解析方法 | |
CN111026460A (zh) | 一种组态工具中利用区域模板快速配点的方法及装置 | |
CN111813622B (zh) | 一种设备监控方法及装置 | |
CN114205427A (zh) | 用于协议对接调试的方法、装置和存储介质 | |
CN113381974A (zh) | 一种应用于专用通信的现场总线与Modbus-TCP之间的协议转换方法 | |
CN114500312B (zh) | 一种通信线路校验方法、装置、电子设备及系统 | |
US11973652B2 (en) | Field detection device for a fieldbus network | |
CN109788034B (zh) | 用于网关接入设备的配置方法、电子设备及存储介质 | |
CN114253585B (zh) | 机器人运行程序的远程更新方法、系统、装置及存储介质 | |
CN109327354B (zh) | 一种生成信号转发测试用例的方法、装置及测试系统 | |
CN114322233B (zh) | 空调机组监控方法、装置、设备及空调系统 | |
CN113315769B (zh) | 工控资产信息收集方法及装置 | |
CN114268650B (zh) | 用于建立通信连接的配置方法及系统 | |
US8554966B2 (en) | Method for data exchange | |
JP5996855B2 (ja) | 中央制御装置により変電所遠隔端末を構成するためのシステムおよび方法 | |
CN109212346B (zh) | 一种低压智能配电柜的调试方法 | |
CN113300887A (zh) | 采集数据获取方法、装置、系统及存储介质 | |
US20190271960A1 (en) | Module for Industrial Process Automation and Method for Operation and Configuration | |
CN112800110A (zh) | 电力物联网传感器弱敏感数据异常检测系统 | |
JP2011523803A (ja) | ディジタル形式で伝送される情報を訂正する方法と装置 | |
TW202036014A (zh) | 無線電控系統 | |
CN116737988B (zh) | 一种智能楼宇数据管理方法、管理系统 |
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 |