Python 3.x 读写Modbus RTU

Python 3.x 读写Modbus RTU,python-3.x,iot,modbus,Python 3.x,Iot,Modbus,我正在使用minimalmodbus进行阅读和写作。我有USB到Rs485的连接 我正试图用python将这个“02 05 0000 ff11”写入RTU寄存器,但出现了错误。这是我的密码 设备地址:02 功能代码:05 寄存器地址:0000 值:ff00 import minimalmodbus instrument = minimalmodbus.Instrument('COM4', 1) instrument.write_register(02, 05, 0000, ff00) 我

我正在使用minimalmodbus进行阅读和写作。我有USB到Rs485的连接

我正试图用python将这个“02 05 0000 ff11”写入RTU寄存器,但出现了错误。这是我的密码

设备地址:02

功能代码:05

寄存器地址:0000

值:ff00

 import minimalmodbus
 instrument = minimalmodbus.Instrument('COM4', 1)
 instrument.write_register(02, 05, 0000, ff00)
我需要在上面使用python的代码中使用相同的功能


您混淆了一些设置

Modbus从机地址(在您的情况下为2)应包含在仪器的实例化中:

instrument = minimalmodbus.Instrument('COM4', 2)
您用于
write\u register
函数的参数也有错误,它们应该是:

instrument.write_register(0, 0xff00)
如您所见,write_register只接受两个参数:寄存器编号和要在其中读取的值

看一看和/或看一看可能是个好主意

编辑:我意识到您实际上想要使用功能代码05(写入线圈)。为此,应使用
write_bit
函数:

instrument.write_bit(0, 1)

这意味着在线圈0上写入
True

嘿,马可斯,谢谢你的帮助。我试过了,但还是没有交流<代码>文件“C:\Users\Waqas\AppData\Local\Programs\Python37-32\lib\site packages\minimamodbus.py”,第1406行,在“通信引发无响应”中(“与仪器无通信(无应答)”)minimamodbus.NoResponseError:与仪器无通信(无应答)这意味着您与设备没有连接。它与conmix合作吗?你试过读寄存器而不是写吗?顺便说一下,函数代码是用来写线圈的,而不是寄存器。您可能应该使用
写入位
而不是
写入寄存器
。请参阅我答案的更新。我已将您的更改应用于我的代码<代码>文件“C:\Users\Waqas\AppData\Local\Programs\Python37-32\lib\site packages\serial\serialwin32.py”,第315行,在write-raiseserialexception(“WriteFile failed({!r})”.format(ctypes.WinError())serial.serialutil.SerialException:WriteFile失败(PermissionError(13,“设备无法识别命令”),无,22))该错误似乎意味着您的端口被另一个进程打开,您是否关闭了conmix或任何其他使用该端口的工具?否则请重新启动并重试。。。