西门子PLC程序控制指令

  • A+
所属分类:西门子PLC
  程序控制类指令使程序结构灵活,合理使用该指令可以优化程序结构,增强程序功能。这类指令主要包括:结束、停止、看门狗、跳转、子程序、循环和顺序控制等指令。
1、结束指令END
    结束指令分为有条件结束指令(END)和无条件结束指令(MEND)。两条指令在梯形图中以线圈形式编程。指令不含操作数。执行结束指令后,系统终止当前扫描周期,返回主程序起点。使用说明:
    (1)结束指令只能用在主程序中,不能在子程序和中断程序中使用。而有条件结束指令可用在无条件结束指令前结束主程序。
    (2)在调试程序时,在程序的适当位置置入无条件结束指令可实现程序的分段调试。
    (3)可以利用程序执行的结果状态、系统状态或外部设置切换条件来调用有条件结束指令,使程序结束。
    (4)使用Micro/Win32编程时,编程人员不需手工输入无条件结束指令,该软件会自动在内部加上一条无条件结束指令到主程序的结尾。
2、停止指令STOP 
    STOP指令有效时,可以使主机CPU的工作方式由RUN切换到STOP,从而立即中止用户程序的执行。STOP指令在梯形图中以线圈形式编程。指令不含操作数。
    STOP指令可以用在主程序、子程序和中断程序中。如果在中断程序中执行STOP指令,则中断处理立即中止,并忽略所有挂起的中断。继续扫描程序的剩余部分,在本次扫描周期结束后,完成将主机从RUN到STOP的切换。
    STOP和END指令通常在程序中用来对突发紧急事件进行处理,以避免实际生产中的意外损失。
3、看门狗复位指令WDR(Watchdog Reset)
    WDR称为看门狗复位指令,也称为警戒时钟刷新指令。它可以把警戒时钟刷新,即延长扫描周期,从而有效地避免看门狗超时错误。WDR指令在梯形图中以线圈形式编程,无操作数。
    使用WDR指令时要特别小心,如果因为使用WRD指令而使扫描时间拖得过长(如在循 环结构中使用WDR),那么在中止本次扫描前,下列操作过程将被禁止:
    (1)通讯(自由口除外);
    (2)I/O刷新(直接I/O除外);
    (3)强制刷新;
    (4)SM位刷新(SM0、SM5一SM29的位不能被刷新);
    (5)运行时间诊断;
    (6)扫描时间超过25 s时,使10 ms和100 ms定时器不能正确计时;
    (7)中断程序中的STOP指令。
    注意:如果希望扫描周期超过300ms,或者希望中断时间超过300ms,则最好用WDR指令来重新触发看门狗定时器。结束指令、停止指令和WDR指令的用法如图1所示。
 
图1 结束、停止及看门狗指令
4、跳转及标号指令
    跳转指令可以使PLC编程的灵活性大大提高,可根据对不同条件的判断,选择不同的程序段执行程序。
    跳转指令JMP(Jump to Label):当输入端有效时,使程序跳转到标号处执行。
    标号指令LBL(Label):指令跳转的目标标号。操作数n为0—255。
    使用说明:
    (1)跳转指令和标号指令必须配合使用,而且只能使用在同一程序段中,如主程序、同一个子程序或同一个中断程序。不能在不同的程序段中互相跳转。
    (2)执行跳转后,被跳过程序段中的各元器件的状态:
      ①Q、M、S、C等元器件的位保持跳转前的状态;
      ②计数器C停止计数,当前值存储器保持跳转前的计数值;
      ③对定时器来说,因刷新方式不同而工作状态不同。在跳转期间,分辩率为1 ms和10 ms的定时器会一直保持跳转前的工作状态,原来工作的继续工作,到设定值后其位的状态也会改变,输出触点动作,其当前值存储器一直累计到最大值32 767才停止。对分辨率为100 ms的定时器来说,跳转期间停止工作,但不会复位,存储器里的值为跳转时的值,跳转结束后,若输入条件允许,可继续计时,但已失去了准确计时的意义。所以在跳转段里的定时器要慎用。跳转指令的使用方法如图2所示。
 
图2 跳转指令
5、循环指令(FOR和NEXT)
    循环指令的引入为解决重复执行相同功能的程序段提供了极大方便,并且优化了程序结构。循环指令有两条:循环开始指令FOR,用来标记循环体的开始,用指令盒表示。循环结束指令NEXT,用来标记循环体的结束。无操作数。
    FOR和NEXT之间的程序段称为循环体,每执行一次循环体,当前计数值增1,并且将其结果同终值作比较,如果大于终值,则终止循环。
    循环开始指令盒中有三个数据输入端:当前循环计数INDX(index value or current loop count)、循环初值INIT(starting value)和循环终值FINAL(ending value)。在使用时必须给FOR指令指定当前循环计数(INDX)、初值(INIT)和终值(FINAL)。
    INDX操作数:VW、IW、QW、MW、SW、SMW、LW、T、c、AC、*VD、*AC和*CD;属INT型。
    INIT和FINAI。操作数:VW、IW、QW、MW、SW、SMW、LW、T、C、AC、常数、*VD、* AC和*CD;属INT型。
    循环指令使用如图3所示。当I1.0接通时,表示为A的外层循环执行100次。当I1.1接通时,表示为B的内层循环执行2次。使用说明:
    (1)FOR、NEXT指令必须成对使用。
    (2)FOR和NEXT可以循环嵌套,嵌套最多为8层,但各个嵌套之间不可有交叉现象。
    (3)每次使能输入(EN)重新有效时,指令将自动复位各参数。
    (4)初值大于终值时,循环体不被执行。
 
图4 循环指令
子程序
    子程序在结构化程序设计中是一种方便有效的工具。S7—200 PLC的指令系统具有简单、方便、灵活的子程序调用功能。与子程序有关的操作有:建立子程序、子程序的调用和返回。
    (1)建立子程序
    建立子程序是通过编程软件来完成的。可用编程软件“编辑”菜单中的“插入”选项,选择“子程序”,以建立或插入一个新的子程序,同时,在指令树窗口可以看到新建的子程序图标,默认的程序名是SBR_N,编号N从0开始按递增顺序生成,也可以在图标上直接更改子程序的程序名,把它变为更能描述该子程序功能的名字。在指令树窗口双击子程序的图标就可进入子程序,并对它进行编辑。
    (2)子程序调用指令CALL和子程序条件返回指令CRET
    在子程序调用指令CALL使能输入有效时,主程序把程序控制权交给子程序。子程序的调用可以带参数,可以不带参数。它在梯形图中以指令盒的形式编程。
    在子程序条件返回指令CRET使能输入有效时,结束子程序的执行,返回主程序中(此子程序调用的下一条指令)。梯形图中以线圈的形式编程,指令不带参数。
    (3)应用举例
    图7.37所示的程序实现用外部控制条件分别调用两个子程序。使用说明:
      ①CRET多用于子程序的内部,由判断条件决定是否结束子程序调用,RET用于子程序的结束。用Micro/Win32编程时,编程人员不需要手工输入RET指令,而是由软件自动加在每个子程序结尾。
      ②子程序嵌套 如果在子程序的内部又对另一子程序执行调用指令,则这种调用称为子程序的嵌套。子程序的嵌套深度最多为8级。
      ③当一个子程序被调用时,系统自动保存当前的堆栈数据,并把栈顶置1,堆栈中的其他值为o,子程序占有控制权。子程序执行结束,通过返回指令自动恢复原来的逻辑堆栈值,调用程序又重新取得控制权。
      ④累加器可在调用程序和被调用子程序之间自由传递,所以累加器的值在子程序调用时既不保存也不恢复。
 
图7.38 子程序调用指令
  • 营销微信
  • 报单询价扫一扫
  • weinxin
  • 技术微信
  • 技术问题扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: