恭喜,你发布的帖子
发布于 2018-03-09 08:26:38
6楼
我吼了几嗓子,结果没什么人起哄呀... ...
我本来是想带节奏的,结果被ZANE版带沟里去了 ^_^
算了,我还是自己写出来吧。
#iTemp0 := RD_SYS_T(OUT=>#ACTUAL_TIME); //读取当前系统时间
#rCycleTime := 1.0E-3*DINT_TO_REAL(TIME_TO_DINT(T_DIFF(IN1:=#ACTUAL_TIME, IN2:=#LAST_TIME))); //两次调用之时间差(S)
#LAST_TIME := #ACTUAL_TIME; //为下一次调用做准备
对照图片,DTL数据类型可以读取到 纳秒单位。 而事实上T_DIFF指令是将两个DTL类型做减法,可是结果却只保留到 毫秒 单位! 毫秒就毫秒吧,最“可怕”的却是它的减法不是四舍五入,而是去尾留整!!! 比如我的扫描周期为2.1ms,它计算出来的结果显示为2ms, 扫描周期为2.99毫秒,它也显示是2ms ! 这就尴尬了.... .... 当我在加速过程中,PLC的扫描周期平均为2.6ms时,计算的最终结果也还是2ms, 意味着,我的实际加速度就变成了 30 * 2 / 2.6 = 23 ... ...
问题就是这么出来的... ...
嘿嘿,怎么解决???
请填写推广理由:
分享
只看
楼主