pymodbus读表寄存器

2024-04-23 10:07:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚接触modbus,但我有一个小项目要做。我需要从电能表上读出一些数值。我从互联网上找到的一些例子写下了这篇文章:

import logging
from pymodbus.client.sync import ModbusTcpClient as ModbusClient

logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)

client = ModbusClient('192.168.80.210')
client.connect() 
rr = client.read_holding_registers(40012, 1)
print rr

client.close()

它似乎连接到了仪表,因为这是我的输出:

^{pr2}$

我想从寄存器40012读到40014,这是Modbusdbus映射,我有: Modbus map

谢谢你的帮助。谨致问候


Tags: 项目fromimportclientlogloggingrr互联网
1条回答
网友
1楼 · 发布于 2024-04-23 10:07:12

我认为您应该设置unitport参数,要获得该值,请使用rr.registers,因此您需要知道单元的ID值和设备端口。在

在大多数情况下,unit1,而{}是{}作为modbus默认值。在

如果您想从地址40012读到40014,那么可以使用count=3从{}读取大量数据。在


我改进了你的代码,试试看:

from pymodbus.client.sync import ModbusTcpClient

client = ModbusTcpClient('192.168.80.210', port=502)

if client.connect():
    res = client.read_holding_registers(40012, count=3, unit=1)

    if not res.isError():
    '''.isError() was implemented in pymodbus version 1.4.0 and above.'''
        print(res.registers)
    else:
        # handling error
        print(res)

client.close()

相关问题 更多 >