关于cpu扫描问题的一个程序
郑志武
发布于2013-01-07 16:16
37
0
标签:
anm1.0
ls5t#10s
sdt0
ai0.0
cuc0
at0
jnbs0
lc0
tmw10
s0:at0
=m1.0
am1.0
rc0
正确的程序a
ant0
ls5t#10s
sdt0
ai0.0
cuc0
at0
jnbs0
lc0
tmw10
s0:at0
rc0
错误的程序b
结果区别:a程序中可以10s正确的采集一次c0的数据,而b程序无法采集。请问问为什么?
佳答案
s7-300/400的定时器是异步扫描的,即定时器不所循环扫描周期影响,定时时间到可能出现在程序执行的任意一刻。
对于程序b,如果定时时间到出现在定时器指令前,那么执行到定时器指令时,定时器被复位,后面的采集程序得不到执行,如果出现在at0之后,那么到下一个循环是同样的情况,只有定时时间到出现在sd指令和at0指令之间,采集指令才会执行,不过这段时间相对于整个循环扫描周期太短,所以定时时间到出现在这个区间的几率几乎为0,所以会出现无法采集的情况
对于程序a,采集程序扫描完下个周期才对定时器复位。