0

我正在尝试从 Modbus 模拟器读取保持寄存器,但是当我在 Python 中打印该值时,我得到一个“无”对象。模拟器确实发送了响应,但 Python 似乎没有收到它。

我已经用谷歌搜索了一天并尝试了我找到的所有内容:包括单元号、不同的 Python modbus 客户端、不同的模拟器等。没有运气。

非常欢迎任何想法或建议!如果有任何信息我应该提供帮助,请告诉我。

我可以成功写入保持寄存器,模拟器发送如下传输:

“RX:01 03 00 00 00 01 RX:84 0A 从 0 读取寄存器 1 TX:01 03 02 00 05 78 47”

在此处输入图像描述 模拟器传输

在此处输入图像描述 模拟器寄存器

我得到的 Python 输出是:“Connection:True None”

在此处输入图像描述

如果我尝试打印(result.registers),我得到错误:“错误:('NoneType'对象没有属性'registers')”

版本信息:Python:3.4.2 Modbus:pymodbus3 模拟器:MOD_RSsim 版本 8.20 USB 到 Modbus 转换器:UTEK 型号:UT-890A(连接到 RasPi) USB 到 RS232 转换器:ATEN 型号:GUC232A(连接到笔记本电脑)

import pymodbus3
from pymodbus3.client.sync import ModbusSerialClient

client = ModbusSerialClient(method='rtu', address=1, timeout=1000, port="/dev/ttyUSB0", bytesize=8, stopbits=1, baudrate=9600, parity='E')

connection = client.connect()
print ('Connection:{}'.format(connection))

write = client.write_registers(0, 5, unit = 1)
time.sleep(0.3)
result = client.read_holding_registers(address=0x00, count=1, unit = 0x01)
time.sleep(1)

print(result)

4

1 回答 1

2

如果您通过 pip 安装 pymodbus3,我认为这是一个错误。这是一个问题链接:pymodbus3 issue。我建议你使用 pymodbus,因为它现在支持 python3只是一个注意:python3 的 Pymodbus 是官方支持的,或者你可以通过 pymodbus3 master 分支源代码安装 pymodbus3。

于 2017-11-10T01:59:17.163 回答