使用自由口通讯,将1.0存入VD104,通过XMT从VB101开始传输,用串口调试助手以十六进制接收,得到对应VD104的3F 80 00 00,这是怎么的转换方式?
我应该用什么方法将3F 80 00 00转成1.0读取?
问题补充:
我现在是不明白这个3F 80 00 00怎么来的,上位机我需要自己去写软件,得到的数据没办法使用。还有按照实数去看是怎么回事?
图片说明:
最佳答案
对于大小为32-bit的浮点数(32-bit为单精度,64-bit浮点数为双精度,80-bit为扩展精度浮点数),
1、其第31bit为符号位,为0则表示正数,反之为复数,其读数值用s表示;
2、第30~23bit为幂数,其读数值用e表示;
3、第22~0bit共23bit作为系数,视为二进制纯小数,假定该小数的十进制值为x。
该浮点数的值用十进制表示为:=(-1)^s*(1+x)*2^(e-127)
对于3F800000来说,0011 1111 1000 0000 0000 0000 0000 0000
1、其第31bit为0,即s=0
2、第30~23bit依次为011 1111 1,读成十进制就是,即e=127。
3、第22~0bit依次为000 0000 0000 0000 0000 0000,也就是二进制的纯小数0.00000000000000000000000,其十进制形式为0.0,即x=0.0。
=(-1)^s*(1+x)*2^(e-127)
=(-1)^0*(1+0.0)*2^(127-127)=1.0
提问者对于答案的评价:
谢谢您的解答!
专家置评
s7-200浮点数格式:IEEE 32位浮点数
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc144097.html