0

我们有一个加热控制器,它使用 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 个寄存器:

在此处输入图像描述

无法从此寄存器中获取任何数据。从该寄存器中获取“状态”的位操作必须是什么?

我在谷歌上搜索了两天都没有成功。我不擅长位操作。

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

4

1 回答 1

2

如果您想做的是status从寄存器 516 中获取该部分,则可以使用位运算符提取所需的位:

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

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

于 2019-12-25T11:49:02.480 回答