7.2 程序流程类指令_第1页
7.2 程序流程类指令_第2页
7.2 程序流程类指令_第3页
7.2 程序流程类指令_第4页
7.2 程序流程类指令_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

7.2程序流程类指令目录条件跳转指令7.2.1子程序指令7.2.2中断指令7.2.3目录主程序结束指令7.2.4监视定时器刷新指令7.2.5循环程序指令7.2.67.2.1条件跳转指令CJ(FNC00)当CJ指令被激活时,它强制程序跳到已标识的目标指针处执行,而在CJ指令和目标指针之间的程序是被跳过不执行的,这意味着被跳过的程序不被处理,其结果是加快了程序操作的扫描时间。7.2.1条件跳转指令CJ(FNC00)如图所示,当X20接通时,则由CJ指令跳转到目标标号为P9的指令处开始执行,跳过CJ指令和目标标号之间的一段程序,减少了扫描周期。如果X20断开,跳转不会执行,则程序按原顺序执行。7.2.2子程序指令当CALL指令被激活时,它强制运行已分配了调用指针的子程序,执行子程序内容直到遇到一个SRET指令。SRET指令表示当前子程序结束,并将程序流返回调用当前子程序的CALL指令的下一程序步。子程序放在FEND(FNC06)指令和SRET(FNC02)指令之间。7.2.2子程序指令如图7-7所示,如果X0接通,则转到标号P10处去执行子程序。当执行SRET指令时,返回到CALL指令的下一步执行。7.2.3中断指令中断指令有中断允许、中断禁止和中断返回三条指令,如表7-3所示。中断子程序是程序的一部分。主程序在执行过程中,当有中断请求信号时,主程序若允许中断请求,则中断子程序被触发,主程序流程被立即打断,转而执行中断子程序。一旦中断子程序执行完,将回到主程序流程被打断的位置即断点处继续执行主程序。由于中断请求是机内外突发随机事件信号,时间很短,因此中断子程序的执行不受主程序运行周期的约束。FX2N系列PLC有三类中断:输入中断、定时器中断和计数器中断,并规定中断指针就是中断子程序的入口标号,该入口标号占据指令表的一行,不可重复使用。7.2.3中断指令7.2.3中断指令PLC通常处于禁止中断状态,由EI指令和DI指令组成允许中断范围。在执行到该区间,如有中断源产生中断,CPU将暂停主程序执行转而执行中断子程序。当遇到IRET时返回断点继续执行主程序。如图7-9所示,在允许中断范围中,若中断源X000有一个下降沿,则转入标号为I000的中断子程序,但X000可否引起中断还受M8050控制,当X020有效时则M8050控制X000无法中断。。7.2.3中断指令1、中断的优先级排队如下,如果多个中断依次发生,则以发生先后为序,即发生越早级别越高,如果多个中断源同时发出信号,则中断指针号越小优先级越高;2、当M8050~M8058为ON时,禁止执行相应I0□□~I8□□的中断,M8059为ON时则禁止所有计数器中断;3、无需中断禁止时,可只用EI指令,不必用DI指令;4、执行一个中断服务程序时,如果在中断服务程序中有EI和DI,可实现二级中断嵌套,否则禁止其它中断。使用中断相关指令时应注意:7.2.4主程序结束指令FEND(FNC06)主程序结束指令FEND表示主程序结束,如表7-4所示。当执行到FEND指令时,PLC进行输出处理、输入处理、监视定时器刷新后,返回程序的0步。子程序和中断服务程序应放在FEND之后。子程序和中断服务程序必须写在FEND和END之间,否则出错。7.2.4主程序结束指令FEND(FNC06)主程序结束指令的使用如图7-10所示。由图可见,(1)当X010为OFF时,不执行跳转指令,仅执行第一主程序到FEND,返回主程序0步;(2)当X010为ON时,执行跳转指令,跳到指针标号P20处,执行第二主程序,在这个主程序中,当X011为OFF时,不执行跳转指令,仅执行第二主程序到FEND,返回主程序0步;(3)当X011为ON时,调用指针标号为P21的子程序,子程序结束后,通过SRET指令返回原断点,继续执行第二主程序到FEND,返回主程序0步;7.2.4主程序结束指令FEND(FNC06)(4)标号为I100的中断子程序时独立于主程序执行的,当有外部中断请求时,中断主程序的执行,转去执行中断子程序,通过IRET返回主程序中断点,主程序继续执行到FEND,返回主程序0步。7.2.5监视定时器刷新指令WDT(FNC07)FX2N系列PLC的监视定时器缺省值为200ms(可用D8000来设定),正常情况下PLC扫描周期小于此定时时间,如表7-5所示。如果由于有外界干扰或程序本身的原因使扫描周期大于监视定时器的设定值,使PLC的CPU出错灯亮并停止工作,可通过在适当位置加WDT指令复位监视定时器,以使程序能继续执行到END。7.2.5监视定时器刷新指令WDT(FNC07)如图7-11所示,利用一个WDT指令将一个240ms的程序一分为二,使它们都小于200ms,则不再会出现报警停机。7.2.5监视定时器刷新指令WDT(FNC07)1、如果在后续的FOR-NEXT循环中,执行时间可能超过监控定时器的定时时间,可将WDT插入循环程序中。2、当与条件跳转指令CJ对应的指针标号在CJ指令之前时(即程序往回跳)就有可能连续反复跳步使它们之间的程序反复执行,使执行时间超过监控时间,可在CJ指令与对应标号之间插入WDT指令。使用WDT指令时应注意:7.2.6循环程序指令循环程序指令共有两条,如表7-6所示。在程序运行时,位于FOR~NEXT间的程序反复执行n次(由操作数决定)后再继续执行后续程序。循环的次数n=1~32767。如果N=-32767~0之间,则当作n=1处理。7.2.6循环程序指令如图7-12所示为一个二重嵌套循环,外层执行5次。如果D0Z0中的数为6,则外层A每执行一次则内层B将执行6次。7.2.6循环程序指令

温馨提示

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

评论

0/150

提交评论