我试图从Modbus模拟器读取保持寄存器,但是当我在Python中打印值时,我得到一个"none“对象。模拟器确实发送了响应,但是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“
如果我尝试打印(注册),我得到错误:"Error:('NoneType‘对象没有’result.registers‘属性)“
版本信息: Python: 3.4.2 Modbus: pymodbus3模拟器: MOD_RSsim版本8.20USB- to -Modbus转换器: UTEK型号:UT-890A(连接到RasPi) USB- to -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)
发布于 2017-11-10 09:59:17
我认为这是一个错误,如果你通过pip安装pymodbus3的话。这里有一个问题链接: pymodbus3 issue。我建议你使用pymodbus,因为它现在支持python3 Just a Note : Pymodbus for python3 is officially supported,或者你可以通过pymodbus3主分支源代码安装pymodbus3。
https://stackoverflow.com/questions/47214182
复制相似问题