我必须使用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
答案 0 :(得分:2)
答案 1 :(得分:1)
首先,您应该了解Modbus从站寄存器表(您的传感器)
并了解其功能代码如果读取的功能代码是0x3
,则应使用Read Holding Registers
;如果功能代码是0x4
,则应使用Read Input Registers
函数
之后,您应该找到所需的寄存器地址,例如:临时寄存器地址为0x05
,字节数为2,传感器ID为230,需求功能代码为0x3
read_holding_registers(0x05 , 2, unit=230)