1

我必须使用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

4

2 回答 2

2

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

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

每当您建立连接时,就该编码...

于 2019-02-06T13:26:03.170 回答
1

首先,您应该了解您的 modbus 从寄存器表(您的传感器)并了解它的功能代码,如果您应该使用读取功能代码0x3Read Holding Registers如果功能代码是0x4您应该使用Read Input Registers功能

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

read_holding_registers(0x05 , 2, unit=230)  
于 2019-02-06T09:06:57.943 回答