python - 使用 pymodbus 的 Modbus RTU - 无法从 modbus 数据中读取保持寄存器
问题描述
大家好,我需要一些帮助
代码:
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
import logging
def readModbusData():
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)
client=ModbusClient(method='rtu',port='COM3',
baudrate=9600,timeout=1,parity='N',stopbits=2)
print(client.connect())
client.debug_enabled()
log.debug("Read holding registers")
response=client.read_holding_registers(0,1)
print(response) #This returns the response for whole length of registers
# print(response.getRegister(0)); #This returns value of only one
client.close()
readModbusData()
解决方案
检查这个stack_post,
您忘记了unit
参数并使用print(response.registers)
而不是 print(response)
.
您应该具有以下代码段:
response = client.read_holding_registers(0, 1, unit=<set-the-unit-ID>) # Note.
if not response.isError():
'''isError() method implemented in pymodbus 1.4.0 and above'''
print(response.registers) # Note.
else:
# Handle Error.
print('Unable to read or there is the connection problem.')
[注意]:
- 在许多情况下,默认情况
unit
下1
处于从属端。
推荐阅读
- java - 运行重绘方法后 JAVA swing gui 窗口受到震动
- regex - 如何使用 .htaccess 检查 URL 参数是否存在?
- c# - 删除时如何自动创建 Db(身份)?
- apache-kafka - 过滤流(Kafka?)以动态数量的客户端
- c# - 不响应在 ASP NET C# 中获取访问令牌 oauth 2.0 API UBER
- sql-server - 不工作的存储过程
- android - 即使我设置布局宽度匹配父项,RecyclerView 也仅显示半屏
- javascript - 通过 WebAPI + jquery (ASP.NET core) 删除元素
- python - 如何使用空格作为分隔符来获取字符串中的子字符串?
- javascript - 在javascript ajax请求中获取特定的数组键