程序控制指令中跳转指令、标签指令和返回指令比较常用。各指令的功能如下:
:如果有能流通过该指令线圈,则程序将从指定标签后的第一条指令继续执行。
:如果没有能流通过该指令线圈,则程序将从指定标签后的第一条指令继续执行。
:JMP 或JMPN 跳转指令的目标标签。
:用于终止当前块的执行。
在程序中设置跳转指令,可提高CPU 的程序执行速度。在没有执行跳转指令时,各个程序段按从上到下的先后顺序执行,这种执行方式称为线性扫描。跳转指令中止程序的线性扫描,跳转到指令中的地址标签所在的目的地址。跳转时不执行跳转指令与标签之间的程序,跳转到目的地址后,程序继续按线性扫描的方式顺序执行。跳转指令可以往前跳,也可以往后跳。只能在同一个代码块内跳转,即跳转指令与对应的跳转目的地址应在同一个代码块内。在一个块内,同一个跳转目的地址只能出现一次,即可以从不同的程序段跳转到同一个标签处,同一代码块内不能出现重复的标签。
图5-30所示为跳转指令的示例程序。当I0.0 接通时,如果跳转条件满足,JMP 指令的线圈通电,跳转被执行,将跳转到指令给出的标签abc1 处,执行标签之后的第一条指令。被跳过的程序段的指令没有被执行。标签在程序段的开始处,标签的第一个字符必须是字母,其余的可以是字母、数字和下划线。如果跳转条件不满足,将继续执行下一个程序段的程序。
在图5-30 程序中,RET (返回)指令的线圈通电时,停止执行当前的块,不再执行指令后面的程序,返回调用它的块后,执行调用指令后的程序。RET 指令的线圈断电时,继续执行它下面的程序。RET 线圈的上面是块的返回值,数据类型是Bool。如果当前的块是OB,返回值被忽略。如果当前的是函数FC 或函数块FB,返回值作为函数FC 或函数块FB的ENO 的值传送调用它的块。一般情况下并不需要在块结束时使用RET 指令来结束块,操作系统将会自动完成这一任务。RET 指令用来有条件地结束块,一个块可以使用多条RET指令。
程序控制指令中还有RE_TRIGR 指令、STP 指令、GET_ERROR 指令与GET_ERR_ID 指令、ENDIS_PW “启用/禁用CPU 密码”指令和RUNTIME “测量程序运行时间”指令。
图5-30 跳转指令的示例程序
1.RE_TRIGR 指令与STP 指令
监控定时器又称看门狗(Watchdog),每次扫描循环它都被自动复位一次,正常工作时最大扫描循环时间小于监控定时器的时间设定值,它不会起作用。如果出现用户程序很长,一个扫描循环内执行中断程序的时间很长,循环指令执行的时间很长等情况,扫描循环时间可能大于监控定时器的设定时间,则监控定时器将会起作用。可以在程序中的任意位置使用指令RE_TRIGR (重新启动周期监视时间)来复位监控定时器。在组态CPU 时,可以用参数“循环周期监视时间”设置允许的最大循环时间。
STP 指令的EN 输入端为1 状态时,PLC 进入STOP 模式。
2.GET_ERROR 指令与GET_ERR_ID 指令
“获取本地错误信息”指令GET-ERROR 用来提供有关程序块执行错误的信息。用输出参数“ERROR (错误)”显示程序块内发生的错误,该错误通常为访问错误。(www.xing528.com)
“获取本地错误ID”指令GET_ERR_ID 用来报告错误的ID (标识符)。如果块执行时出现错误,且指令的EN 输入为1 状态,则出现的第一个错误的ID 保存在指令的输出参数“ID”中,ID 的数据类型为Word。第一个错误消失时,指令输出下一个错误的ID。
S7-1200 PLC 中其他的程序控制指令说明请查看帮助文件或系统手册。
练习
1.指示灯循环点亮控制
以10 s为一个周期,依次循环点亮3 盏灯(Q0.1、Q0.2、Q0.3)。按下启动按钮I0.0,信号灯点亮情况:Q0.0 点亮3 s→Q0.1 点亮4 s→Q0.2 点亮3 s→Q0.0 再次点亮,依次不断循环;按下停止按钮I0.1,信号灯熄灭。
2.红绿灯亮灭循环控制
用PLC 控制3 种颜色灯:HL1 绿灯、HL2 黄灯、HL3 红灯,工作过程如下:
(1)HL1 灯亮1 s;
(2)HL1 灯暗,HL2 灯亮1 s;
(3)HL2 灯暗,HL3 灯亮1 s;
(4)3 个灯全暗1 s;
(5)3 个灯全亮1 s;
(6)3 个灯全暗1 s;
(7)3 个灯全亮1 s;
(8)3 个灯全暗1 s。
然后工作过程(1)~ (8)反复循环,用一个开关控制。开关闭合时灯工作,断开时停止工作。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。