Math Modbus将两个U16转换为浮点数

Math Modbus将两个U16转换为浮点数,math,protocols,Math,Protocols,我有两个系统互相传递实数。一个接收系统未将两个U16准确转换为浮点(使用内部功能)。例如,100.15正在转换为100.21。准确性对我的申请非常重要。我需要自己执行转换,但缺乏这样做的数学。有人能提供将两个Modbus U16转换为浮点所需的数学知识吗 示例:给定123.456 Modbus通道17142和59769,这两个数字的近似相似性为奇数。如果存在表示问题(例如,字节交换),值将不匹配,如果它们甚至可以被解释为有效的浮点值 如果您需要确定这些值,您能否让两个系统以固定点(100150)

我有两个系统互相传递实数。一个接收系统未将两个U16准确转换为浮点(使用内部功能)。例如,100.15正在转换为100.21。准确性对我的申请非常重要。我需要自己执行转换,但缺乏这样做的数学。有人能提供将两个Modbus U16转换为浮点所需的数学知识吗


示例:给定123.456 Modbus通道17142和59769,这两个数字的近似相似性为奇数。如果存在表示问题(例如,字节交换),值将不匹配,如果它们甚至可以被解释为有效的浮点值

如果您需要确定这些值,您能否让两个系统以固定点(100150)为单位移动这些值,并将数字除以1000以将其缩放回工程单位


这将允许您避免发送方和接收方中浮点实现的复杂性。当然,如果缩放整数转换是个问题,那么您需要查看有问题的系统中的值的替代表示。

您的接收系统使用什么代码?我通常只是将modbus字段读入字节数组,字节交换,然后将memcopy读入浮点变量。您对代码的这一方面没有控制权吗?Modbus值(即:值单位)的解释是特定于硬件的,尤其是那些表示坐标的值。例如,以0.05毫米为单位。我建议检查硬件规格文件或关于值单位的提示。接收系统是运行梯形逻辑的Modicon PLC。经进一步调查,问题在于从两个U16转换为一个U32。