在讨论这个问题前,首先描述一下S7-200PLc定时器的刷新方式。
1ms定时器:每隔1ms刷新一次,定时器刷新与扫描周期与程序处理无关,采用的是中断刷新的方式,因此,当扫描周期过长时,在一个周期内会被多次刷新。
10ms定时器:在每个扫描周期开始时刷新,而在扫描周期内当前值不变。
100ms定时器:在定时器指令被执行时刷新。
然后我们来分析一下楼主您的问题所在:
(A)图的1ms定时器的应用:左图的错误原因在于:1ms定时器每隔1ms刷新一次定时器的当前值,CPU当前值如果正好在处理动断触点和动合触点时被刷新,此时Q0.0可以被接通1个周期,但是这种情况很少,大多数情况是定时器时间到,定时器刷新,而使得输出Q0.0输出,但是由于是每隔1ms刷新,因此Q0.0还没有来得及置位,就被复位了。因此需要使用右图的非自身激励输入程序。
(B)图的10ms定时器的应用:左图的错误在于,由于10ms定时器是每个扫描周期前刷新当前值,因此,定时时间到时,定时器输出动作,但是由于动断触点的动作,定时器被立即复位,因此,输出线圈Q0.0不会被置位。
(C)图为100ms定时器的应用,因为100ms定时器是执行指令时刷新,因此Q0.0在T37到时准确的接通一个周期。
而日系PLC在定时器的刷新上则没有那么复杂,因此熟悉日系产品的用户可能会不习惯于西门子产品。
以上!