我有阅读和使用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
首先,你应该知道你的Modbus从站登记表(您的传感器),并了解它的功能码,如果读取功能码0x3
你应该使用Read Holding Registers
,如果功能代码为0x4
你应该使用Read Input Registers
功能
之后,你应该找到你需要注册地址,例如:温度寄存器地址为0x05
和字节数是2,你的传感器ID是230和需求功能的代码是0x3
read_holding_registers(0x05 , 2, unit=230)