第六章2程序流控制指令_第1页
第六章2程序流控制指令_第2页
第六章2程序流控制指令_第3页
第六章2程序流控制指令_第4页
第六章2程序流控制指令_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、一、条件跳转指令一、条件跳转指令 CJCJ二、子程序指令二、子程序指令 CALLCALL SRET SRET三、中断指令三、中断指令 IRETIRET EI EI DIDI四、主程序结束指令四、主程序结束指令 FENDFEND 五、警戒时钟定时器指令五、警戒时钟定时器指令 WDTWDT六、循环指令六、循环指令 FOXFOX NEXTNEXTv 操作数:指针操作数:指针 P0P0P127P127v P63P63表示跳到表示跳到ENDEND P0v 梯形图梯形图v 说明说明 CJCJ指令跳过部分程序,可以缩短程序的指令跳过部分程序,可以缩短程序的扫描周期扫描周期。 一个指针只能出现一次。一个指针只

2、能出现一次。 如果积算型定时器和计数器的如果积算型定时器和计数器的RSTRST指令在跳转程序之内,即使跳指令在跳转程序之内,即使跳转程序生效,转程序生效,RSTRST指令仍然有效。指令仍然有效。 该指令可以连续和脉冲执行方式。该指令可以连续和脉冲执行方式。 被跳过去的程序中各元件的状态为被跳过去的程序中各元件的状态为Y Y、M M、S S保持跳转前状态不变。保持跳转前状态不变。定时器定时器T T和计数器和计数器C C如果被如果被CJCJ指令跳过,跳转期间它们的当前指令跳过,跳转期间它们的当前值将被保存。如果在跳转开始时定时器和计数器正在工作,值将被保存。如果在跳转开始时定时器和计数器正在工作,

3、在跳转期间它们将停止定时和计数。在跳转期间它们将停止定时和计数。 T192T192T199T199和高速计数器和高速计数器C235C235C255C255如果在驱动后跳转,则如果在驱动后跳转,则继续工作,输出触点也会动作。继续工作,输出触点也会动作。如图,如图, X000为为ON时,时,程序跳到指针程序跳到指针P8处。处。 X000为为OFF时,时,不执行跳转,程序按原顺序执行。不执行跳转,程序按原顺序执行。 如果用如果用M8000的常开触点驱动的常开触点驱动CJ指令,相当于无条件跳转指令,因为指令,相当于无条件跳转指令,因为运行时运行时特殊辅助寄存器特殊辅助寄存器M8000总是总是ON。用跳

4、转指令实现选择运行程序段用跳转指令实现选择运行程序段 图 手动/自动程序跳转应用跳转指令的程序结构如图所示。X3是手动/自动选择开关的信号输入端。当X3未接通时,执行手动程序段,反之执行自动程序段。X3X3的的常开常开/ /常闭接点起联锁作用,常闭接点起联锁作用,使手动、自动两个程序段只使手动、自动两个程序段只能选择其一。能选择其一。条件跳转指令应用举例条件跳转指令应用举例【例题】 某台设备具有手动/自动两种操作方式。SB3是操作方式选择开关,当SB3处于断开状态时,选择手动操作方式;当SB3处于接通状态时,选择自动操作方式,不同操作方式进程如下:手动操作方式进程:按启动按钮SB2,电动机运转

5、;按停止按钮SB1,电动机停机。自动操作方式进程:按启动按钮SB2,电动机连续运转1min后,自动停机。按停止按钮SB1,电动机立即停机。【解】 根据控制要求,设计程序梯形图如图所示。程序梯形图v 子程序调用子程序调用 CALL CALL (Sub-Routine CallSub-Routine Call)v 操作数:指针操作数:指针P0P0P127 P127 v 子程序返回子程序返回 SRET SRET 无操作数无操作数 (Sub-Routine ReturnSub-Routine Return)无操作数无操作数v 说明说明子程序应该在主程序结束之后编程。子程序应该在主程序结束之后编程。CJ

6、CJ指令的指针与指令的指针与CALLCALL的指针不能重复。的指针不能重复。主程序允许嵌套,嵌套级别最多为主程序允许嵌套,嵌套级别最多为5 5级。级。子程序只能用子程序只能用T192T192T199T199和和T246T246T249T249作定时器。作定时器。 同一指针只能出现一次同一指针只能出现一次标号标号P63P63相当于相当于ENDEND。v 梯形图梯形图 P8主程序主程序子程序子程序 子程序编写在FEND指令的后面,以标号P开头,以返回指令SRET结束。 子程序调用指令CALL与跳转指令CJ不能使用相同的标号。 P8主程序主程序子程序子程序v 说明说明FENDFEND指令表示主程序结

7、束指令表示主程序结束, ,与与ENDEND指令的功能一样指令的功能一样, ,程序执行程序执行到到FENDFEND时,进行输出处理、输入处理、监视定时器和计数器时,进行输出处理、输入处理、监视定时器和计数器刷新,全部完成以后返回到程序的第刷新,全部完成以后返回到程序的第0000步。步。执行到该指令时程序返回到执行到该指令时程序返回到0 0步。步。中断服务子程序和子程序应该写在中断服务子程序和子程序应该写在FENDFEND之后,并且用之后,并且用IRETIRET和和SRETSRET返回。返回。如果多次使用如果多次使用FENDFEND指令,在最后的指令,在最后的FENDFEND和和ENDEND之间编

8、写子程之间编写子程序或中断子程序。序或中断子程序。 FENDFEND主程序结束指令使用时应注意,子程序和中断子程序主程序结束指令使用时应注意,子程序和中断子程序必须写在主程序结束指令必须写在主程序结束指令FENDFEND和和ENDEND指令之间。指令之间。 子程序子程序调用举例调用举例 程序功能是:X1、X2、X3分别接通时,将相应的数据传送到D0、D10,然后调用子程序;在子程序中,将D0、D10存储的数据相加,运算结果存储在D20,用D20存储数据控制输出字元件K1Y0。 v 中断返回中断返回 IRETIRET(Interruption ReturnInterruption Return)

9、 开中断开中断 EIEI(Interruption EnableInterruption Enable) 关中断关中断 DIDI(Interruption DisableInterruption Disable)v 均无操作数均无操作数v 梯形图梯形图开中断范围开中断范围X0I100X10FENDIRETEIDIIRETI101中断子程序中断子程序2 2中断子程序中断子程序1 1v 说明说明在执行某个中断子程序时,禁止其它中断请求。在执行某个中断子程序时,禁止其它中断请求。 用于中断的用于中断的指针指针用来指明某一中断源的中断程序用来指明某一中断源的中断程序的入口。的入口。中断程序允许嵌套,嵌

10、套级别为中断程序允许嵌套,嵌套级别为2 2级。级。中断指针共有中断指针共有1515个:输入中断个:输入中断6 6个,定时器中断个,定时器中断3 3个,个,计数器中断计数器中断6 6个。个。中断程序用中断程序用T192T192T199T199和和T246T246T249T249作定时器。作定时器。中断的优先级别中断的优先级别多个中断信号不同时产生时,按先后顺序中断。多个中断信号不同时产生时,按先后顺序中断。多个中断信号同时产生时,按指针大小中断。多个中断信号同时产生时,按指针大小中断。 I 输入中断输入中断 0:下降沿中断:下降沿中断 1:上升沿中断:上升沿中断 输入号(输入号(05)每个输入只

11、能用)每个输入只能用 1 次次0当当M8050M8050M8058M8058为为ONON时,禁止执行相应的输入中断,时,禁止执行相应的输入中断,M8059M8059为为ONON时禁止所有计数器中断时禁止所有计数器中断例如,例如,I001I001为输入为输入X0X0从从OFFONOFFON变化时,执行由该指针作变化时,执行由该指针作为标号后面的中断程序,并根据为标号后面的中断程序,并根据 IRET IRET 指令返回。指令返回。输入中断输入中断用来接收特定的输入地址号的输入信号,用来接收特定的输入地址号的输入信号,输入中断指针输入中断指针I I0 0。最高位与。最高位与X000X000X005X

12、005的元件号相对应,单元的输入号为的元件号相对应,单元的输入号为0 05 5(从(从X000X000X005X005输入)。最低位为输入)。最低位为0 0时表示下降沿中断,反时表示下降沿中断,反之为上升沿中断之为上升沿中断 图中一开始为允许中断。当X1从OFFON且保持ON,程序跳到指针I101处执行中断程序,执行第13行将K100送到D1,然后返回主程序,对定时器T0计时。当计时达到D1当前值K100时,T0触点闭合,Y0得电。中断程序由中断指针入口,到中断返回指令IRET结束。例如中断指针I101的意义为当程序执行到X1时转到中断指针I101的程序行执行,一直到IRET为止,之后返回主程

13、序。中断程序编写在主程序结束之间,如图所示。(2)(2)定时器中断定时器中断定时器中断由编号为定时器中断由编号为I6I6,I7I7,I8I8三个专用定时器中的一个,在三个专用定时器中的一个,在101099ms99ms中任选一个作为中断设定时间,每隔此设定时间中断中任选一个作为中断设定时间,每隔此设定时间中断一次,例如一次,例如 I650I650,即每隔,即每隔50ms50ms,在标号,在标号I650I650之后对程序执行之后对程序执行中断,直到执行中断,直到执行IRETIRET指令返回原状态。指令返回原状态。 I 定时器中断定时器中断1099ms定时器中断号(定时器中断号(68),每个定时器只

14、能用每个定时器只能用 1 次次定时器中断用于需要指定中断时间执行中断程序的地方,主要用于高速处理或每隔一定时间执行的程序等问题。定时器的中断指针为: 图中按X1,M3得电,定时器中断,执行中断指针I650每隔50ms使D0加1。直到当D0的当前值等于1000,M3失电。定时器中断指针定时器中断指针为为I6I6I8I8,低两位是以,低两位是以msms为单位定为单位定时时间(时时间(1 199ms99ms)。)。M8056M8056M5058M5058为为ONON时,将分别禁止定时时,将分别禁止定时中断中断0 02 2。 (3) (3)计数器中断计数器中断计数器中断用于与高速计数器当前值比较的结果

15、(执行高速计数器中断用于与高速计数器当前值比较的结果(执行高速计数器比较置位指令)而中断执行中断程序的场合计数器比较置位指令)而中断执行中断程序的场合。计数器中断指针计数器中断指针为为I0I00 0(1 16 6,计数器中断,计数器中断6 6点,不可点,不可重复使用)。计数器中断与重复使用)。计数器中断与HSCSHSCS(高速计数器比较置位)指(高速计数器比较置位)指令配合使用,根据高速计数器的计数当前值与计数设定值的令配合使用,根据高速计数器的计数当前值与计数设定值的关系来确定是否执行相应的中断服务程序。关系来确定是否执行相应的中断服务程序。图中,执行第3步,将K1000与C255的当前值比

16、较,当C255的当前值由999变到1000时,驱动计数器中断器I010(梯形图表示为I10),执行计数器中断程序。(4 4)中断程序在执行过程中,不响应其他的中断)中断程序在执行过程中,不响应其他的中断( (其其他中断为等待状态他中断为等待状态) )。不能重复使用与高速计数器相。不能重复使用与高速计数器相关的输入,不能重复使用关的输入,不能重复使用I000I000与与I001I001相同的输入。相同的输入。(3 3)如果特殊辅助继电器)如果特殊辅助继电器M8050M8050M8059M8059为为ONON,则禁,则禁止各对应输入编号进行中断,见附录特殊辅助继电器。止各对应输入编号进行中断,见附

17、录特殊辅助继电器。图中,如果图中,如果M8051M8051为为OFFOFF,按住,按住X1X1,执行中断程序,运,执行中断程序,运行情况如图一样。如果按行情况如图一样。如果按X10X10,M8051M8051接通,则按接通,则按X1X1,程序也不执行中断。程序也不执行中断。(5 5)如果有多个依次发出的中断信号,则优先级按)如果有多个依次发出的中断信号,则优先级按发生的先后为序,发生越早则优先级越高,若同时发发生的先后为序,发生越早则优先级越高,若同时发生多个中断信号时,则中断标号小的优先级高。生多个中断信号时,则中断标号小的优先级高。v 说明说明在执行某个中断子程序时,禁止其它中断请求。在执

18、行某个中断子程序时,禁止其它中断请求。中断程序允许嵌套,嵌套级别为中断程序允许嵌套,嵌套级别为2 2级。级。中断指针共有中断指针共有1515个:输入中断个:输入中断6 6个,定时器中断个,定时器中断3 3个,个,计数器中断计数器中断6 6个。个。中断程序用中断程序用T192T192T199T199和和T246T246T249T249作定时器。作定时器。中断的优先级别中断的优先级别多个中断信号不同时产生时,按先后顺序中断。多个中断信号不同时产生时,按先后顺序中断。多个中断信号同时产生时,按指针大小中断。多个中断信号同时产生时,按指针大小中断。 1. 监视定时器指令的助记符及功能如表所示:2. 格

19、式如图所示。 图 WDT指令用法(WATCHDOG TIMER) v 如果正常的扫描周期超过警戒时钟的设定值,可以在适如果正常的扫描周期超过警戒时钟的设定值,可以在适当程序步中加入当程序步中加入WDTWDT指令,适时刷新警戒时钟,使程序指令,适时刷新警戒时钟,使程序能顺利执行。能顺利执行。v 也可以通过也可以通过MOVMOV指令修改警戒定时器的设定值(指令修改警戒定时器的设定值(D8000D8000的的值)。值)。v 可以计算出程序扫描周期的最大值作为警戒时钟的设定可以计算出程序扫描周期的最大值作为警戒时钟的设定值。值。v WDTWDT指令可用在指令可用在FOR-NEXTFOR-NEXT之间。

20、之间。警戒定时器指令的应用警戒定时器指令的应用 监视定时器指令WDT(P),没有操作数,占有1个程序步。WDT指令的功能是对PLC的监视定时器进行刷新。 3. 说明(1)WDT指令是在控制程序中刷新警戒定时器的指令。如果执行程序的扫描周期时间(从0步到END或FEND指令之间)达200ms,则PLC将停止运行。这时应将WDT指令插到合适的程序步中刷新警戒时钟,以便程序得以继续运行直到END。例如将一个扫描周期为240ms的程序分为2个120ms程序。如图所示,在这两个程序之间插入WDT指令。(2)如果希望每次扫描周期时间超过200ms,则可用移动指令MOV把限制值写入特殊数据寄存器D8000中

21、,如图所示。 FX系列PLC的监视定时器缺省值为200ms(可用D8000来设定),正常情况下PLC扫描周期小于此定时时间。如果由于有外界干扰或程序本身的原因使扫描周期大于监视定时器的设定值,使PLC的CPU出错灯亮并停止工作,可通过在适当位置加WDT指令复位监视定时器,以使程序能继续执行到END。使用WDT指令时应注意:1)如果在后续的FOR-NEXT循环中,执行时间可能超过监控定时器的定时时间,可将WDT插入循环程序中。2)当与条件跳转指令CJ对应的指针标号在CJ指令之前时(即程序往回跳)就有可能连续反复跳步使它们之间的程序反复执行,使执行时间超过监控时间,可在CJ指令与对应标号之间插入W

22、DT指令。v 无操作数无操作数v 警戒定时器是一个专用定时器,其设定值存放在特殊警戒定时器是一个专用定时器,其设定值存放在特殊的数据寄存器的数据寄存器D8000D8000中,并以中,并以msms为计时单位。为计时单位。v 当当PLCPLC一上电,则对警戒定时器进行初始化,将一上电,则对警戒定时器进行初始化,将K100K100(设定值为(设定值为100ms100ms)装入)装入D8000D8000中,每个扫描周期结束中,每个扫描周期结束时,马上刷新警戒定时器的当前值,使时,马上刷新警戒定时器的当前值,使PLCPLC能正常运能正常运行。行。v 当扫描周期大于当扫描周期大于100ms100ms时,即

23、超过了警戒定时器的设时,即超过了警戒定时器的设定值,警戒定时器的逻辑线圈被接通,定值,警戒定时器的逻辑线圈被接通,CPUCPU立即停止立即停止执行用户程序,同时切断全部输出,并且报警显示。执行用户程序,同时切断全部输出,并且报警显示。v 如果正常的扫描周期超过警戒时钟的设定值,可以在适如果正常的扫描周期超过警戒时钟的设定值,可以在适当程序步中加入当程序步中加入WDTWDT指令,适时刷新警戒时钟,使程序指令,适时刷新警戒时钟,使程序能顺利执行。能顺利执行。v 也可以通过也可以通过MOVMOV指令修改警戒定时器的设定值(指令修改警戒定时器的设定值(D8000D8000的的值)。值)。v 可以计算出

24、程序扫描周期的最大值作为警戒时钟的设定可以计算出程序扫描周期的最大值作为警戒时钟的设定值。值。v WDTWDT指令可用在指令可用在FOR-NEXTFOR-NEXT之间。之间。警戒定时器指令的应用警戒定时器指令的应用v 循环开始循环开始 FOR FOR v 操作数操作数SS: K,HK,H、KnXKnX、KnYKnY、KnMKnM、KnSKnS、T T、C C、D D、V,ZV,Zv 循环结束循环结束 NEXT NEXT 无操作数无操作数v 说明说明 n n为循环次数,其范围为为循环次数,其范围为1效。如果指定为有效。如果指定为- -32768327680 0,则作,则作n=1n=1处理。处理。 循环指令最多可以嵌套循环指令最多可以嵌套5 5级。级。 程序中程序中FOR-NEXTFOR-NEXT是成对出现的,是成对出现的,FORFOR在前,在前,NEXTNEXT在后不在后不可倒置,否则

温馨提示

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

评论

0/150

提交评论