我有一个设备连接到计算机的COM端口。与设备的通信通过modbus协议进行。我需要从这个设备上读取一些信息——事件日志。仪器文档不是很广泛,但它说:
文档据我所知,为了初始化日志读取过程,我需要将值1写入寄存器100。
同样在文档中有一个示例请求:
[17:13:20:034] Written data (COM10)
01 10 7e f4 00 01 02 00 01 ec e3 // reg. 100 // Entire log upload transfer control register, address 100 . In parameter 1.
[17:13:20:050] Read data (COM10)
01 10 7e f4 00 01 58 13
我不知道如何正确理解这个例子,所以我不知道我做的每件事是否正确。我下面的代码不会抛出错误,但不会产生任何结果。读取过程没有初始化,没有任何工作。我做错了什么?如何在python中正确地实现上面示例中的查询?
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
client = ModbusClient(method='rtu', port=port, stopbits=2, bytesize=8, parity='N', baudrate=19200)
client.connect()
client.write_register(address=100, value=1, unit=1)
问题解决。只需要使用'write_registerS'而不是'write_register'。
client.write_register(address=100, value=1, unit=1)
client.write_registers(address=100, value=1, unit=1)