gpt4 book ai didi

python - RS485 Modbus-RTU 设备给出的错误是什么

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:48 25 4
gpt4 key购买 nike

我正在使用minimalmodbusPID controller (Love 16C-3) 进行交流通过 RS485 使用USB-RS485 adapter cable .

但是当尝试读取寄存器时,会显示以下错误。这个错误是什么意思?

raise ValueError('The slave is indicating an error. The response is: {!r}'.format(response))
ValueError: The slave is indicating an error. The response is: '\x01\x83\x02\xc0\xf1'

来自硬件手册

enter image description here

Python代码

instrument = minimalmodbus.Instrument(port, 1, 'rtu')
instrument.serial.baudrate = 9600
instrument.serial.bytesize=8
instrument.serial.parity='E'
instrument.serial.stopbits=1
instrument.read_register(4096,1)

enter image description here

最佳答案

如果您引用 modbus 规范,您会发现通过在函数字节中设置 MSB 来实现函数的异常(exception)...有效地将 0x80 添加到回复中的函数编号中。

在您的示例中,您尝试读取保持寄存器。您的请求使用了函数编号 0x03。您收到的异常是函数 0x03 的 MSB 设置为高,导致回复函数为 0x83。异常代码是函数编号后面的数字,在您的例子中是 0x02。

在Modbus规范中,当寄存器地址不受支持时,使用异常代码2。

顺便说一句,modbus 是一个非常简单的协议(protocol),原始规范本身非常小并且很容易获得。如果您计划在任何深度使用 modbus,我强烈建议您至少手头有它:Modbus Application Protocol v1.1

关于python - RS485 Modbus-RTU 设备给出的错误是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40983955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com