2.2.2 跳转区域的软元件变化与功能指令执行
当程序执行条件转移指令发生跳转时,把指令CJ到转移标号之间的程序段称为跳转区域,如图2-18所示。跳转区域中会有位元件、定时器、计数器和功能指令等。如果在未执行CJ指令前,这些软元件的状态是一定的。但在执行CJ指令后,跳转区域指令虽并未执行,但驱动条件会随输入口状态变化或程序运行变化而改变,这时,对跳转区域的软元件会产生什么影响呢?下面分别加以讨论。
图2-18 程序转移与跳转区域
1.位元件Y、M、S
如图2-19(a)所示,Y1为跳转区域中的位元件。程序在未执行转移时,Y1的状态由驱动元件X03决定。分两种情况讨论,X03=ON时,时序图如图2-19(b)所示;X03=OFF时,时序图如图2-19(c)所示。从时序图中可以看出,不论Y1的初始状态是ON还是OFF,当程序发生转移后,如果其驱动条件X03的状态发生变化(图6-19(b)中的①变到②),Y1仍保持其状态不变。但如果在跳转区域外,再次驱动Y1,则按双线圈处理。以上结论同样适用于位元件M,S。
图2-19 位元件跳转状态
2.定时器
1)10ms、100ms定时器(T0~T199,T200~T245,T250~T255)
这类定时器如果程序转移前未启动,则一直保持停止状态,与位元件类似如图2-20(a)所示。如果程序转移前已启动,则发生程序转移时,会马上停止计时,且在转移期间保持当前值不变,如图2-20(b)所示的①处。转移结束后,如果X04仍为ON,则计时继续,直到达到设定值为止。如果又发生程序转移,并在转移期间,X04由ON变为OFF,则当转移结束后,定时器马上复位,当前值也归0,触点动作如图2-20(b)所示的②处。这类定时器的跳转状态如图2-20所示。
图2-20 10ms、100ms定时器跳转状态
2)1ms定时器(T246~249)
与10ms,100ms定时器类似,如果程序转移前未启动,则一直保持停止状态。与10ms,100ms定时器不同之处在于如果程序转移前已启动,则在发生程序转移期间,定时器继续计时,直到当前值为设定值,如图2-21(b)所示的①处。但其触点动作在转移结束后才发生,如图2-21(b)所示的②处。如果定时器驱动条件由ON变OFF,转移结束后,定时器当前值仍维持设定值,其相应触点也不动作,直到有信号使定时器复位,当前值才归零,触点动作,如图2-21(b)所示的③处。
图2-21 1ms定时器跳转状态
对跳转区域中的定时器来说,程序转移后,如果出现了驱动跳转区域中定时器的RST指令,只要驱动条件成立,都会使定时器复位,当前值为0,触点动作。但在跳转区域中的RST指令,程序转移后,即使驱动条件成立,定时器也不会复位。
3.计数器
跳转区域中的计数器的状态和10ms,100ms定时器类似,时序图如图2-22所示。读者可自行分析。
图2-22 计数器跳转状态
4.功能指令
如果跳转区域中有功能指令,则当程序发生转移后,即使功能指令的驱动条件成立,功能指令也不执行,但是功能指令MTR,HSCC,HSCR,HSZ,SPD PLSY,PWM,PLSR的动作继续,不受程序转移的影响。
5.与主控指令的关系
主控指令和转移指令的关系及动作如图2-23所示。其转移动作说明如下。
图2-23 主控指令中的跳转状态
(1)从MC外向MC外转移,图中①所示。
这种转移,基本上与主控程序无关,可以随意转移。
(2)从MC外向MC内转移,图中②所示。
这时,如果主控指令不被驱动(M0=OFF),转移到P1以后的程序照样执行,视M0=ON。
(3)从MC内向MC内转移,图中③所示。
这是在MC内的转移,能够执行转移的条件是主控指令必须被驱动,如果不被驱动(M0=OFF),转移则不被执行。
(4)从MC内向MC外转移,图中④所示。
分两种情况,如果主控指令被驱动(M0=ON)则可以进行转移,但主控复位指令MCR变为无效。如果主控指令不被驱动(M0=OFF),转移不能执行。
(5)从一个MC内向另一个MC内转移,图中⑤所示。
仅当MC N0 M0指令被驱动时,转移才能进行。一旦发生转移,则与MC N1 M2指令是否被驱动无关,而且上一个MCR N0被忽略。