modbus报文怎么看(modbus报文调试软件)

modbus报文怎么看(modbus报文调试软件)如果说 RS485 是一条连接设备和物联网关的 路 在路上可以行驶不同的 车 如 Modbus DL T645 DL T698 IEC103 CJ T188 等 都可以跑在 RS485 上 之前我们介绍了什么是 RS485 通信 那么本文我们介绍目前工业设备用的比较多的 Modbus 通信协议 希望本文对各位工程师有所帮助 如果想要了解什么是 Modbus 就需要对常见的几个名词进行解释 1 寄存器 简单理解就是用来存放数据的容器 例如电表测量电压后 将电压值存到寄存器中



如果说RS485是一条连接设备和物联网关的“路”,在路上可以行驶不同的“车”。如Modbus、DL/T645、DL/T698、IEC103、CJ/T188等,都可以跑在RS485上。

之前我们介绍了什么是RS485通信?那么本文我们介绍目前工业设备用的比较多的Modbus通信协议,希望本文对各位工程师有所帮助。

如果想要了解什么是Modbus,就需要对常见的几个名词进行解释:

(1)寄存器

简单理解就是用来存放数据的容器。

例如电表测量电压后,将电压值存到寄存器中,我们通过电表的RS485接口,使用Modbus协议读这个寄存器的数据就能知道电压是多少;还有当我们需要控制电表的DO开关量输出时,可以向DO的寄存器中写值,来控制DO分合;由此可知寄存器可以读写。

根据寄存器的读写特性,常用的寄存器类型有线圈寄存器、保持寄存器等。

(2)字节、位(可参考“RS485通信”一文)

一个寄存器占用2个字节;一个字节占用8位二进制数。以0x3333 为例,两个字节,16位二进制数(用电脑计算器的程序员模式)。

可以看到一个寄存器按位解析时,就是16位,位也称为bit(比特),从左到右对应位:bit15 bit14 bit 13 …… ……bit2 bit1 bit0,每个bit可以代表一个开关的位置或者一个告警信息,一个寄存器就可以标识16个开关位置或者告警信息。

(3)功能码

使用Modbus协议读写寄存器时,不同的寄存器要用不同的功能码读/写。常用寄存器如下:

  • 0x01: 读线圈寄存器
  • 0x02: 读离散输入寄存器
  • 0x03: 读保持寄存器
  • 0x04: 读输入寄存器
  • 0x05: 写单个线圈寄存器
  • 0x06: 写单个保持寄存器
  • 0x0F: 写多个线圈寄存器
  • 0x10: 写多个保持寄存器

(4)数据类型

数据在寄存器中读写的时候,是按照特定的数据类型的,比如常用的短浮点型Float,占用2个寄存器共4个字节;比如A相电压,可以表示为0x 435C599A,按照浮点数解析方法,解析出来是220.35V。

常用的数据还有16位/32位整形,分别占用1个/2个寄存器,解析出来是整数,通常需要乘以系数;寄存器数据是0x5613,解析出来时22035,乘以系数0.01就得到电压220.35V。

以CET中电技术电表报文为例解析。

(1)读遥测

【发送】6C(电表地址,108)03(功能码)00 00(起始寄存器地址)00 10(读16个寄存器)4C BB(CRC校验)

网关发送的报文含义:对地址108的电表,用03功能码,从地址0x0000开始,读16个寄存器

【接收】6C(电表地址,108)03(功能码)20(数据报文长度,32个字节)43 5B 35 A4 43 5B 2A 1F 43 5B 62 71 43 5B 40 BC 43 BD D5 E1 43 BD CB E7 43 BD FC AD 43 BD DF 7D(数据)44 0E(CRC校验)

网关接收的报文含义:地址108的电表用03功能码回复数据,数据有32个字节(16个寄存器的值)

由于测点数据格式是浮点数,所以一个点位占用4个字节,数据帧解析如下:

  • 43 5B 35 A4 浮点数解析为219.2095336V——A相电压
  • 43 5B 2A 1F 浮点数解析为219.1645355V——B相电压
  • 43 5B 62 71 浮点数解析为219.3845367V——C相电压
  • 43 5B 40 BC 浮点数解析为219.2528686V——平均相电压
  • 43 BD D5 E1 浮点数解析为379.6709289V——AB线电压
  • 43 BD CB E7 浮点数解析为379.5929870V——BC线电压
  • 43 BD FC AD 浮点数解析为379.9740295V——CA线电压
  • 43 BD DF 7D 浮点数解析为379.7460021V——平均线电压

工具使用示例

(2)读遥信

【注1】DI状态寄存器,bit 0~2分别表示DI1~3的状态,0:断开,1:闭合。

【发送】6C(电表地址,108)03(功能码)00 60(起始寄存器地址)00 01(读1个寄存器) 8C A9 (CRC校验)

网关发送的报文含义:对地址108的电表,用03功能码,从地址0x0060(96)开始,读1个寄存器

【接收】6C(电表地址,108)03(功能码)02(数据报文长度,2个字节)00 01(数据帧)D4 4D (CRC校验)

网关接收的报文含义:地址108的电表用03功能码回复数据,数据有2个字节(1个寄存器的值)

测点数据格式为unit16无符号整形,占用一个字节,0x0001,遥信按位解析为:

0000 0000 0000 0001

从左到右对应位:bit15 bit14 bit 13 …… ……bit2 bit1 bit0

Bit0的值为1——DI1闭合 bit1的值为0——DI2断开 bit2的值为0——DI3断开

(3)读电能

【发送】 6C(电表地址,108)03(功能码)01 F4(起始寄存器地址)00 04(读4个寄存器) 0C BA (CRC校验)。

网关发送的报文含义:对地址108的电表,用03功能码,从地址0x01F4(500)开始,读4个寄存器

【接收】 6C(电表地址,108)03(功能码) 08(数据报文长度,8个字节) 00 23 99 D9 00 00 71 8D (数据帧)A6 97(CRC校验)

网关接收的报文含义:地址108的电表用03功能码回复数据,数据帧有8个字节,数据为int32,长整形,解析为:

  • 00 23 99 D9 整形解析为-2333145*0.01kWh=23331.45kWh
  • 00 00 71 8D 整形解析为- 29069*0.01kWh= 290.69 kWh

计算机解析示例

(4)遥控指令-控制开关

给寄存器9100(0x238C)写入0XFF00,继电器DO1闭合

【发送】6C(电表地址,108)05(功能码)23 8C(要执行的寄存器地址) FF 00(写入寄存器的数值) 4E E8(CRC校验)

【接收】6C 05 23 8C FF 00 4E E8(执行成功后,电表返回原报文)

(5)遥调指令-设置参数

[发送] 6C(电表地址,108) 10(功能码) 17 84(要写参数的寄存器起始地址) 00 01(要写参数的寄存器的数量) 02 (字节数量)00 04 (写入的数据)2E 44 (CRC校验)

网关发送的报文含义:对地址108的电表,使用功能码0x10功能码,从0x1784(6020)寄存器开始,给1个寄存器写数据,数据有2个字节,写入的数据是0x0004;

[接收] 6C(电表地址,108) 10(功能码)17 84(要写参数的寄存器起始地址) 00 01(要写参数的寄存器的数量) 4C E9(CRC校验)

网关接收的报文含义:地址108的电表用0x10功能码回复,从0x1784(6020)寄存器开始,给1个寄存器写数据。

只要读懂了Modbus报文,就基本会使用我司(CET中电技术)iSmartGate智能网关和PMC系列通信网关机的采集驱动制作了。iSmartGate系列智能网关(物联网关)和PMC系列通信网关机全面支持规约可配置平台,接入第三方RS485设备,工程师只需要根据设备通信协议制作采集驱动,无需找厂家付费开发接口程序,极大降低项目费用,节省人力成本。

编程小号
上一篇 2025-03-27 16:21
下一篇 2025-03-21 10:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/67345.html