我有一个台达ES主机要与仪表通讯,可是仪表读取来的是浮点数格式,如何转换呀
实例:读取设备地址为01的仪表的主测量值。该仪表当前主测量值为+123.4(16进制42F6CCCD)。
问题补充:
我就是要弄清如何把16进制的ASCII码42F6CCCD这样转成10进制数,关键他是个浮点数,在PLC中如何转换?Modbus协议返回的测量值(data)是一个32位的浮点数,该浮点数采用IEEE-754标准格式。我用的是台达的RS指令,小弟在谢谢各位了发送ASCIIASCII码:010400000002F9(CRLF)十六进制3A 30 31 30 34 30 30 30 30 30 30 30 32 46 39 0D 0A应答ASCIIASCII码:01040442F6CCCD26(CRLF)十六进制3A 30 31 30 34 30 34 34 32 46 36 43 43 43 44 32 36 0D 0A
你的转换是要做什么?
用来显示吗?还是用来在程序中判断?
监控显示的话,如果是在软件上,那用WPL选择监控浮点数模式就可以了。
转换格式,以上的数据是单精度浮点数:
符号位1位,阶码8位,尾数23位,16#42F6CCCD = 2#0100 0010 1111 0110 1100 1100 1100 1101
= 0 10000101 11101101100110011001101
符号位 = 0为正;
阶码 = 133
幂 = 133-127=6
尾数 = 1.11101101100110011001101,小数点右移6位
则最终数 = 1111011.01100110011001101= 2^6+2^5+2^4+2^3+2^1+2^0 + 2^(-2)+2^(-3)+.......=+123.4