如何 read/write 设备的寄存器通过 TCP 使用 pymodbus 连接到网关
How to read/write a device's register connected to a gateway with pymodbus via TCP
我必须使用 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,奇偶校验:None,接口:RS-4852线)?
PS: 网关是 Moxa MGate MB3170
首先你应该了解你的 modbus 从站寄存器表(你的传感器)
并了解它的功能代码如果读取的功能代码是 0x3
你应该使用 Read Holding Registers
如果功能代码是 0x4
你应该使用 Read Input Registers
功能
之后你应该找到你需要的寄存器地址,ex:temp寄存器地址是0x05
,字节数是2,你的传感器ID是230,需求功能代码是0x3
read_holding_registers(0x05 , 2, unit=230)
首先,您需要确定网关与Modbus设备之间的连接。
之后,您可以通过modbus poll应用程序获取数据和测试数据寄存器。
只要建立连接,就可以开始编码了...
我必须使用 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,奇偶校验:None,接口:RS-4852线)?
PS: 网关是 Moxa MGate MB3170
首先你应该了解你的 modbus 从站寄存器表(你的传感器)
并了解它的功能代码如果读取的功能代码是 0x3
你应该使用 Read Holding Registers
如果功能代码是 0x4
你应该使用 Read Input Registers
功能
之后你应该找到你需要的寄存器地址,ex:temp寄存器地址是0x05
,字节数是2,你的传感器ID是230,需求功能代码是0x3
read_holding_registers(0x05 , 2, unit=230)
首先,您需要确定网关与Modbus设备之间的连接。
之后,您可以通过modbus poll应用程序获取数据和测试数据寄存器。
只要建立连接,就可以开始编码了...