如何通过 Modbus TCP 设置/获取控制器模拟量输出值?
保持寄存器:
- 功能码:0x03 (读取), 0x06 (写入)
- 寄存器起始地址:0x03 (AO0)
读取 AO0 和 AO1 的示例
发送: 00 01 00 00 00 06 01 03 00 03 00 02
响应: 00 01 00 00 00 07 01 03 04 13 86 0B B6
发送:
- 00 01 00 00:固定值
- 00 06:数据长度
- 01:ID,固定值
- 03:功能码 (读取)
- 00 03:起始寄存器地址 (AO0)
- 00 02:读取 2 个寄存器 (AO0 和 AO1)
响应:
- 13 86:AO0 的值。十六进制
1386
= 十进制4998
。计算:4998 / 1000 ≈ 5V - 0B B6:AO1 的值。十六进制
0BB6
= 十进制2998
。计算:2998 / 1000 ≈ 3V
设置 AO1 为 1V 的示例
发送: 00 01 00 00 00 06 01 06 00 04 03 E8
响应: 00 01 00 00 00 06 01 06 00 04 03 E8
发送:
- 00 01 00 00:固定值
- 00 06:数据长度
- 01:ID,固定值
- 06:功能码 (写入)
- 00 04:AO1 的寄存器地址
- 03 E8:设定值。十六进制
03E8
= 十进制1000
。计算:1000 / 1000 = 1V