我是python和modbus的初学者,现在我正在尝试用pymodbus控制连接到串行端口的风扇几个小时。使用制造商的专有软件,我能够控制风扇,这样连接本身就可以工作了。然而,我自己的代码却没有。
根据手册,风扇设置为以下值:
模式: RTU
波特率: 19200
奇偶校验:偶数
超时:1
从ID: 247 (F7h)
数据库:8
我修改了Pymodbus Library Examples中的pymodbus示例代码。这是我的代码:
from pymodbus3.client.sync import ModbusSerialClient as ModbusClient
Fan = ModbusClient(method='rtu',port ='/dev/ttymxc1', parity = 'E', baudrate='19200', timeout=1)
connection = Fan.connect()
a = Fan.write_register(2,1, unit=0xF7)
b = Fan.read_holding_registers(2,1, unit = 0xF7)
Fan.close()
读取和写入命令都会导致以下错误:
pymodbus3.exceptions.ModbusIOException: Modbus Error: [Input/Output] Server responded with bad response
即使没有插入电缆,我也会收到相同的信息。
有没有人有什么建议出了什么问题?
发布于 2017-01-20 20:23:53
超时是端口等待应答的时间。
将超时设置为~2000,1表示1毫秒,它们可能表示1秒。
并尝试地址1(如果上面的地址不起作用),同时检查Modbus地址是否可以配置为其他地址(可能是风扇上的一些开关)。
https://stackoverflow.com/questions/41744751
复制相似问题