我正在使用modbus-protocoll从模块中检索模拟值。 在webpanel上,我可以看到值为十六进制的09FD和浮点数的0.780。 该函数仅将09FD返回到C#中,并且必须手动转换为float值。
为此,modbus-dll中有一个转换函数: public static float GetSingle( ushort highOrderValue, ushort lowOrderValue )
但是“09FD”的哪一部分必须设置为两个用户? 我不知道如何传递它来检索双值。
感谢您的帮助
答案 0 :(得分:0)
寄存器中返回的值是整数,以某种方式缩放以允许表示分数浮点值。您需要查看模块的文档,以确定如何缩放(并可能抵消)结果,以将其转换为实际的工程单位。
如果您没有文档,那么您可以从Web面板中检索多个值,绘制它们并在它们之间插入一条线来估计用于缩放输出值的参数。
如果值由设备以真浮点形式表示(并在两个相邻的整数中传递),则引用的GetSingle()
函数适用。只有一个整数的示例表明情况并非如此。