ModbusRTU 功能

测试工具:信捷 T-com 串口调试工具代替触摸屏;

测试设备:信捷 PLC ;                                                              

PLC 的内部软元件编号与 Modbus-RTU 地址编号请参考信捷 PLC Modbus 通讯功能章节。

Modbus 功能代码:

功能码(16 进制)功能
01读多个位
03读多个寄存器
05写单个位
06写单个寄存器
0F写多个位
10写多个寄存器

通讯格式:波特率 19200,偶校验(EVEN), 数据位 8 位,  停止位 1 位。

注意: 以下测试地址都是十六进制地址, 实际操作需将十六进制地址转换成十 进制地址输入到触摸屏中。

1.    01 功能码:  读取多个线圈位操作

例如:读取线圈 0X4800~0X4815 的位状态。

0X4800~0X4807:PLC Y0~Y7       0X4808~0X4815:PLC Y10~Y17

发送命令: 01 01 48 00 00 10 2A 66

动作设备号 (1 Byte)功能码 (1 Byte)起始地址  高位(1 Byte)起始地址  低位(1 Byte)总位数高位(1 Byte)总位数低位(1 Byte)CRC(1 Byte) (1 Byte)
发送0101480000102A66

返回命令: 01 01 02 00 00 B9 FC

动作设备号 (1 Byte)功能码 (1 Byte)字节数 (2 Byte)位状态  (On/Off)位状态  (On/Off)CRC(1 Byte) (1 Byte)
返回 ON010102FF03B80D
返回 Off0101020000B9FC

2.    03 功能码:  读取多个字操作(数据显示)

例如:读取 4X00~4X02 的数据。

4X000~4X003 :PLC D0~D2

4X00 = 4, 4X01= 5, 4X001= 1, 4X02= 2

发送命令: 01 03 00 00 00 04 44 09

动作设备号 (1 Byte)功能码 (1 Byte)起始地址  高位(1 Byte)起始地址  低位(1 Byte)总位数高位(1 Byte)总位数低位 (1 Byte)CRC(1 Byte) (1 Byte)
发送0103000000044409

发送命令: 01 03 08 00 04 00 05 00 01 00 02 CC 16

动 作设备号(1 Byte)功能码(1 Byte)字节数 (1Byte)寄 存 器 值高位 4X00寄 存 器 值低位 4X00寄存器值 高位    4X01寄存器值 低位    4X01寄 存 器 值高位 4X02寄 存 器 值低位 4X02
返 回010308000400050001
      寄存器值 高位    4X023寄存器值 低位    4X023CRC 
      0002CC16

3.    05 功能码:  写单个位操作(按钮)

例如:  置 ON 0X4800

0X4800 :PLC Y0

发送命令: 01 05 48 00 FF 00 9B 9A

动 作设备号(1 Byte)功能码(1 Byte)起始地址高 位(1 Byte)起始地址低 位(1 Byte)总位数 高 位 (1 Byte)总位数 低 位 (1 Byte)CRC(1Byte)(1Byte)
发 送01054800FF009B9A

返回命令: 01 05 48 00 FF 00 9B 9A

动作设备号(1 Byte)功能码(1 Byte)起始地址高位(1 Byte)起始地址低位(1 Byte)总位数高位(1 Byte)总位数低位(1 Byte)CRC(1 Byte)(1 Byte)
返回01054800FF009B9A

例如:置 OFF    0X4800

0X4800 :PLC Y0

发送命令: 01 05 48 00 00 00 DA 6A

动作设备号 (1 Byte)功能码 (1 Byte)起始地址  高位(1 Byte)起始地址  低位(1 Byte)总位数高位 (1 Byte)总位数低位 (1 Byte)CRC(1 Byte)(1 Byte)
发送010548000000DA6A

返回命令: 01 05 48 00 00 00 DA 6A

动作设备号 (1 Byte)功能码 (1 Byte)起始地址  高位(1 Byte)起始地址  低位(1 Byte)总位数高位 (1 Byte)总位数低位 (1 Byte)CRC(1 Byte) (1 Byte)
返回010548000000DA6A

4.    06 功能码:  写单个字操作

例如:  地址 4X00 写数据 8

4X00 :PLC D0

发送命令: 01 06 00 00 00 08 88 0C

动作设备号 (1 Byte)功能码(1 Byte)起始地址 高位(1 Byte)起始地址 低位(1 Byte)寄存器值 高位(1 Byte)寄存器值 低位(1 Byte)CRC     (1 Byte) (1 Byte)
发送010600000008880C

返回命令: 01 06 00 00 00 08 88 0C

动作设备号 (1 Byte)功能码(1 Byte)起始地址 高位(1 Byte)起始地址 低位(1 Byte)寄存器值 高位(1 Byte)寄存器值 低位(1 Byte)CRC     (1 Byte) (1 Byte)
返回010600000008880C

5.    10 功能码:  写多个字操作(数据输入写双字 Dword)

例如:  分别给地址 4X00 写数据 10, 4X01 写数据 11, 4X02 写数据 12

4X00~4X02 :PLC D0~D2

发送命令: 01 10 00 00 00 03 06 00 0A 00 0B 00 0C 0F 46

动 作设 备 号(1功 能 码(1起始地址 高位(1 Byte)起始地址 低位(1 Byte)寄存器  总数高位 (1 Byte)寄存器  总数低位 (1 Byte)寄存器  总字节数 (1 Byte)寄存器 值高位寄存器值 低位(1 Byte)
 Byte)Byte)     (1Byte) 
发 送01100000000306000A
    寄存器值 高位(1 Byte)寄存器值 低位(1 Byte)寄存器值 高位(1 Byte)寄存器值 低位(1 Byte)CRC 
    000B000C0F46

返回命令: 01 10 00 00 00 03 80 08

动作设备号(1 Byte)功能码(1 Byte)起始地址高位(1 Byte)起始地址低位(1 Byte)寄存器总数高位(1 Byte)寄存器总数低位(1 Byte)CRC(1 Byte) (1 Byte)
发送0110000000038008

6.    0F 功能码:  写多个位操作

例如:  置 ON 0X4800~0X4803

0X4800~0X4807:PLC Y0~Y7 0X4810 :PLC Y10

发送命令: 01 0F 48 00 00 09 02 FF 01 AD 48

动作设备号 (1 Byte)功能码 (1 Byte)起始地址 高位(1 Byte)起始地址 低位(1 Byte)位总数 高位  (1 Byte)位总数 低位  (1 Byte)寄位总 字节数 (1 Byte)位的值 低位  (1Byte)位的值 高位  (1Byte)
发送数据010F4800000902FF01
        CRC 
        AD48

返回命令: 01 0F 48 00 00 09 82 6D

动作设备号 (1 Byte)功能码 (1 Byte)起始地址高位 (1 Byte)起始地址低位 (1 Byte)位总数高位(1 Byte)位总数低位(1 Byte)CRC 
返回010F48000009826D

相关新闻

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
分享本页
返回顶部