第九章 程序控制类指令及应用_第1页
第九章 程序控制类指令及应用_第2页
第九章 程序控制类指令及应用_第3页
第九章 程序控制类指令及应用_第4页
第九章 程序控制类指令及应用_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第九章 程序控制类指令及应用,学习目标: 了解循环指令及其功能。 掌握顺序控制继电器指令及状态法编程。 了解子程序指令分类,执行过程及子程序的嵌套。 掌握中断与中断源,中断优先级及中断队列,中断指令及中断程序,中断程序的执行及程序数据共享,中断指令应用举例。,第一节 跳转指令,一、 跳转与标号指令,跳转指令可以使PLC编程的灵活性大大提高,使主机可根据不同条件的判断,选择不同的程序段执行程序。 JMP,跳转指令。使能输入有效时,使程序跳转到标号(n)处执行。 LBL,标号指令。标记指令跳转的目的地的位置(n)。操作数n为0255。,跳转指令的使用说明: 跳转指令和标号指令必须配合使用,而且只能

2、使用在同一程序块中。不能在不同的程序块间互相跳转; 执行跳转后,被跳过程序段中的各元器件的状态各有不同:Q、M、S、C等元器件的位保持跳转前的状态;计数器C停止计数,当前值存储器保持跳转前的计数值;对定时器来说,因刷新方式不同而工作状态不同。在跳转期间,分辩率为1ms和10ms的定时器会一直保持跳转前的工作状态,原来工作的继续工作,到设定值后其位的状态也会改变,输出触点动作,其当前值存储器一直累计到最大值32767才停止。对分辨率为100ms的定时器来说,跳转期间停止工作,但不会复位,存储器里的值为跳转时的值,跳转结束后,若输入条件允许,可继续计时,但已失去了准确计时的意义。所以在跳转段里的定

3、时器要慎用。,第二节 循环指令 循环指令的引入为解决重复执行相同功能的程序段提供了极大方便,并且优化了程序结构。循环指令有两条:FOR和NEXT。 FOR,循环开始指令。用来标记循环体的开始。 NEXT,循环结束指令。用来标记循环体的结束。无操作数。 FOR和NEXT之间的程序段称为循环体,每执行一次循环体,当前计数值增1,并且将其结果同终值进行比较,如果大于终值,则终止循环。,循环指令使用说明:,FOR、NEXT指令必须成对使用; FOR和NEXT可以循环嵌套,嵌套最多为8层,但各个嵌套之间不可有交叉现象; 每次使能输入(EN)重新有效时,指令将自动复位各参数; 初值大于终值时,循环体不被执

4、行。,在使用时必须给FOR指令指定当前循环计数(INDX)、初值(INIT)和终值(FINAL)。 指令格式:FOR INDX, INIT, FINAL NEXT,第三节 顺控继电器指令,S7-200 CPU含有256个顺序控制继电器(SCR)用于顺序控制。S7-200包含顺序控制指令,可以模仿控制进程的步骤,对程序逻辑分段;可以将程序分成单个流程的顺序步骤,也可同时激活多个流程;可以使单个流程有条件地分成多支单个流程,也可以使多个流程有条件地重新汇集成单个流程。从而对一个复杂的工程可以十分方便地编制控制程序。 系统提供3个顺序控制指令:顺序控制开始指令(LSCR)、顺序控制转移指令(SCRT

5、)和顺序控制结束指令(SCRE)。,1. 顺序继电器指令 (1)段开始指令:LSCR 定义一个顺序控制继电器段的开始。操作数为顺序控制继电器位Sx.y,Sx.y作为本段的段标志位。当Sx.y位为1时,允许该SCR段工作。 (2)段结束指令:SCRE 一个SCR段必须用该指令来结束。 (3)段转移指令:SCRT 该指令用来实现本段与另一段之间的切换。操作数为顺序控制继电器位Sx.y,Sx.y是下一个SCR段的标志位。当使能输入有效时,一方面对Sx.y置位,以便让下一个SCR段开始工作,另一方面同时对本SCR段的标志位复位,以便本段停止工作。,2. 使用顺序继电器指令的限制 只能使用顺序控制继电器

6、位作为段标志位。一个顺序控制继电器位Sx.y在程序中只能使用一次。 在一个SCR段中不能出现跳入、跳出或段内跳转等程序结构。即在段中不能使用JMP和LBL指令。同样,在一个SCR段中不允许出现循环程序结构和条件结束,即禁止使用FOR、NEXT和END指令。 指令格式: LSCR bit (段开始指令) SCRT bit (段转移指令) SCRE (段结束指令),3. 顺序结构 一个SCR段必须用该指令来结束。 4. 程序实例 根据舞台灯光效果的要求,控制红、绿、黄三色灯。要求:红灯先亮,2s后绿灯亮,再过3s后黄灯亮。待红、绿、黄灯全亮3min后,全部熄灭。程序如图5-29所示。 说明:每一个

7、SCR程序段中均包含三个要素: 1)输出对象:在这一步序中应完成的动作; 2)转移条件:满足转移条件后,实现SCR段的转移; 3)转移目标:转移到下一个步序。,LD I0.1 AN Q0.0 AN Q0.1 AN Q0.2 /在初始状态下起动,置 S S0.1,1 /S0.1=1 LSCR S0.1 /S0.1=1,激活第一SCR程序段, /进入第一步序 LD SM0.0 S Q0.0,1 /红灯亮,并保持 TON T37,+20 /启动2s定时器 LD T37 /2s后程序转移到第二SCR段, SCRT S0.2 /(S0.2=1,S0.1=0) SCRE / 第一SCR段结束 LSCR S

8、0.2 /S0.2=1,激活第二SCR程序段, /进入第二步序 LD SM0.0 S Q1.1 /绿灯亮,并保持 TON T38,+30 /启动3s定时器,第四节 子程序调用与返回指令 与子程序有关的操作有:建立子程序、子程序的调用和返回。 (1)建立子程序 (2)子程序调用,建立子程序是通过编程软件来完成的。可用编程软件“编辑”菜单中的“插入”选项,选择“子程序”,以建立或插入一个新的子程序,同时,在指令树窗口可以看到新建的子程序图标,默认的程序名是SBR_N,编号N从0开始按递增顺序生成,也可以在图标上直接更改子程序的程序名,把它变为更能描述该子程序功能的名字。在指令树窗口双击子程序的图标

9、就可以进入子程序,并对它进行编辑。,CALL,子程序调用指令。在使能输入有效时,主程序把程序控制权交给子程序。子程序的调用可以带参数,也可以不带参数。它在梯形图中以指令盒的形式编程。 指令格式:CALL SBR_0,(3)子程序返回 子程序调用使用说明:,CRET,子程序条件返回指令。在使能输入有效时,结束子程序的执行,返回主程序中(指向子程序调用的下一条指令)。梯形图中以线圈的形式编程,指令不带参数; RET,子程序无条件返回指令。 指令格式: CRET (条件返回) RET (无条件返回),子程序结束要加上无条件返回指令RET。CRET指令只能用于子程序中; 如果在子程序的内部又对另一个程

10、序执行调用指令,则这种调用称为子程序的嵌套。子程序嵌套的深度最多为8级; 当一个子程序被调用时,系统自动保存当前的逻辑堆栈数据,并把栈顶置1,堆栈中的其它位置设为0,子程序占有控制权。子程序执行结束,通过返回指令自动恢复原来的逻辑堆栈值,调用程序又重新取得控制权; 累加器可在调用程序和被调用子程序之间自由传递,所以累加器的值在子程序调用时既不保存也不恢复。,(3)带参数的子程序调用 局部变量表中的变量类型区定义的变量有:,子程序中可以有参变量,带参数的子程序调用扩大了子程序的使用范围,增加了调用的灵活性。子程序的调用过程如果存在数据的传递,则在调用指令中应包含相应的参数。 子程序的参数在子程序

11、的局部变量表中加以定义。参数包含的信息有地址、变量名(符号)、变量类型和数据类型。子程序最多可以传递16个参数。,传入子程序参数IN。IN可以是直接寻址数据(如:VB10)、间接寻址数据(如:*AC1)、常数(如:161234)或地址(如:&VB100); 传入/传出子程序参数IN/OUT。调用子程序时,将指定参数位置的值传到子程序,子程序返回时,从子程序得到的结果被返回到指定参数的地址。参数可采用直接寻址和间接寻址,但常数和地址不允许作为输入/输出参数;,7. 与ENO指令,AENO ,与ENO指令。ENO是LAD中指令盒的布尔能流输出端。如果指令盒的能流输入有效,则执行没有错误,ENO就置

12、位,并将能流向下传递。ENO可以作为允许位表示指令成功执行。 STL指令没有EN输入,但对要执行的指令,其栈顶值必须为1。可用“与”ENO(AENO)指令来产生指令盒中的ENO位相同的功能。 指令格式:AENO AENO指令无操作数,且只在STL中使用,它将栈顶值和ENO位进行逻辑与运算,运算结果保存到栈顶。,传出子程序参数OUT。将从子程序来的结果返回到指定参数的位置。输出参数可以采用直接寻址和间接寻址,但不可以是常数或地址; 暂时变量TEMP。只能在子程序内部暂时存储数据,不能用来传递参数。,程序实例:,与ENO指令举例,上图的语句表及注释如下: LD I0.0 /使能输入端 +I VW1

13、00, VW200 /整数加法,VW100+VW200VW200 AENO /与ENO指令 ATCH INT_0, 10 /如果+I指令执行正确,则调用中断程序INT_0, /中断号为10,第五节 中断指令,所谓中断,是当控制系统执行正常程序时,系统中出现了某些急需处理的异常情况或特殊请求,这时系统暂时中断当前程序,转去对随机发生的紧迫事件进行处理(执行中断服务程序),当该事件处理完毕后,系统自动回到原来被中断的程序继续执行。 (1)全局中断允许/禁止指令,ENI,全局中断允许指令。全局性的允许所有被连接的中断事件。 DISI,全局中断禁止指令。全局性的禁止处理所有的中断事件。执行DISI指令

14、后,出现的中断事件就进入中断队列排队等候,直到ENI指令重新允许中断。 CPU进入RUN运行模式时自动禁止所有中断。在RUN运行模式中执行ENI指令后,允许所有中断。,(2)中断连接/分离指令,ATCH,中断连接指令。用来建立某个中断事件(EVNT)和某个中断程序(INT)之间的联系。并允许这个中断事件。 指令格式:DTCH EVENT 在调用一个中断程序前,必须用中断连接指令,建立某中断事件与中断程序的连接。当把某个中断事件和中断程序建立连接后,该中断事件发生时会自动开中断。多个中断事件可调用同一个中断程序,但一个中断事件不能同时与多个中断程序建立连接。否则,在中断允许且某个中断事件发生时,

15、系统默认执行与该事件连接的最后一个中断程序。 DTCH,中断分离指令。用来解除某个中断事件(EVNT)和某个中断程序(INT)之间的联系。并禁止该中断事件。DTCH指令使中断回到不激活或无效状态。 指令格式:DTCH EVENT,(3)中断服务程序标号/返回指令,中断服务程序由标号开始,以无条件返回指令结束。内部或外部的中断事件调用相应的中断服务程序。在中断服务程序中,用户亦可根据前面逻辑条件使用条件返回指令,返回主程序。但中断服务程序必须以无条件返回指令作结束。中断服务程序中禁止使用以下指令:DISI、ENI、CALL、HDEF、FOR/NEXT、LSCR、SCRE、SCRT、END。 中断

16、前后,系统保存和恢复逻辑堆栈、累加寄存器、特殊存储器标志位(SM)。从而避免了中断服务返回后对主程序执行现场所造成的破坏。 INT n,中断服务程序标号指令。中断服务程序标号INT标示n号中断服务程序的开始(入口)。n的范围是0127(取决于CPU的型号)。 CRETI,中断服务程序条件返回指令。CRETI根据前面逻辑条件决定是否返回。 RETI,中断服务程序无条件返回指令。RETI是中断服务程序必备的结束指令。 定时中断采集模拟量程序见下图。,LD SM0.1 /首次扫描时SM0.1位打 /开,用于调用初始化子例行程序 CALL SBR_0 /调用子程序SBR_0 LD SM0.0 /当系统

17、处于RUN模式 /时,SM0.0始终打开(即SM0.01) MOVB 100, SMB34 /100毫秒放入特 /殊内存字节SMB34(SMB34和SMB35控 /制中断0和中断1的时间间隔) ATCH INT_0, 10 /调用中断程序 ENI /全局性启用中断 LD SM0.0 /RUN模式下,SM0.01 MOVW AIW2, VW100 /模拟量输入映 /像寄存器AIW2的值装入VW100,定 时 中 断 采 集 模 拟 量 程 序 例,LD I0.1 AN Q0.0 AN Q0.1 AN Q0.2 /在初始状态下起动,置 S S0.1,1 /S0.1=1 LSCR S0.1 /S0.1=1,激活第一SCR程序段, /进入第一步序 LD SM0.0 S Q0.0,1 /红灯亮,并保持 TON T37,+20 /启动2s定时器 LD T37 /2s后程序转移到第二SCR段, SCRT S0.2 /(S0.2=1,S0.1=0) SCRE / 第一SCR段结束 LSCR S0.2 /S0.2=1,激活第二SCR程序段, /进入第二步序 LD SM0.0 S Q1.1 /绿灯亮,并保持 TON T38,+30 /启动3s定时器,LD T38 /3s后程序转移到第三SCR段, SCRT S0.3 /(S0.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论