如何读/写连接到网关通过TCP pymodbus设备的寄存器

问题描述 投票:1回答:2

我有阅读和使用pymodbus写的传感器。我没有直接连接到传感器,但我通过TCP连接到网关和网关通过串行到传感器连接。 我建立了这样的网关的连接:

client = ModbusClient("192.168.127.254", 502)
connection = client.connect()

与网关的连接工作,因为套接字是开放的。但我不能以这种方式从传感器读:

if connection:
    request = client.read_holding_registers(0x00, 8, unit=1)
    data = validator(request)
    print(data)

    request = client.read_holding_registers(0x00, 8, unit=1)  
    data = validator(request)
    print(data)

    client.close()

我如何连接与连接至所述网关的指定传感器(ID:230,波特率:9600,奇偶校验:无,接口:RS-4852线)?

PS:网关是一种艾MGate MB3170

python serial-port modbus modbus-tcp pymodbus
2个回答
1
投票

首先,你应该知道你的Modbus从站登记表(您的传感器),并了解它的功能码,如果读取功能码0x3你应该使用Read Holding Registers,如果功能代码为0x4你应该使用Read Input Registers功能

之后,你应该找到你需要注册地址​​,例如:温度寄存器地址为0x05和字节数是2,你的传感器ID是230和需求功能的代码是0x3

read_holding_registers(0x05 , 2, unit=230)  

2
投票

首先,你需要确保网关和Modbus设备之间的连接。

后,您可以通过modbus poll应用程序中获得的数据和测试数据寄存器。

每当建立的连接,它的时间来编码...

© www.soinside.com 2019 - 2024. All rights reserved.