5.5 CALL、SRET、FEND、CJ、EI、DI、IRET指令(课件)《PLC技术及应用》(高教版·第2版)同步精品课堂
|
26页
|
161人阅读
|
0人下载
精品
内容正文:
任务5.5 CALL、SRET、FEND、CJ、EI、DI、IRET指令和 P/I 元件
《PLC技术及应用》(高教版·第2版)
同步精品课堂—中职专业课
学习目标
01
03
02
准确理解 P(脉冲)元件和 I(保持)元件的工作原理,能清晰区分两者在 “输出触发条件”“输出持续时间” 及 “复位方式” 上的核心差异。
掌握 FEND(主程序结束)指令的功能,明确其在程序结构中的作用(标记主程序终止点、控制程序循环),知晓遗漏该指令可能导致的程序执行异常(如误执行子程序 / 中断程序)。
熟知 CALL(子程序调用)与 SRET(子程序返回)指令的 “成对使用” 逻辑,能阐述两条指令的配合流程(主程序 CALL 调用→子程序执行→SRET 返回主程序)。
学习目标
课前导入
在工业控制中,按下设备启动按钮后,如何确保电机只响应一次启动信号,而非持续触发?主程序执行时,若需临时调用 “故障检测”“参数计算” 等独立功能模块,又该如何实现?当设备遇到紧急情况,怎样让急停信号优先中断当前程序并立即生效?
仿真软件F-1界面
指针(P、1)用做跳转、中断等程序的人口地址。
*无触点、线圈,与跳转、子程序、中断程序等指令配合使用。
*按十进制编号。
①分支指针:P0~P62,P64-P4095共4095个(END跳转用P63)
②中断指针:
输人中断用100口(X0),I10囗(X1),…,I50□(X5),共6个。
定时器中断用 16 口口~I8口口,共3个。
计数器中断用1010~1060,共6个。
P、I元件
(1)指令样式(见表5-22)
FEND 主程序结束指令
(2)使用说明
执行 FEND 指令与END指令类似,进行输出处理、输人处理、看门狗定时器的刷新,然后返回到程序的0步。编写“子程序”和“中断程序”时需使用该指令。
FEND 主程序结束指令
(1)指令样式(见表5-23)
CALL、SRET 子程序调用指令
(2)使用说明
当指令输人为ON时,执行CALL指令,向标号跳转接着,执行标号的子程序;执行 SRET后,返回到CALL指令的下一步。
CALL、SRET 子程序调用指令
(3)注意事项
*主程序在前,子程序在后,以FEND指令分隔。
*CALL指令所使用标号应写在 FEND 指令之后。
*标号不能重复“使用”,但不同的 CALL指令可以调用同一标号的子程序。
*子程序最多允许5层嵌套。
CALL、SRET 子程序调用指令
由PLC工作原理可知,通过循环扫描,PLC可以对全部I/0进行一次性取样与刷新,从而保证了同一循环周期内的输人状态的唯-性,提高了软件可常性。但是这种“按部就班”的工作方式同时也大幅度降低了 PLC 对输人的响应速度,以至于无法完成系统所需的高速处理任务。
CALL、SRET 子程序调用指令
程序举例:
子程序内的多重 CALL 实例(2 层嵌套,如图 5-34 所示)
(1)指令样式(见表5-24)
EI、DI、IRET中断指令
(2)使用说明
可编程控制器通常处于禁止中断状态,由中断允许指令 E和禁止中断指令 DI组成允许中断范围,E~DI之间的程序段为允许中断区间。
当程序处理到允许中断的区间,出现中断信号(输人,定时器计数器)时,则停止执行“主程序”,转而去执行相应标号“中断子程序”。
处理到中断返回指令 IRET时,再返回断点,继续执行主程序。
EI、DI、IRET中断指令
(3)注意事项
*主程序在前,中断程序在后,以FEND指令分隔。
*在 DI-EI指令之间(禁止中断区域)发生的中断会被存储,并在 E执行之后再执行;无须中断禁止时,可只用E指令,不必用 DI指令。
*FX3u设置有9个中断源,对应中断标号10口口~18口口;多个中断依次发生时,以先发生为优先;完全同时发生时,中断指针号较低的有优先权。
EI、DI、IRET中断指令
*执行一个中断子程序时,如果在中断子程字中编写E、DI指令,可实现二级中断嵌套。
*当 M8050-M8058为ON时,禁止执行相应10囗囗-18囗口的中断;
当M8059为ON时,禁止所有计数器中断。
EI、DI、IRET中断指令
(1)指令样式(见表5-25)
CJ条件跳转指令
(2)使用说明
当指令输人为 ON 时,转向执行指定标号的程序。
*标号不能重复“使用”,但不同的 C指令可以跳转到同一标号。
*标号可以在跳转指令之前或之后。
CJ条件跳转指令
课堂练习
1.CJ 指令的全称是( )
A. 子程序调用指令
B. 条件跳转指令
C. 中断返回指令
D. 主程序结束指令
答案:B
解析:CJ 是 “Condition Jump” 的缩写,即条件跳转指令,其功能是当指定的条件(如触点通断)满足时,程序指针跳转到指定的目标地址,因此 A、C、D 错误,B 正确。
课堂练习
2.执行 CJ 指令时,若跳转条件不满足,程序将( )
A. 停止执行
B. 跳转到目标地址
C. 继续执行 CJ 指令的下一条指令
D. 回到主程序起始点
答案:C
解析:CJ 指令的执行逻辑是 “条件满足则跳转,不满足则顺序执行”,若跳转条件(如 X0 未接通)不满足,程序不会跳转,而是按照原顺序执行 CJ 指令的下一条指令,因此 A、B、D 错误,C 正确。
课堂练习
3.以下关于 CJ 指令的目标地址,说法正确的是( )
A. 目标地址只能在主程序中
B. 目标地址可以在主程序、子程序或中断程序中
C. 目标地址只能在子程序中
D. 目标地址只能在中断程序中
答案:A
解析:CJ 是条件跳转指令,主要用于主程序内部的流程控制,其目标地址需在主程序范围内(即 FEND 指令之前);子程序内部的跳转通常用其他专用指令,中断程序的流程由中断触发和 IRET 控制,不使用 CJ 指令跳转,因此 B、C、D 错误,A 正确。
课堂练习
4.若主程序中未包含 FEND 指令,可能导致的后果是( )
A. 子程序无法被调用
B. 程序执行到主程序末尾后,会继续执行子程序或中断程序
C. 中断请求无法响应
D. 条件跳转指令失效
答案:B
解析:FEND 指令标记主程序的结束点,若主程序无 FEND,PLC 会认为主程序未结束,执行完主程序末尾指令后,会继续执行后续的子程序或中断程序(若存在),导致程序逻辑混乱;A 与 CALL 指令相关,C 与 EI/DI 相关,D 与 CJ 自身条件相关,因此 B 正确。
课堂练习
5.以下指令中,必须在子程序内部使用的是( )
A. CALL
B. SRET
C. IRET
D. FEND
答案:B
解析:子程序的功能是被主程序调用后执行特定任务,执行完后需返回主程序,因此子程序内部必须包含 SRET 指令;CALL 在主程序中调用子程序,IRET 在中断程序中使用,FEND 在主程序末尾使用,因此 A、C、D 错误,B 正确。
课堂练习
6.执行 EI 指令后,PLC 会( )
A. 立即执行中断程序
B. 允许响应后续到来的中断请求
C. 清除所有未响应的中断请求
D. 结束当前正在执行的中断程序
答案:B
解析:EI 指令仅 “允许” 中断响应,不直接触发中断程序,只有当 EI 指令执行后,且有中断信号产生时,PLC 才会响应中断;A 需要中断信号触发,C 不是 EI 的功能,D 是 IRET 的功能,因此 B 正确。
课堂练习
7.若在执行关键程序段时,不希望被中断干扰,正确的指令顺序是( )
A. EI→关键程序段→DI
B. DI→关键程序段→EI
C. 关键程序段→DI→EI
D. DI→EI→关键程序段
答案:B
解析:为避免中断干扰关键程序段,需先执行 DI 指令禁止中断,确保关键程序段执行过程中无中断插入;关键程序段执行完毕后,再执行 EI 指令重新允许中断,因此 A、C、D 顺序错误,B 正确。
课堂练习
8.以下关于 CJ 指令的跳转条件,说法错误的是( )
A. 跳转条件可以是常开触点(如 X0 接通)
B. 跳转条件可以是常闭触点(如 X1 断开)
C. 跳转条件可以是 P 元件的输出(如 P0 ON)
D. CJ 指令无需跳转条件,可直接跳转
答案:D
解析:CJ 是 “条件” 跳转指令,必须指定跳转条件(如触点通断、元件状态),只有条件满足时才会跳转,无跳转条件的 “无条件跳转” 需用其他专用指令(非 CJ),因此 A、B、C 正确,D 错误。
课后作业
什么是中断程序?EI(中断允许)指令与 DI(中断禁止)指令分别在中断控制中起到什么作用?
中断程序执行完毕后,需通过哪条指令返回主程序?该指令与 SRET 指令的核心区别是什么?
CJ(条件跳转)指令的执行逻辑是什么?若跳转条件满足,程序会如何执行?若条件不满足,又会如何执行?
课堂小结
$