如何使用C#将Hex-value转换为modbus-protocol中的float

时间:2014-06-10 09:45:30

标签: modbus

我正在使用modbus-protocoll从模块中检索模拟值。 在webpanel上,我可以看到值为十六进制的09FD和浮点数的0.780。 该函数仅将09FD返回到C#中,并且必须手动转换为float值。

为此,modbus-dll中有一个转换函数: public static float GetSingle(     ushort highOrderValue,     ushort lowOrderValue )

但是“09FD”的哪一部分必须设置为两个用户? 我不知道如何传递它来检索双值。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

寄存器中返回的值是整数,以某种方式缩放以允许表示分数浮点值。您需要查看模块的文档,以确定如何缩放(并可能抵消)结果,以将其转换为实际的工程单位。

如果您没有文档,那么您可以从Web面板中检索多个值,绘制它们并在它们之间插入一条线来估计用于缩放输出值的参数。

如果值由设备以真浮点形式表示(并在两个相邻的整数中传递),则引用的GetSingle()函数适用。只有一个整数的示例表明情况并非如此。