实数乘积转化成整数的结果误差非常大

上一次我的提问是把实数%ignore_a_1%转化成整数,发现结果大相径庭,我发照片,希望大家给与我帮助。
我输入VD40=1.0, VD40*10.0, VD40取整并数转换为整数VW48, 应该VW48=10, 但是结果是VW48=100
VW48作为定时器的参数

问题补充:
我原来用的是取整ROUND(),后来改为TRUNC(),并且改变输入VD40=1.0--》VD40=10.0,结果应该是VW48=100,但是结果却是VW48=1000

图片说明:

实数乘积转化成整数的结果误差非常大    实数乘积转化成整数的结果误差非常大    实数乘积转化成整数的结果误差非常大    实数乘积转化成整数的结果误差非常大   

最佳答案

程序写得有问题,你网络2中定义VD40为1.0,你在网络三中用10.0乘以VD40得出来的结果放到VD40中,你这个就有冲突了,你将网络三中10.0乘以VD40的结果放到VD44中,再将VD44取整放到VD48中,再将VD48转换为整数,转换的结果放到VW52中,结果就会是10。
关于补充问题回答:按照下图去写程序,就没问题了。

图片说明:

实数乘积转化成整数的结果误差非常大  

提问者对于答案的评价:
我看S7-200 SMART的编程手册上AC1 *VD100= VD100,就用STL:IN1 * OUT = OUT,没注意前面的STL,LAD 和 FBD:IN1 * IN2 = OUT,难道LAD里面就不能用IN1 * OUT = OUT。

最佳答案作者回复:
可以,但是你只能在一个扫描周期里面执行,你用的SM0.0一直接通结果会有问题。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc291242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日 上午12:44
下一篇 2020年10月31日 上午12:45

相关推荐