You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pymodbus+PC端Modbus Slave向树莓派3B+传数据连接失败求助

Modbus RTU连接失败问题排查与解决(树莓派3B+ + CH340 + PC Modbus Slave)

问题描述

尝试通过pymodbus库实现PC(Modbus Slave程序)与树莓派3B+的Modbus数据传输,采用CH340 USB转Modbus转换器建立连接,连接失败。树莓派端代码运行时提示failed to connect [{str(self)}]错误,PC端Modbus Slave提示“连接到计算机的设备无法正常工作”。参考旧视频教程操作,但因pymodbus版本更新,无法适配解决。

树莓派端原代码

from pymodbus.client import ModbusSerialClient
from pymodbus.transaction import ModbusRtuFramer as ModbusFramer

client = ModbusSerialClient(
    framer=ModbusFramer,
    method='rtu',
    port='dev/ttyUSB0',
    baudrate=9600,
    bytesize=8,
    parity="N",
    stopbits=1,
    retries = 5,
    timeout=1,
    debug = True
    )

client.strict = False
client.connect()

res = client.read_holding_registers(address=300, count=1, unit=1)
res.registers

排查与解决步骤

1. 修正串口路径错误

原代码中port='dev/ttyUSB0'缺少开头的/,正确路径应为/dev/ttyUSB0。路径错误会直接导致树莓派无法识别串口设备,是连接失败的常见原因。

2. 确认CH340设备识别与权限

  • 在树莓派终端执行ls /dev/ttyUSB*,检查CH340是否被正确识别:
    • 无输出:说明驱动未加载或硬件故障,执行sudo apt install linux-modules-extra-raspi安装树莓派CH340驱动,同时更换USB口/数据线测试
    • 有输出:执行sudo usermod -aG dialout pi将当前用户加入串口权限组,重启后生效(避免每次手动改权限)

3. 严格匹配Modbus参数

确保PC端Modbus Slave与树莓派代码的参数完全一致:

  • 波特率9600、数据位8、奇偶校验N、停止位1
  • 从站地址(代码中unit=1)必须与Slave设置的站号相同
  • 寄存器地址注意:pymodbus v3.x中read_holding_registers的address参数为0-based,若PC Slave使用1-based地址(比如设置的寄存器地址是300),代码中需改为299

4. 适配pymodbus v3.x版本API

旧视频基于pymodbus v2.x,v3.x已简化API,无需手动指定framer,同时建议增加连接状态检查:

修正后的代码:

from pymodbus.client import ModbusSerialClient

client = ModbusSerialClient(
    method='rtu',
    port='/dev/ttyUSB0',
    baudrate=9600,
    bytesize=8,
    parity="N",
    stopbits=1,
    retries=5,
    timeout=1,
    debug=True
)

client.strict = False
if client.connect():
    print("连接成功")
    # 0-based地址,对应Slave的1-based地址300
    res = client.read_holding_registers(address=299, count=1, unit=1)
    if not res.isError():
        print("读取数据:", res.registers)
    else:
        print("读取错误:", res)
    client.close()
else:
    print("连接失败,请检查设备与参数")

5. PC端Slave设置检查

  • 在Windows设备管理器中确认CH340对应的COM口,Slave中选择该串口
  • 关闭其他占用该串口的程序(如串口助手)
  • 若提示设备异常,重新安装CH340 Windows驱动,更换PC端USB口测试

内容的提问来源于stack exchange,提问作者Albert B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:42:40