恭喜,你发布的帖子
发布于 2018-03-08 16:15:38
4楼
回到这个问题本身。 原来论坛上也有过几个贴子,问起如何计算1500/1200的扫描周期。
其中一个方案就是用RD_SYS_T指令读取当前系统的时间, 然后两个扫描周期读取的时间用T_DIFF指令做减法,就计算出来扫描周期了。
#iTMP_Int0 := RD_SYS_T(OUT=>#ACTUAL_TIME); //读取当前系统时间
#rDELTA_TIME := 1.0E-3*DINT_TO_REAL(TIME_TO_DINT(T_DIFF(IN1:=#ACTUAL_TIME, IN2:=#LAST_TIME))); //两次调用之时间差(S)
#LAST_TIME := #ACTUAL_TIME; //为下一次调用做准备
#rDELTA_TIME就是计算出来的扫描周期了(单位:秒)
然后按照我顶楼提出的问题, 加速度度为30,目标速度150。 那么每个扫描周期我的速度增量为30*#rDELTA_TIME, 每个扫描周期将输出叠加,直到达到目标速度150为止
看起来,思路和程序都完全没问题? 而且这个块我也用了有几年了!!! 可是昨天在调一台小机器的时候,忽然发现不对劲。 我在触摸屏上有显示当前目标速度的,触摸屏对应的变量刷新周期为一秒, 那么原则上我在触摸屏上观察到的目标速度应该是以30为增量了,比如第一眼看到12,那么第二个数据应该是42,第三下就是72。。。。 可是事实却是每次增加20多点.....
这是为何???
请填写推广理由:
分享
只看
楼主