您现在所在的是:

串口通信

回帖:1个,阅读:4206 [上一页] [1] [下一页]
1143
jiang1128
文章数:65
年度积分:50
历史总积分:1143
注册时间:2004/6/16
发站内信
发表于:2007/2/12 14:13:00
#0楼
各位大虾:
    我现在用PLC和仪表通讯,标准的MODBUS协议,RTU格式
    假如我读两个字,仪表传过来的是IEEE-574标准的4个字节的内码格式
    例如:
    0103000B0002B5C9  我读两个字,仪表返回的是
    01030400176A432566  其中00176A43就是我要的数据,是IEEE-574标准的4个字节 的内码格式的浮点数,要转换为10进制的浮点数,请问各位大侠用什么方法,谢谢先!
        喜欢瞌睡
855
sophymei
文章数:8
年度积分:50
历史总积分:855
注册时间:2008/11/25
发站内信
发表于:2012/2/1 16:32:55
#1楼
IEEE-574数据格式计算方法
浮点型数据(float)符合IEEE-574数据格式,其定义和计算方法如下:
1位符号位(SIGN) 8位指数位(E7…E0) 23位尾数位(p22…p0)


    符号位:SIGN=0为正,SIGN=1为负;指数部分:E=指数部分-126;尾数部分:M=尾数部分补上最高位为1。
数据结果:REAL=SIGN×2E×M/(256×65536) ……(1)
例:仪表返回十六进制的电流数值数据I=43556680H
转化为二进制数据位: 01000011 01010101 01100110   10000000, 得到:
    最高位(数值符号位):SIGN=0,表示正数;
    指数部分E:(10000110)B=134;E=134-126 =8;
    尾数 M = (11010101 01100110 10000000)B =D56680H=13985408;
    根据式(1)得到结果:(+)28×13985408/(256×65536)=213.4。

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003