发布于 2011-10-10 09:36:24
28楼
仔细看了官网例程(技术资源库条目号:1853767),程序里做了如下判断:
如果#OB1_Prev_Cycle<StepTime,则按增加量按如下公式做线性变换。
Step_Range=#OB1_Prev_Cycle/StepTime*StepValue;
Step_Range:当前增加量;
StepTime:每步时间(ms)
StepValue:每步增加量;
如果#OB1_Prev_Cycle>StepTime,则StepTime*2,StepValue*2,继续判断#OB1_Prev_Cycle<StepTime。
这样基本上可以消除#OB1_Prev_Cycle不稳定带来的影响。
如果把#OB1_Prev_Cycle用如下代码替代,则在OB3X中也可以运行。
CALL "TIME_TCK"
RET_VAL:=#L_Temp //获取当前时间
L #L_Temp
L #MEG_Time
-D
T #L_Temp1 //差值为上一个执行周期的时间,这个值替代#OB1_Prev_Cycle
L #L_Temp
T #MEG_Time //保存上一个执行周期的时间