Skip to main content
 首页 » 编程设计

python之Pymodbus RTU连接问题

2025年05月04日14itcoder

我是 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 

即使未插入电缆,我也会收到相同的消息。

有没有人有什么问题的建议?

请您参考如下方法:

超时是端口等待应答的时间。

将超时设置为大约 2000,1 是 1 毫秒,他们可能意味着 1 秒。

并尝试地址 1(如果上述方法不起作用),同时检查 Modbus 地址是否可以配置为其他地址(可能是风扇上的一些开关)。