开发协议 %e5%bc%80%e5%8f%91%e5%8d%8f%e8%ae%ae
您现在的位置:首页 > 开发协议 > Modbus协议中浮点数的格式与换算方法

使用教程

下载中心

Modbus协议中浮点数的格式与换算方法

发布时间:2021/05/12 开发协议 标签:Modbus浮点数浮点数转换浏览:7307

Modbus协议中浮点数(单精度)使用的是IEEE754标准浮点数(32位)的表示方法:

从控制器内部读取到2个16位模拟量的组合就可以组成一个32位的浮点数值,比如一个20.5度,这个数是一个32位浮点数,带有小数点。

IEEE754浮点数二进制格式示意图

    • 1[31] 符号位(SIGN)
    • 8[23-30] 指数位(EXPONENT) 指数偏移量 127
    • 23[0-22] 尾数位(MANTISSA)

    转换为10进制的公式:

    SGL = (-1)^SIGN * 1.MANTISSA * 2^(EXPONENT-127)

    转换举例:

    将40800000转换为10进制数,方法如下:

     

    Modbus浮点数转换示例

    1. 先将16进制数转成二进制数01000000100000000000000000000000
    2. 1位符号位(SIGN)=0
    3. 8位指数位(EXPONENT)=10000001=129[10进制]
    4. 23位尾数位(MANTISSA)=00000000000000000000000
    5. 1.尾数=1 .00000000000000000000000=1.0000000[10进制]
    6. 套入公式得SGL=(-1)^0*1.0000000*2^(129-127)=4
VB转换方法: