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

时间:2019-02-05 15:07:42

标签: python serial-port modbus modbus-tcp pymodbus

我必须使用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:网关是 Moxa MGate MB3170

2 个答案:

答案 0 :(得分:2)

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

之后,您可以通过modbus poll应用程序获取数据并测试数据寄存器。

只要建立连接,就该进行编码...

答案 1 :(得分:1)

首先,您应该了解Modbus从站寄存器表(您的传感器)  并了解其功能代码如果读取的功能代码是0x3,则应使用Read Holding Registers;如果功能代码是0x4,则应使用Read Input Registers函数

之后,您应该找到所需的寄存器地址,例如:临时寄存器地址为0x05,字节数为2,传感器ID为230,需求功能代码为0x3

read_holding_registers(0x05 , 2, unit=230)