西门子S7-300 PLC 数据类型 (浮点数 32位的)

符号位占第31位、指数位占第23~30位、尾数m占第0~22位。看到书上有个例子:浮点值12.25的表示方法;符号位S=0;指数e=2的7次方加2的1次方=130;尾数m=2的-1次方加2的-5次方=0.53125。浮点数值=(1+0.53125)*2的(130-127)次方=12.25。大家不要见笑, 但我楞是看不懂2的7次方、1次方、-1次方、-5次方是怎么来的 。请教高手解答,不胜感激,谢谢。。。。。

问题可以描述为:浮点数12.25用PLC32位浮点数怎么表示?

首先要把十进制数(12.25)转换为二进制数(1100.01),具体可以百度怎么把十进制小数转化为二进制小数(整数部分除2取余逆序排列、小数部分乘2取整正序排列)。
1101.01=1.10101x2^3(类似十进制的小数点移位)
对照公式1.m x 2^(e-127) 就知道m=10101,e=130=B(1000 0010)

这样,就得到了32位浮点数的表示:
0 1000 0010 000 0000 0000 0000 0001 0101
+ ( e )( m )

好不容易弄懂这个原理,请看是否对。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-24
其实您走了一个误区,浮点数需要用双字表示
modbus
只最大只能通讯字
比如:主站vd100中
数据为3.8
vd100含有vw100和vw102
只需要将vw100和vw102的数据写入到从站
比如说主站vw100写入从站vw1000
vw102写入从站vw1002
就相当于主站vd100写入从站vd1000
还不懂可以再问。
第2个回答  2010-06-19
所谓的 32位的 浮点数 就可以简单的理解为 带小数点的十进制数。
一般不被PLC 处理执行 必须要 将浮点数 转换成 整数 才被 PLC 执行。
取值范围-3143.4576到 1.234567e+13
个人认为 能产生 小数点数的 只能是模拟量 信号
相信只有在 使用模拟量模块的 PLC 才能用到
第3个回答  2017-12-19
尾数部分(m)是从高位开始顺序排列的。所以表示结果应为:
0 1000 0010 101 0100 0000 0000 0000 0000
另:这是遵循IEEE的R32-23规则的单精度类型,十进制的9用二进制要用4位二进制来表示,所以23位尾数的单精度类型有效位最多为6位。