购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6 程序控制指令

1.JMP(JMPN)及LABEL指令

在没有执行跳转指令时,各个程序段按从上到下的先后顺序执行,这种执行方式称为线性扫描。跳转指令可以中止程序的线性扫描,跳转到指令中的地址标签所在的目的地址。跳转时不执行跳转指令与标签之间的程序,跳到目的地址后,程序继续按线性扫描的方式顺序执行。跳转指令可以往前跳,也可以往后跳。

只能在同一个代码块内跳转,即跳转指令与对应的跳转目的地址应在同一个代码块内。在一个块内,同一个跳转目的地址只能出现一次,即可以从不同的程序段跳转到同一个标签处,同一代码块内不能出现重复的标签。

JMP为1时的跳转指令,如果跳转条件满足(图2-27中I0.0的常开触点闭合),监控时JMP(Jump,为“1”时块中跳转)指令的线圈通电(跳转线圈为绿色),跳转被执行,将跳转到指令给出的标签abc处,执行标签之后的第一条指令。被跳过的程序段的指令没有被执行,这些程序段的梯形图为灰色。标签在程序段的开始处(单击指令树“基本指令”文件夹中“程序控制操作”指令文件夹下的图标,便在程序段的下方梯形图的上方出现,然后双击问号可输入标签名),标签的第一个字符必须是字母,其余的可以是字母、数字和下画线。如果跳转条件不满足,将继续执行下一个程序段的程序。

图2-27 JMP和RET指令应用示例

JMP为0时的跳转指令,即为“0”时块中跳转,该指令的线圈断电时,将跳转到指令给出的标签处,执行标签之后的第一条指令。

视频“跳转及标签指令”可通过扫描二维码2-10播放。

2-10 跳转及标签指令

2.RET指令

RET(返回)指令的线圈通电时,停止执行当前的块,不再执行指令后面的程序,返回调用它的块后,执行调用指令后的程序,如图2-27所示。RET指令的线圈断电时,继续执行它下面的程序。RET线圈上面是块的返回值,数据类型是Bool。如果当前的块是OB,则返回值被忽略。如果当前是函数FC或函数块FB,返回值作为函数FC或函数块FB的ENO的值传送给调用它的块。

一般情况下并不需要在块结束时使用RET指令来结束块,操作系统将会自动完成这一任务。RET指令用来有条件地结束块,一个块可以使用多条RET指令。

3.JMP_LIST及SWITCH指令

使用JMP_LIST(定义跳转列表)指令可定义多个有条件跳转,执行由K参数值指定的程序段中的程序。

可使用跳转标签定义跳转,跳转标签可以用指令框的输出指定。可在指令框中增加输出的数量(默认输出只有两个),S7-1200 CPU最多可以声明32个输出。

输出编号从“0”开始,每增加一个新输出,都会按升序连续递增。在指令的输出中只能指定跳转标签,而不能指定指令或操作数。

K参数值将指定输出编号,因而程序将从跳转标签处继续执行。如果K参数值大于可用的输出编号,则继续执行块中下个程序段中的程序。

在图2-28中,当K参数值为1时,程序跳转至目标输出DEST1(Destination,目的地)所指定的标签处SZY开始执行。

图2-28 JMP_LIST和SWITCH指令应用示例

使用SWITCH(跳转分支,又称为跳转分配器)指令可根据一个或多个比较指令的结果,定义要执行的多个程序跳转。在参数K中指定要比较的值,将该值与各个输入值进行比较。可以为每个输入选择比较运算符。

各比较指令的可用性取决于指令的数据类型,可以从指令框的“<???>”下拉列表中选择该指令的数据类型。如果选择了一种比较指令并且尚未定义该指令的数据类型,则“<???>”下拉列表中仅提供所选比较指令允许的数据类型。

该指令从第一个比较开始执行,直至满足比较条件为止。如果满足比较条件,则将不考虑后续比较条件。如果不满足任何指定的比较条件,则将执行输出ELSE处的跳转,如果输出ELSE中未定义程序跳转,则程序从下一个程序段继续执行。

可在指令功能框中增加输出的数量。输出编号从“0”开始,每增加一个新输出,都会按升序连续递增。在指令的输出中指定跳转标签(LABEL)。不能在该指令的输出上指定指令或操作数。

每个增加的输出都会自动插入一个输入。如果满足输入的比较条件,则将执行相应输出处设定的跳转。

在图2-28中,当参数K值为6时,满足大于5的条件,则程序跳转至目标输出DEST1所指定的标签处WLY开始执行。

4.RE_TRIGR指令

监控定时器又称为看门狗(Watchdog),每次扫描循环它都会被自动复位一次,正常工作时,最大扫描循环时间小于监控定时器的时间设定值时,因此它不会起作用。

以下情况扫描循环时间可能大于监控定时器的设定时间,监控定时器将会起作用:

1)用户程序太长。

2)一个扫描循环内执行中断程序的时间很长。

3)循环指令执行的时间太长。

可以在程序中的任意位置使用RE_TRIGR(重置周期监控时间,或称重新触发循环周期监控时间)指令,来复位监控定时器,如图2-29所示。该指令仅在优先级为1的程序循环OB和它调用的块中起作用;该指令在OB80中将被忽略。如果在优先级较高的块中(例如硬件中断、诊断中断和循环中断OB)调用该指令,使能输出ENO将被置为0,不执行该指令。

在组态CPU时,可以用参数“周期”设置循环周期监控时间,即最大循环时间,默认值为150ms,最大设置值为6000ms。

5.STP指令

STP指令的EN输入为“1”状态时,使PLC进入STOP模式。执行STP指令后,将使CPU集成的输出、信号板和信号模块的数字量输出或模拟量输出进入组态时设置的安全状态。可以使输出冻结在最后的状态,或将替代值设置为安全状态,如图2-30所示,组态模拟量输出与此类似。默认的数字量输出状态为FALSE,默认的模拟量输出为“0”。

图2-29 RE_TRIGR和STP应用示例

图2-30 组态数字量输出点 S7UkQnB0gFo0aN9c4gYeWrl3KFfgJifumv+CXucIn3hHxXDh6EQ2SAmLuXYWM3jz

点击中间区域
呼出菜单
上一章
目录
下一章
×