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 个所需位。
我们有一个加热控制器,使用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 个所需位。