西门子plc程序控制指令的分类与功能说明

作者:老电工时间:2020年04月23日 10:41

有关西门子plc程序控制指令,西门子plc程序控制指令分为结束指令END、停止指令STOP、看门狗复位指令WDR、跳转及标号指令、循环指令(FOR和NEXT)等,这些指令的用应实例。

西门子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所示。 

西门子plc程序控制指令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所示。 

西门子plc程序控制指令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)初值大于终值时,循环体不被执行。 

西门子plc程序控制指令3

图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,子程序占有控制权。子程序执行结束,通过返回指令自动恢复原来的逻辑堆栈值,调用程序又重新取得控制权。

④累加器可在调用程序和被调用子程序之间自由传递,所以累加器的值在子程序调用时既不保存也不恢复。 

西门子plc程序控制指令4

图7.38 子程序调用指令

猜你喜欢

相关文章

西门子plc排行