零基础轻松学会松下PLC
上QQ阅读APP看书,第一时间看更新

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所示。

978-7-111-46505-8-Chapter02-27.jpg

图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间的指令操作

978-7-111-46505-8-Chapter02-28.jpg

①此时该段程序只是处于停控状态,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之间的指令不执行。

978-7-111-46505-8-Chapter02-29.jpg

图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所示。

978-7-111-46505-8-Chapter02-30.jpg

图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间指令的操作

978-7-111-46505-8-Chapter02-31.jpg

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 梯形图和指令表

978-7-111-46505-8-Chapter02-32.jpg

当触发信号接通时,反复执行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间的指令操作

978-7-111-46505-8-Chapter02-33.jpg

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指令只适用于在主程序中使用。

978-7-111-46505-8-Chapter02-34.jpg

图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)在一个过程执行前,先清除上一个过程,但几个过程可以同时运行(分支)。

978-7-111-46505-8-Chapter02-35.jpg

图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指令。

978-7-111-46505-8-Chapter02-36.jpg

图2-29 实例梯形图

4)子程序可以嵌套使用,但最多只可以嵌套4层。

5)如果CALL指令的触发信号处于断开状态,不执行子程序。此时,SUB和RET间的各指令运行状态如表2-8所示。

表2-8 SUB和RET间的各指令运行状态

978-7-111-46505-8-Chapter02-37.jpg

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指令下面的程序。

978-7-111-46505-8-Chapter02-38.jpg

图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所示。

978-7-111-46505-8-Chapter02-39.jpg

图2-31 S1的设定

表2-9 S1设定的中断类型

978-7-111-46505-8-Chapter02-40.jpg

3)S2的设定。S2须根据S1中的控制字来设定中断状态。

①当S1的设定值为H0时,S2的设定格式如图2-32所示。位地址和中断程序间的关系如表2-10所示。

978-7-111-46505-8-Chapter02-41.jpg

图2-32 S2的设定格式

表2-10 位地址和中断程序间的关系

978-7-111-46505-8-Chapter02-42.jpg

②当S1的设定值为H100时,S2的设定格式如图2-33所示。

978-7-111-46505-8-Chapter02-43.jpg

图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条指令。