您现在的位置是:首页 > PLC技术 > PLC技术
S7-300/400的双整数与浮点数之间的转换
来源:艾特贸易2017-09-19
简介DTR 指令将累加器 1 中的 32 位双整数转换为 32 位 IEEE 浮点数(实数),结果仍在累加器 1 。因为 32 位双整数的精度比浮点数的高,指令将转换结果四舍五入。 有 4 条将浮点数转换为双
DTR指令将累加器1中的32位双整数转换为32位IEEE浮点数(实数),结果仍在累加器1。因为32位双整数的精度比浮点数的高,指令将转换结果四舍五入。
有4条将浮点数转换为双整数的指令(见表3-13),它们将累加器1中的浮点数转换为双整数。因为转换规则不同,得到的结果也不相同,表3-14给出了不同的取整格式的例子。4条指令中用得最多的是RND,RND+和RND-很少使用。
表3-14 不同的取整格式举例
因为浮点数的数值范围远远大于32位整数,有的浮点数不能成功地转换为32位整数。如果被转换的浮点数超出了32位整数的表示范围,得不到有效的结果,状态字中的OV和OS位被置1。例2-1中的压力P(kPa)计算公式为
P=(10000×N)/27648=0.36169×N (3-1)
来自AI模块的PIW320的原始数据Ⅳ为16位整数,首先用I_DI指令将整数转换为双整数(见图3-95),然后用DI_R指令转换为实数(Real),再用实数乘法指令MUL_R完成式(3-1)的运算。最后用四舍五入的ROUND指令,将运算结果转换为以kPa为单位的整数。图中的程序在随书光盘的例程“指令应用”中。
图3-95 使用浮点数运算指令的压力计算程序
用仿真软件调试程序时,可将0和27 648分别输入PIW320,观察MD16中的计算结果是否是0和10000 kPa。将0~27648之间的任意数值输入PIW320,观察计算结果是否与计算器计算的相同。
【实例】 将101 in(英寸,浮点数)转换为以cm(厘米)为单位的整数,保存到MW0。
L 101.0 //将浮点数101.0装入累加器1
L 2. 54 //将浮点数2.54装入累加器1,累加器1的内容装入累加器2
*R //101.0乘以2.54,得256. 54 cm
RND //四舍五入转换为整数257
T MW 0