Modbus寄存器只能读不能写

Modbus registers can be only read and cannot be written

我正在尝试通过 Modbus 协议与空气-水冷却器的 uC2 SE 控制器进行通信。串行 RS485 到 USB 端口 COM 与控制器连接,我能够读取寄存器,但无法使用 write_register 函数更改它们的值。我也试过测试仪。 exe和Modscan64软件,结果一样,只能读不能写。我在这里介绍了一段代码正在 运行 并且可以检查调试响应。提前感谢您的帮助!

更改温度设定值

COOLING_SETPOINT_REG = 41

尝试: 打印(instrument.read_register(COOLING_SETPOINT_REG,1)) 除了 IOError: 打印('Failed to read from instrument')

NEW_TEMPERATURE = 20.1

return_flag = instrument.write_register(COOLING_SETPOINT_REG, NEW_TEMPERATURE,1,functioncode = 6, signed = True) # Registernumber, value, 存储小数位数 output_flag = 'SUCCESS' 如果 return_flag 否则 'FAILURE' 打印('writing single register status ' + output_flag + '\n' )

尝试: 打印(instrument.read_register(COOLING_SETPOINT_REG,1)) 除了 IOError: 打印('Failed to read from instrument')

调试响应:

最小 Modbus 调试模式。将写入仪器(预计返回 7 个字节):'\x01\x03\x00)\x00\x01U' (01 03 00 29 00 01 55 C2) MinimalModbus 调试模式。打开端口 COM8 MinimalModbus 调试模式。清除端口 COM8 的串行缓冲区 MinimalModbus 调试模式。写之前不需要睡觉。自上次读取以来的时间:334030.00 毫秒,最短静默期:4.01 毫秒。 MinimalModbus 调试模式。关闭端口 COM8 MinimalModbus 调试模式。来自仪器的响应:'\x01\x03\x02\x00ȹÒ' (01 03 02 00 C8 B9 D2)(7 个字节),往返时间:62.0 毫秒。读取超时:1000.0 ms.

20.0 MinimalModbus 调试模式。将写入仪器(预计返回 8 个字节):'\x01\x06\x00)\x00É\x98T' (01 06 00 29 00 C9 98 54) MinimalModbus 调试模式。打开端口 COM8 MinimalModbus 调试模式。清除端口 COM8 的串行缓冲区 MinimalModbus 调试模式。写之前不需要睡觉。自上次读取以来的时间:47.00 毫秒,最短静默期:4.01 毫秒。 MinimalModbus 调试模式。关闭端口 COM8 MinimalModbus 调试模式。来自仪器的响应:'\x01\x06\x00)\x00É\x98T' (01 06 00 29 00 C9 98 54)(8 字节),往返时间:47.0 毫秒。读取超时:1000.0 ms.

写入单个寄存器状态失败

最小 Modbus 调试模式。将写入仪器(预计返回 7 个字节):'\x01\x03\x00)\x00\x01U' (01 03 00 29 00 01 55 C2) MinimalModbus 调试模式。打开端口 COM8 MinimalModbus 调试模式。清除端口 COM8 的串行缓冲区 MinimalModbus 调试模式。写之前不需要睡觉。自上次读取以来的时间:46.0​​0 毫秒,最短静默期:4.01 毫秒。 MinimalModbus 调试模式。关闭端口 COM8 MinimalModbus 调试模式。来自仪器的响应:'\x01\x03\x02\x00ȹÒ' (01 03 02 00 C8 B9 D2)(7 个字节),往返时间:47.0 毫秒。读取超时:1000.0 ms.

写入成功

来自 minimalmodbus 的

write_register 具有“None”return 值。

因此检查 return_flag 结果失败。

不允许通过 Modbus 协议在 Carel 控制器 uC Compact 和 uC2 SE Process 中写入参数,因为它们没有针对它进行配置。为此,只能使用 Carel 协议。