python minimalmdobus如何解释寄存器正确?

时间:2017-03-21 09:18:37

标签: python modbus minimalmodbus

我在我的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!

1 个答案:

答案 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)