登录
首页 串口通信 串口通信
回帖 发帖
正文

主题:关于IEEE-574内码转换的问题

点击:4276 回复:1

各位大虾:
    我现在用PLC和仪表通讯,标准的MODBUS协议,RTU格式
    假如我读两个字,仪表传过来的是IEEE-574标准的4个字节的内码格式
    例如:
    0103000B0002B5C9  我读两个字,仪表返回的是
    01030400176A432566  其中00176A43就是我要的数据,是IEEE-574标准的4个字节 的内码格式的浮点数,要转换为10进制的浮点数,请问各位大侠用什么方法,谢谢先!
07-02-12 14:13
浮点型数据(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。
12-02-01 16:32

工控新闻

更多新闻资讯