发布于 2010-09-29 18:19:45
28楼
AN T 1
L S5T#5S
SD T 1
------------------------------------------
L MD100
T MD10
M_01: L MD10
L L#1
-D
T MD10
L L#0
>D
JC M_01
------------------------------------------
A T 1
S M 0.0
始终对用概率论来解释这个问题觉得不合适,在确定的程序环境下,我认为其响应就是确定的,而不是随机的。
采用上述程序,分别在OB1与OB35中执行,修改MD100中的值可以改变两段横线中程序执行的时间,即延时时间。程序中M0.0能够被置位,取决于,T1在触发前的最后一个OB周期的剩余时间与OB的配合,配合得好的情况下,在一段时间内也可每次都捕捉到,极端情况就是T1的延时比两段横线间程序的延时要短。
由于OB1的周期是极其不稳定的,所以很多时候T1的触发时刻是无法与两段横线间的延时配合的,表现出无规律性。而OB35则是稳定的周期,那么上述程序的响应也是稳定的(虽然,可能无法扫描到每次T1的触发,固定的几个间隔总是可以触发的),这取决于中断周期的设置,与两段横线间延时的设置的配合,其表现完全不是随机的一个概率问题。
如果在2个时间片中,则又是另外一回事了,比如在OB35中启动T1,在OB1中扫描T1。
我们对定时器的研究只要懂得:
定时器是异步执行的
定时器的状态值由1->0 是必须在SD Tx指令之后的
定时器的状态值由0->1 是可以在扫描周期的任意一点的
就足以
当然,最后的结论还是不要采取这种程序结构来编程,只要多用一个标志位就可以解决问题。
Zane
注册自动化系统工程师
Always save before download