我在我的raspbian测试系统上使用python。使用 minimalmodbus 与 PT100温度传感器连接的10通道设备(Temco P3-PT10)进行通信。
因此我想读取通道1的温度寄存器100~101: 描述说:“当设置INT时,100将显示0,101显示通道1的温度,设置标记时250 = 25.0C,100和101显示25.0000C”
我开始阅读:
temperaturef = instrument.read_float(r, 3, 2)
temperature = instrument.read_register(r, 0)
我得到了输出:
地址100 R:62915 F:-4.95029165077e + 32 //地址101 R:16684 F:10.7924995422
第一列显示寄存器值浮点值返回的第二列。
我的问题: - 什么存储为寄存器值?我可以将它们转换为浮动吗? - 为什么浮动负值的第一个值?
我做错了吗?
thx for help!
答案 0 :(得分:1)
要阅读Mod总线寄存器,您可以按照link
进行操作是的,您可以将十六进制值转换为浮点数或即可。使用上述方法读取寄存器后,您将获得寄存器值。
要将hex转换为signed float,您可以使用:
import struct
var='0xbf99999a'
var = var.replace('x',' ')
var1 = var[2:len(var)]
print var1
a= struct.unpack('!f', var1.decode('hex'))[0]
print "%.3f"%round(a,3)