minimulmodbus读取同一设备上的多个寄存器



有没有一种方法可以用python库minimalmodbus读取设备上的一组寄存器?还是我需要像这样一个接一个地读取_register?

instrument.read_register(0x0033,1)

查看read_registers()的minimalmodbus文档。您不需要更改函数代码参数。

假设您想要前125个寄存器,从寄存器0开始:

registers = instrument.read_registers(0, 125)

如果你想打印这些寄存器:

for idx in range(len(registers)):
print(f"Register {idx:3d} : {registers[idx]:5d} ({hex(registers[idx])})")

这将输出类似于:

Register   0 :     0 (0x0)
Register   1 :     1 (0x1)
Register   2 :     2 (0x2)
Register   3 :     3 (0x3)
Register   4 :     4 (0x4)
…

编辑:查看规范文件的第9页,有16位和32位寄存器混合在一起。明确地阅读它们会更容易。否则,您将需要对两个16位寄存器进行移位和组合,这很烦人,并且minimalmodbus具有使其更容易出错的功能。

例如

# 0000h 2 V L1-N INT32 Value weight: Volt*10
# read_long(registeraddress: int, functioncode: int = 3, signed: bool = False, byteorder: int = 0) → int
L1_N_voltage = instrument.read_long(0, signed=True) / 10
# 0028h 2 W sys INT32 Value weight: Watt*10
sys_wattage = instrument.read_long(0x28, signed=True) / 10

请注意,read_long()不支持number_of_decimals,因此需要手动将读数除以10。对于电流和功率因数,您需要除以1000。

相关内容

  • 没有找到相关文章

最新更新