西门子模块6ES7334-0CE01-0AA0技术参数
程序控制类指令使程序结构灵活,合理使用该指令可以优化程序结构,增强程序功能。这类指令主要包括:结束、停止、看门狗、跳转、子程序、循环和顺序控制等指令。
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(WatchdogReset)
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 toLabel):当输入端有效时,使程序跳转到标号处执行。
标号指令LBL(Label):指令跳转的目标标号。操作数n为0—255。
使用说明:
(1)跳转指令和标号指令必须配合使用,只能使用在同一程序段中,如主程序、同一个子程序或同一个中断程序。不能在不同的程序段中互相跳转。
(2)执行跳转后,被跳过程序段中的各元器件的状态:
①Q、M、S、C等元器件的位保持跳转前的状态;
②计数器C停止计数,当前值存储器保持跳转前的计数值;
③对定时器来说,因刷新方式不同而工作状态不同。在跳转期间,分辩率为1 ms和10ms的定时器会一直保持跳转前的工作状态,原来工作的继续工作,到设定值后其位的状态也会改变,输出触点动作,其当前值存储器一直累计到大值32767才停止。对分辨率为100ms的定时器来说,跳转期间停止工作,但不会复位,存储器里的值为跳转时的值,跳转结束后,若输入条件允许,可继续计时,但已失去了准确计时的意义。在跳转段里的定时器要慎用。跳转指令的使用方法如图2所示。
图2 跳转指令
5、循环指令(FOR和NEXT)
循环指令的引入为解决重复执行相同功能的程序段提供了极大方便,并且优化了程序结构。循环指令有两条:循环开始指令FOR,用来标记循环体的开始,用指令盒表示。循环结束指令NEXT,用来标记循环体的结束。无操作数。
FOR和NEXT之间的程序段称为循环体,每执行一次循环体,当前计数值增1,并且将其结果同终值作比较,如果大于终值,则终止循环。
循环开始指令盒中有三个数据输入端:当前循环计数INDX(index value or currentloop count)、循环初值INIT(starting value)和循环终值FINAL(endingvalue)。在使用时必须给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—200PLC的指令系统具有简单、方便、灵活的子程序调用功能。与子程序有关的操作有:建立子程序、子程序的调用和返回。
(1)建立子程序
建立子程序是通过编程软件来完成的。可用编程软件“编辑”菜单中的“插入”选项,选择“子程序”,以建立或插入一个新的子程序,在指令树窗口可以看到新建的子程序图标,默认的程序名是SBR_N,编号N从0开始按递增顺序生成,也可以在图标上直接更改子程序的程序名,把它变为更能描述该子程序功能的名字。在指令树窗口双击子程序的图标就可进入子程序,并对它进行编辑。
(2)子程序调用指令CALL和子程序条件返回指令CRET
在子程序调用指令CALL使能输入有效时,主程序把程序控制权交给子程序。子程序的调用可以带参数,可以不带参数。它在梯形图中以指令盒的形式编程。
在子程序条件返回指令CRET使能输入有效时,结束子程序的执行,返回主程序中(此子程序调用的下一条指令)。梯形图中以线圈的形式编程,指令不带参数。
(3)应用举例
图7.37所示的程序实现用外部控制条件分别调用两个子程序。使用说明:
①CRET多用于子程序的内部,由判断条件决定是否结束子程序调用,RET用于子程序的结束。用Micro/Win32编程时,编程人员不需要手工输入RET指令,而是由软件自动加在每个子程序结尾。
②子程序嵌套如果在子程序的内部又对另一子程序执行调用指令,则这种调用称为子程序的嵌套。子程序的嵌套深度多为8级。
③当一个子程序被调用时,系统自动保存当前的堆栈数据,并把栈顶置1,堆栈中的其他值为o,子程序占有控制权。子程序执行结束,通过返回指令自动恢复原来的逻辑堆栈值,调用程序又重新取得控制权。
④累加器可在调用程序和被调用子程序之间自由传递,累加器的值在子程序调用时既不保存也不恢复。
西门子S7—200系列plc的计数器分为一般用途计数器和高速计数器两大类。一般用途计数器用来累计输入脉冲的个数,其计数速度较慢,其输入脉冲频率必须要小于PLC程序扫描频率,一般高为几百HZ,在实际应用中主要用来对产品进行计数等控制任务。高速计数器主要用于对外部高速脉冲输入信号进行计数,例如在定位控制系统中,位置编码器的位置反馈脉冲信号一般高达几KHZ,有时甚至达几十KHZ,远远高于PLC程序扫描频率,这时一般的计数器已经无能为力,PLC对于这样的高速脉冲输入信号计数采用的是与程序扫描周期无关的中断方式来实现的。由于篇幅有限,这里只介绍一般用途计数器。 1、计数器种类和编号 S7—200系列PLC的计数器有3种:增计数器CTU、增减计数器CTUD和减计数器CTD。 计数器的编号用计数器名称和数字(0~255)组成,即C×××,如C6。计数器的编号包含两方面的信息:计数器的位和计数器当前值。计数器位和继电器一样是一个开关量,表示计数器是否发生动作的状态。当计数器的当前值达到设定值时,该位被置位为ON。计数器当前值是一个存储单元,它用来存储计数器当前所累计的脉冲个数,用16位符号整数来表示,大数值为32767。 计数器的设定值输入数据类型为INT型。寻址范围:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。一般情况下使用常数作为计数器的设定值。 2、计数器指令使用说明 计数器指令的LAD和STL格式如表所列。 表7.11 计数器指令的LAD和STL形式 格式名称增计数器增减计数器减计数器LADSTLCTU C***, PVCTUD C***, PVCTD C***, PV(1)增计数器CTU(Count Up) 扫描时,计数器位为OFF,当前值为0。在计数脉冲输入端CU的每个上升沿,计数器计数1次,当前值增加一个单位。当前值达到设定值时,计数器位ON,当前值可继续计数到32767后停止计数。复位输入端有效或对计数器执行复位指令,计数器复位,即计数器位为OFF,当前值为0。图1所示为增计数器的用法。需要注意:在语句表中,CU、R的编程顺序不能错误。 (2)减计数器CTD(Count Down) 扫描时,计数器位为OFF,当前值为预设定值PV。对CD输入端的每个上升沿计数器计数1次,当前值减少一个单位,当前值减小到0时,计数器位置位为ON,当前值停止计数保持为0。复位输入端有效或对计数器执行复位指令,计数器复位,即计数器位OFF,当前值复位为设定值。图2所示为减计数器的用法。
图1 增计数器指令
图2 减计数器指令 (3)增、减计数器CTUD(CountUp/Down) 增减计数器有两个计数脉冲输入端:CU输入端用于递增计数,CD输入端用于递减计数。扫描时,定时器位为OFF,当前值为0。CU输入的每个上升沿,计数器当前值增加1个单位;CD输入的每个上升沿,都使计数器当前值减小1个单位,当前值达到设定值时,计数器位置位为ON。 增减计数器当前值计数到32767(大值)后,下一个CU输入的上升沿将使当前值跳变为小值(-32 768);当前值达到小值-32768后,下一个CD输入的上升沿将使当前值跳变为大值32767。复位输入端有效或使用复位指令对计数器执行复位操作后,计数器复位,即计数器位OFF,当前值为0。图3所示为增、减计数器的用法。
图3 增减计数器指令 |