Python minimalmodbus 读取16位寄存器

Python minimalmodbus reading 16-bit register

我们有一个加热控制器,使用16位寄存器读取数据。

示例: 寄存器 512 - 从 0 到 16 的位用于读取温度。

此代码适用于此示例

#!/usr/bin/env python
import minimalmodbus
import time

minimalmodbus.BAUDRATE = 19200

instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 1)

while True:
    temperature1 = instrument.read_register(512, 0, 3)
    temperature2 = instrument.read_register(513, 0, 3)
    temperature3 = instrument.read_register(514, 0, 3)
    temperature4 = instrument.read_register(515, 0, 3)

但是这个控制器也有第516个寄存器有这个位table:

无法从此寄存器获取任何数据。从这个寄存器中得到 'status' 的位操作必须是什么?

我在谷歌上搜索了两天,但没有成功。我不擅长位运算

非常感谢任何答案。谢谢!

如果您想从寄存器 516 中获取 status 部分,您可以使用 Bitwise Operators 提取所需的位:

register516 = instrument.read_register(516)
status = (register516 >> 7) & 0x7

这将移动并屏蔽该值以获得对应于 status 的 3 个所需位。