[三菱] MODBUS RTU 报文示例

[复制链接]
查看80842 | 回复0 | 2024-4-14 23:41:58 | 显示全部楼层 |阅读模式


通讯故障,分析报文是查找问题一种直接有效的方法。特别如MODBUS这种问答式的通讯协议,本文列出MODBUS RTU各种类型报文示例,以供大家参考。

示例参数:从站设备地址1

1

读取线圈 0x

请求报文:

Tx:01 01 00 00 00 0A BC 0D

01:从站地址

01:功能码

00 00:读取线圈的起始地址0x0000

00 0A:线圈的个数,为10个

BC 0D:CRC校验值

正常响应报文:

Rx:01 01 02 03 01 78 CC

01:从站地址

01:功能码

02:后面线圈数据字节数,线圈为单个比特量,其数据仍按字节进行传输。如果数量不是8的倍数,则用零填充数据字节中剩余的位。

03 01:10个线圈的值,第一个字节03(2#0000 0011)对应线圈0x0000~0x0007的值,0x0000=1、0x0001=1,其他为0,第二个字节01(2#0000 0001)对应线圈0x0008~0x0009的值,0x0008=1

78 CC:CRC校验值

异常响应报文:

Rx:01 81 02 C1 91

01:从站地址

81:异常响应功能码(为请求功能码+0x80)

02:异常码,表示非法的数据地址

C1 91:CRC校验值

2

写入单个线圈 0x

请求报文:

Tx:01 05 00 00 FF 00 8C 3A

01:从站地址

05:功能码

00 00:线圈的地址0x0000

FF 00:置位线圈写入FF,复位线圈写入00

8C 3A:CRC校验值

正常响应报文:

Rx:01 05 00 00 FF 00 8C 3A

从站返回相同报文

异常响应报文:

Rx:01 85 02 C3 51

01:从站地址

85:异常响应功能码

02:异常码,表示非法的数据地址

C3 51:CRC校验值

3

写入多个线圈 0x

请求报文:

Tx:01 0F 00 00 00 0A 02 41 02 54 A9

01:从站地址

0F:功能码

00 00:线圈的起始地址0x0000

00 0A:写入线圈的个数,为10个

02:后面写入的值的字节数

41 02:写入的值,第一个字节41(2#0100 0001)对应线圈0x0000~0x0007的值,0x0000=1、0x0006=1,其他为0,第二个字节02(2#0000 0010)对应线圈0x0008~0x0009的值,0x0009=1

54 A9:CRC校验值

正常响应报文:

Rx:01 0F 00 00 00 0A D5 CC

01:从站地址

0F:功能码

00 00:线圈的起始地址

00 0A:写入线圈的个数,为10个

D5 CC:CRC校验值

异常响应报文:

Rx:01 8F 02 C5 F1

01:从站地址

8F:异常响应功能码

02:异常码,表示非法的数据地址

C5 F1:CRC校验值

4

读输入离散量 1x

请求报文:

Tx:01 02 00 00 00 05 B8 09

01:从站地址

02:功能码

00 00:输入离散量的起始地址1x0000

00 05:读取输入离散量的个数,为5个

B8 09:CRC校验值

正常响应报文:

Rx:01 02 01 05 61 8B

01:从站地址

02:功能码

01:后面输入离散量数据字节数,输入离散量为单个比特量,其数据仍按字节进行传输。如果数量不是8的倍数,则用零填充数据字节中剩余的位。

05:5个输入离散量数据的值,对应1x0000~1x0004的值,0x0000=1、0x0002=1,其他为0

61 8B:CRC校验值

异常响应报文:

Rx:01 82 02 C1 61

01:从站地址

82:异常响应功能码

02:异常码,表示非法的数据地址

C1 61:CRC校验值

5

读输入寄存器 3x

请求报文:

Tx:01 04 00 00 00 02 71 CB

01:从站地址

04:功能码

00 00:输入寄存器的起始地址3x0000

00 02:读取输入寄存器的个数,为2个

71 CB:CRC校验值

正常响应报文:

Rx:01 04 04 00 7B 01 C8  8B 9B

01:从站地址

04:功能码

04:后面输入寄存器数据字节数,一个输入寄存器为2个字节

00 7B 01 C8:2个输入寄存器数据的值,对应3x0000~3x0001的值,0x0000=16#007B、0x0001=16#01C8

8B 9B:CRC校验值

异常响应报文:

Rx:01 84 02 C2 C1

01:从站地址

84:异常响应功能码

02:异常码,表示非法的数据地址

C2 C1:CRC校验值

6

读保持寄存器 4x

请求报文:

Tx:01 03 00 02 00 02 65 CB

01:从站地址

03:功能码

00 02:保持寄存器的起始地址4x0002

00 02:读取保持寄存器的个数,为2个

65 CB:CRC校验值

正常响应报文:

Rx:01 03 04 00 6F 00 DE  4A 76

01:从站地址

03:功能码

04:后面保持寄存器数据字节数,一个保持寄存器为2个字节

00 6F 00 DE:2个保持寄存器数据的值,对应4x0002~4x0003的值,4x0002=16#006F、4x0003=16#00DE

4A 76:CRC校验值

异常响应报文:

Rx:01 83 02 C0 F1

01:从站地址

83:异常响应功能码

02:异常码,表示非法的数据地址

C0 F1:CRC校验值

7

写入单个保持寄存器 4x

请求报文:

Tx:01 06 00 00 FF 00 8C 3A

01:从站地址

06:功能码

00 00:保持寄存器的地址0x0000

00 7B:写入的值,2个字节

C9 E9:CRC校验值

正常响应报文:

Rx:01 06 00 00 FF 00 8C 3A

从站返回相同报文

异常响应报文:

Rx:01 86 02 C3 A1

01:从站地址

86:异常响应功能码

02:异常码,表示非法的数据地址

C3 A1:CRC校验值

8

写入多个保持寄存器 4x

请求报文:

Tx:01 10 03 E7 00 02 04 00 7B 01 C8 D8 EE

01:从站地址

10:功能码

03 E7:多个保持寄存器的起始地址4x0999

00 02:写入保持寄存器的个数,为2个

04:后面写入的值的字节数

00 7B 01 C8:写入的值,第一个保持寄存器4x0999写入16#007B,第二个保持寄存器4x1000写入16#01C8

D8 EE:CRC校验值

正常响应报文:

Rx:01 10 03 E7 00 02 F1 BB

01:从站地址

10:功能码

03 E7:多个保持寄存器的起始地址

00 02:写入保持寄存器的个数,为2个

F1 BB:CRC校验值

异常响应报文:

Rx:01 90 02 CD C1

01:从站地址

90:异常响应功能码

02:异常码,表示非法的数据地址

CD C1:CRC校验值

异常响应中其他常见的异常码:

01:非法的功能码,表示接收到的功能码从机不支持

03:非法的数据值,表示接收到主机发送的数据值超出从机相应地址的数据范围

04:读取数据失败,表示从机执行请求的操作时,产生不可重新获得的差错


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则