我正在尝试使用 Modbus RTU RS-485 读取工业数字计数器的值。使用 USB-RS-485 转换,这里的主发送代码取自以下数据表,
我期望读取的输入寄存器是我所期望的,minimalmodbus 的 API 期望指定寄存器号、小数位数和功能代码。
- 图书馆是否自动分配从属编号,还是我们必须定义它?
- 从数据表中,是寄存器号是地址吗?
- 如果有两个数据序列作为响应,我期望多少个小数?
- CRC16 检查是否已包含在库中,因为我不应该对其进行编码?
到目前为止,这是我的代码,修改示例。
import minimalmodbus
import time
# port name, slave address (in decimal)
instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 1)
instrument.serial.baudrate = 9600
instrument.serial.bytesize = 8
instrument.serial.stopbits = 1
instrument.serial.timeout = 1
instrument.mode = minimalmodbus.MODE_RTU
instrument.clear_buffers_before_each_transaction = True
instrument.debug = True
while True:
# Register number, number of decimals, function code
# not sure what to expect on number of register, is it 31004, 31005?
digit_count = instrument.read_register(1, 2, 4)
print(digit_count)
time.sleep(1)
我已经阅读了 python Modbus 的其他库,我很乐意获得与 Modbus 相关的任何更好的编码建议。事先谢谢你。