2.3 基本控制指令
PLC中的基本控制指令指令系统中占有重要的地位,它是用来确定程序的执行顺序和流程。
实际设计中可以根据系统的要求设计成一个按一定流程执行的程序,使得程序更加整齐易读,逻辑过程也更加清晰。
1.主控和主控结束指令MC、MCE
(1)指令功能
当触发信号接通时,执行MC和MCE之间的指令,否则不执行。
【例2-13】 编程实例
程序的指令如下:
0 ST X0
1 OT Y0
2 ST X1
3 MC 0
4 ST X0
5 OT Y1
6 ST X2
7 OT Y2
8 MCE 0实例程序的梯形图、时序图如图2-24所示。
图2-24 实例的梯形图及时序图
a)梯形图 b)时序图
输出Y0不受MC和MCE指令控制。当触发信号X1接通时,执行MC和MCE之间的指令,X0控制Y1,X2控制Y2;当X1断开时,Y1和Y2也断开。
(2)指令使用说明
1)当触发信号接通时,执行MC和MCE间的程序。
2)当触发信号断开时,MC和MCE间的程序操作如表2-4所示。
表2-4 触发信号断开时MC和MCE间的指令操作①
①此时该段程序只是处于停控状态,PLC仍然扫描这段程序。其中F118(UDC)、F119(LRSR)和F137(STMR)
为高级指令,其功能在第4章中有具体介绍。
3)MC指令不能直接从母线开始,在MC指令前必须有触点。
4)程序中的主控指令可以嵌套,但MC和MCE必须成对出现且编号相同,并且不能颠倒顺序,更不能出现两个或多个相同编号的主控指令对,编号范围是0~31,如图2-25所示。
2.跳转和标号指令JP、LBL
(1)指令功能
当JP指令前的触发信号接通时,跳转到与JP指令同编号的LBL(编号范围为0~63)处,并执行后续程序,JP与LBL之间的指令不执行。
图2-25 主控指令的嵌套
【例2-14】 编程实例
实例程序指令如下所示:
0 ST X0
1 JP 0
2 ST X1
3 OT Y0
4 LBL 0
5 ST X2
6 OT T1
梯形图、时序图如图2-26所示。
图2-26 实例梯形图及时序图
a)梯形图 b)时序图
当控制条件X0为“ON”时,程序由JP0跳转至LBL0,接着执行下面的程序。
(2)指令使用说明
1)JP指令跳过位于JP和同编号的LBL指令间的所有指令。执行JP指令时,被跳过去的指令的执行时间不计入扫描时间。
2)程序中可以使用多个编号相同的JP,但不允许出现相同编号的LBL。
3)LBL可供相同编号的JP和LOOP指令使用。
4)在一对JP和LBL指令中间可以嵌套使用。
5)在JP指令执行期间,TM、CT、SR、Y和R的操作如表2-5所示。
表2-5 JP和LBL间指令的操作
6)在JP和LBL指令中间使用DF或DF/指令,当JP的控制信号为“ON”时无效。如果JP和DF或DF/使用同一触发信号,将不会有输出。如需要输出,必须将DF或DF/指令放在JP和LBL指令外部。
7)LBL的地址不能位于JP的地址之前,否则会出现运行错误。
8)JP和LBL指令不能用在步进程序中,且出现下列几种情况时,程序将不执行:
①JP指令没有触发信号;
②存在两个或者多个相同编号的LBL指令;
③缺少JP和LBL指令对中的一个指令;
④由主程序区跳转到ED指令之后的一个地址;
⑤由步进程序区之外跳入步进程序区之内;
⑥从子程序或中断程序区跳到子程序或中断程序区之外。
3.LOOP和LBL(循环和标号)指令
(1)指令功能
触发信号接通时,反复执行LOOP指令和同编号的LBL指令之间的程序,每执行一次,预置的数据存储单元的内容减1,当减到0时退出循环。该指令的操作数为:WY、WR、SV、EV、DT、IX和IY。
【例2-15】 编程实例
在循环指令使用时,因有地址变化,其梯形图及指令对应如表2-6所示。
表2-6 梯形图和指令表
当触发信号接通时,反复执行LOOP1和LBL1指令间的所有程序,每执行一次,预置数据寄存器的数值减1,直到DT2中的数值为0时结束循环。在触发信号断开时LOOP指令和同编号的LBL指令之间的程序不执行。
(2)指令使用说明
1)有LOOP指令必有相同编号的LBL指令,编号为0~63,且LOOP指令必须在LBL指令之前。
2)在同一程序段中,LOOP指令可以嵌套使用,但不允许出现相同编号的LBL指令。
3)如果数据区的预置值为0,LOOP指令无法执行(无效)。
4)执行LOOP指令期间TM、CT和SR指令操作如表2-7所示。
表2-7 LOOP和LBL间的指令操作
5)在LOOP和LBL指令中间使用DF或DP/指令,当LOOP的控制信号为“ON”时无效。如果LOOP和DF或DF/使用同一触发信号,将不会有输出。如需要输出,必须将DF或DF/指令放在LOOP和LBL指令外部。
4.结束和条件结束指令ED、CNDE
指令功能:ED为无条件结束,CNDE为条件结束。
【例2-16】 编程实例
程序梯形图如图2-27所示。
当X0断开时,执行完程序1后并不结束,继续执行程序2,直到执行完程序2才结束全部程序并返回起始地址。此时CNDE不起作用,只有ED起作用。当X0接通时,执行完程序1后,遇到CNDE指令不再继续向下执行,而是返回起始地址,重新执行程序1。CNDE指令只适用于在主程序中使用。
图2-27 梯形图
5.步进控制指令SSTP、NSTP、NSTL、CSTP和STPE
(1)指令功能
SSTP:表示进入步进程序。SSTP指令始终位于过程n的程序起始地址处。
NSTP:以脉冲方式进入步进程序。当检测到控制触点的上升沿时,程序进入下一个步进程序段,并将前面的程序用过的数据区清除,输出关断,定时器复位。
NSTL:以扫描方式进入步进程序。只要控制触点闭合,程序进入下一个步进程序段,并将前面的程序用过的数据区清除,输出关断,定时器复位。
CSTP:清除指定标记的步进指令。当最后一个步进程序段结束时,使用这条指令清除数据区,输出关断,定时器复位。
STPE:结束整个步进过程。
【例2-17】 编程实例
程序指令如下:
10 ST X0
11 NSTP 1
14 SSTP 1
17 OT Y0
18 ST X1
19 NSTL 2
22 SSTP 2
︙
100 ST X2
101 CSTP 50
104 STPE
当检测到X0的上升沿时,执行过程1(从SSTP1~SSTP2)。当X1接通时,清除过程1,并开始执行过程2(从SSTP2开始)。当X2接通时,清除过程50,步进程序执行结束。
上述实例梯形图如图2-28所示。
(2)指令使用说明
1)步进控制是将多个程序段看做若干个过程,按照一定的执行顺序连接起来进行控制。步进指令按严格的顺序分别执行各个程序段,每一段都有独立的编号,编号范围是0~127。编号可以不按顺序。
2)在一个过程执行前,先清除上一个过程,但几个过程可以同时运行(分支)。
图2-28 实例梯形图
3)在步进程序段中不能使用下述指令:JP和LBL、LOOP和LBL、MC和MCE、SUB
和RET、INT和IRET、ED和CNDE。
4)在步进程序区内,输出线圈可以直接连在左母线上。
5)特殊内部继电器R9015只在一个步进程序开始时闭合一个扫描周期。
6.子程序指令CALL、SUB和RET
(1)指令功能
CALL:转移到子程序并且开始执行。返回主程序后,子程序内的输出仍被保持。
SUB:子程序的开始。
RET:子程序结束并返回主程序。
【例2-18】 编程实例
程序指令如下所示:
10 ST X0
11 CALL 1
︙
20 ED
21 SUB 1
︙
30 RET
该实例程序梯形图如图2-29所示。
当执行条件(触发信号X0)为“ON”时,执行CALL指令,从SUB指令处开始执行指定编号的子程序。当子程序执行到RET时,程序返回到CALL指令之后的主程序继续执行。
(2)指令使用说明
1)每一个子程序必须在ED指令之后,由SUB开始,最后以RET结束。
2)CALL指令可以用在主程序区、中断程序区和子程序区。程序中可以多次使用同一标号的CALL指令,标号范围是0~15。
3)不能重复使用同一标号的SUB指令。
图2-29 实例梯形图
4)子程序可以嵌套使用,但最多只可以嵌套4层。
5)如果CALL指令的触发信号处于断开状态,不执行子程序。此时,SUB和RET间的各指令运行状态如表2-8所示。
表2-8 SUB和RET间的各指令运行状态
7.中断指令ICTL、INT和IRET
(1)指令功能
ICTL:通过S1、S2选择并且执行允许/禁止中断或清除中断。
INT:中断程序的开始。
IRET:中断程序结束并返回主程序。
【例2-19】 编程实例
实例指令程序如下所示:
10 ST X10
11 DF
12 ICTL
H 0
H 2
︙
20 ED
21 INT 1
︙
30 IRET
实例梯形图如图2-30所示。
当检测到中断控制触发信号X10的上升沿时,中断源X1被允许,其他中断源被禁止。在X10上升沿处正在执行的指令将立即停止,转而执行INT1和IRET指令间的中断程序。中断程序执行完毕后,返回到IC-TL指令处,继续执行ICTL指令下面的程序。
图2-30 实例梯形图
(2)指令使用说明
1)FP1有8个外部中断INT0~INT7(对应的中断源为X0~X7)和一个内部定时中断INT24。通过ICTL指令可以设置所有的中断源为允许/禁止(非屏蔽/屏蔽)。每次执行完IC、TL指令后,中断的类型以及中断的允许/禁止的设定就已完成(由S1和S2设定)。ICTL指令必须和DF指令连用,以保证只在触发信号的上升沿执行一次。
2)S1的设定中断的控制操作如图2-31所示。S1设定的中断类型如表2-9所示。
图2-31 S1的设定
表2-9 S1设定的中断类型
3)S2的设定。S2须根据S1中的控制字来设定中断状态。
①当S1的设定值为H0时,S2的设定格式如图2-32所示。位地址和中断程序间的关系如表2-10所示。
图2-32 S2的设定格式
表2-10 位地址和中断程序间的关系
②当S1的设定值为H100时,S2的设定格式如图2-33所示。
图2-33 S2的设定格式
当中断源对应的位设置为0时,清除相应的中断源。
③当S1的设定值为H2或H3时为内部定时中断INT24,S2的设定范围为K0~K3000。
S1=H2时的定时时间为S2×10ms;S1=H3时的定时时间为S2×0.5ms。S2=H0则禁止定时,中断INT24。
4)INT和IRET指令必须放在ED指令之后,并且在INT和IRET指令间必须有程序。
5)当检测到相应中断脉冲的上升沿时,执行INT和IRET指令间的程序。IRET指令结束中断程序,并返回执行主程序。
6)C14和C16型PLC不支持中断处理的3条指令。