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

PyModbus写入Modbus寄存器初始化日志读取无效果问题排查

问题排查与修复方案

核心问题分析

对比设备文档的Modbus请求帧和你的代码,发现两个关键不匹配:

  1. 功能码错误:文档示例使用的是写多个寄存器(功能码0x10),而你用的write_register是写单个寄存器(功能码0x06),设备仅响应0x10的请求来触发日志读取。
  2. 寄存器地址错误:文档帧里的起始寄存器地址是十六进制7E F4(十进制32496),你代码里写的address=100是文档标注的寄存器内部编号,并非Modbus协议层面的实际地址。

正确代码实现

from pymodbus.client.sync import ModbusSerialClient as ModbusClient

# 串口参数保持和设备一致
client = ModbusClient(
    method='rtu',
    port='COM10',  # 替换成你的实际串口端口
    stopbits=2,
    bytesize=8,
    parity='N',
    baudrate=19200,
    timeout=3  # 添加超时,避免无限等待
)

try:
    client.connect()
    # 使用写多个寄存器功能(对应功能码0x10),写入地址32496,值为1
    response = client.write_registers(address=32496, values=[1], unit=1)
    
    if not response.isError():
        print("日志读取初始化请求发送成功")
    else:
        print(f"请求错误: {response}")
finally:
    client.close()

额外说明

  • 代码添加了timeout参数,避免因无响应导致程序挂起;用try-finally确保串口连接正常关闭。
  • 发送成功后,需根据设备文档要求,继续使用读寄存器功能拉取日志内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:25:21