3.6 程序控制类指令及案例
程序控制类指令用于程序结构及流程的控制,它主要包括跳转/标号指令、子程序指令等。
跳转/标号指令
(1)指令格式
跳转/标号指令用来跳过部分程序使其不执行,必须用在同一程序块内部实现跳转。跳转/标号指令有两条,分别为跳转指令(JMP)和标号指令(LBL),具体如图3-39所示。
图3-39 跳转/标号指令的指令格式
(2)工作原理及应用案例
跳转/标号指令工作原理及应用案例如图3-40所示。
图3-40 跳转/标号指令工作原理及应用案例
(3)使用说明
① 跳转/标号指令必须匹配使用,而且只能使用在同一程序块中,如主程序、同一子程序或同一中断程序,不能在不同的程序块中互相跳转。
② 执行跳转后,被跳过程序段中的各元器件的状态为:
a. Q、M、S、C等元器件的位保持跳转前的状态。
b.计数器C停止计数,当前值存储器保持跳转前的计数值。
c.对于定时器来说,因刷新方式不同而工作状态不同。在跳转期间,分辨率为1ms和10ms的定时器会一直保持跳转前的工作状态,原来工作的继续工作,到预置值后,其位的状态也会改变,输出触点动作,其当前值存储器一直累计到最大值32767才停止;对于分辨率为100ms的定时器来说,跳转期间停止工作,但不会复位,存储器里的值为跳转时的值,跳转结束后,若输入条件允许,可继续计时,但已失去了准确值的意义。所以在跳转段里的定时器要慎用。
d.由于跳转指令具有选择程序段的功能,在同一程序且位于因跳转而不会被同时执行程序段中的同一线圈,不被视为双线圈。
e.跳转指令和标号指令必须成对出现,且可以有多条跳转指令使用同一标号,但不允许一个跳转指令对应两个标号的情况,即在同一程序中不允许存在两个相同的标号。
子程序指令
S7-200 SMART PLC的控制程序由主程序、子程序和中断程序组成。
(1)S7-200 SMART PLC程序结构
① 主程序 主程序(OB1)是程序的主体。每个项目都必须并且只能有一个主程序,在主程序中可以调用子程序和中断程序。
② 子程序 子程序是指具有特定功能并且多次使用的程序段。子程序仅在被其他程序调用时执行,同一子程序可在不同的地方多次被调用,使用子程序可以简化程序代码和减少扫描时间。
③ 中断程序 中断程序用来及时处理与用户程序的执行无关的操作或者不能事先预测何时发生中断事件。中断程序是用户编制的,它不由用户程序来调用,而是在中断事件发生时由操作系统来调用。
图3-41是主程序、子程序和中断程序在编程软件STEP 7-Micro/WIN SMART V2.3中的位置,总是主程序在先,接下来是子程序和中断程序。
图3-41 软件中的主程序、子程序和中断程序
(2)子程序简介
① 子程序的作用与优点 子程序常用于需要多次反复执行相同任务的地方,只需要写一次子程序,当别的程序需要时就可以调用它,而无须重新编写该程序。
子程序的调用是有条件的,未调用时不会执行子程序中的指令,因此使用子程序可以减少程序扫描时间。子程序使程序结构简单清晰,易于调试、检查错误和维修,因此在编写复杂程序时,建议将全部功能划分为几个符合控制工艺的子程序块。
② 子程序的创建 打开编程软件,通常会有1个主程序、1个子程序和1个中断程序,如果需要多个时,可以采用下列方法之一创建子程序:
a.双击项目树中程序块前边的,将程序块展开,执行右键“插入→子程序”;
b.从编辑菜单栏中,执行“编辑→对象→子程序”;
c.从程序编辑器窗口上方的标签中,执行右键“插入→子程序”。
③ 子程序重命名 若要修改子程序的名称,可以右击项目树中的子程序图标,在弹出的菜单中选择“重命名”选项,输入想要的名称。
(3)指令格式
子程序指令有子程序调用指令和子程序返回指令两条,指令格式如图3-42所示。需要指出的是,程序返回指令由编程软件自动生成,无须用户编写,这点编程时需要注意。
图3-42 子程序指令的指令格式
(4)子程序调用
子程序调用由在主程序内使用的调用指令完成。当子程序调用允许时,调用指令将程序控制转移给子程序(SBR_N),程序扫描将转移到子程序入口处执行。当执行子程序时,子程序将执行全部指令直到满足条件才返回,或者执行到子程序末尾而返回。当子程序返回时,返回到原主程序出口的下一条指令执行,继续往下扫描程序,如图3-43所示。
图3-43 子程序调用示意图
(5)子程序指令应用案例
例:两台电动机选择控制。
① 控制要求 按下系统启动按钮,为两台电动机选择控制做准备。当选择开关常开触点接通时,按下电动机M1启动按钮,电动机M1工作;当选择开关常闭触点接通时,按下电动机M2启动按钮,电动机M2工作;按下停止按钮,无论是电动机M1还是M2都停止工作。用子程序指令实现以上控制功能。
② 程序设计
a.两台电动机选择控制I/O分配如表3-9所示。
表3-9 两台电动机选择控制I/O分配
b.绘制梯形图:两台电动机选择控制梯形图程序如图3-44所示。
图3-44 两台电动机选择控制梯形图程序
综合案例——3台电动机顺序控制
(1)控制要求
按下启动按钮SB1,电动机M1、M2、M3间隔3s顺序启动;按下停止按钮SB2,电动机M1、M2、M3间隔3s顺序停止。
(2)程序设计
① 3台电动机顺序控制I/O分配如表3-10所示。
表3-10 3台电动机顺序控制I/O分配
② 梯形图程序
a.解法(一):用跳转/标号指令编程。
图3-45为用跳转/标号指令设计3台电动机顺序控制梯形图程序。
图3-45 用跳转指令设计3台电动机顺序控制梯形图程序
b.解法(二):用子程序指令编程。
图3-46为用子程序指令设计3台电动机顺序控制梯形图程序。该程序分为主程序、电动机顺序启动和顺序停止的子程序。
图3-46 用子程序指令设计3台电动机顺序控制梯形图程序