三菱FX系列中断指令与中断程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三菱FX系列中断指令与中断程序
主讲:雷老师
湖北祥辉电气自动化培训中心
三菱FX系列PLC的中断指令[IRET、El、DI(FNC03、FNC04、FNC05)] 1.中断指令的使用说明
(1)IRET:中断子程序返回主程序;EI:允许中断;DI:禁止中断。图6-19所示为中断指令使用说明。EI~DI为允许中断区间,当中断条件出现在主程序此区间内则转向执行有中断标号的子程序。
(2)中断子程序开始有中断标号,由IRET返回。中断子程序一般出现在主程序后面。中断标号必须对应允许中断的条件。
在中断条件0~8中,0~5表示与输入条件X0~X5对应,在图6-19中中断标号1001表示X0为1在上升沿执行中断子程序I,I101表示X1为1在上升沿执行子程序Ⅱ;6~8为定时器中断条件(标号),如I610表示指定由定时器6每计时10ms执行一次中断子程序。同理1899表示由定时器8每计时99ms执行一次中断子程序。
(3)中断子程序可嵌套最多二级,多个中断信号同时出现,中断标号低的有优先权。
(4)对中断标号为I00□~I50□的输入中断,对应M8050~M8055为1时中断被禁止。对中断标号为I6□□~I8□□的定时器中断,对应M8056~M8058为1时中断被禁止。
(5)在特殊场合主程序设计中采用中断指令,可以有目的预先应付突发事件。中断指令也适用于一些必须定时监控诊断的主程序中。
(6)中断要用EI允许中断指令和中断返回IRET,中断中需要使用计时器的话,请使用T192-T199和T246-T249
2.应用举例
(1)外部输入中断子程序。图6-20所示为一外部输入中断子程序。在主程序执行时,当特殊辅助继电器M8050=0时,标号I001的中断子程序允许执行。当PLC外部输入信号X0有上升沿信号时,执行中断程序一次,执行完毕返回主程序。Y10由M8013驱动每秒内一次,而Y0输出是当X0在上升沿脉冲时,驱动其为“1”信号,此时Y11输出就由M8013当时状态所决定。若X10=1,则M8050=1,I001中断子程序禁止执行。
图6-20外部输入中断子程序
(2)定时中断子程序。图6-21所示为一定时中断子程序。中断标号为I610,利用定时器6每10ms中断子程序执行一次。每执行一次中断子程序使数据寄存器D0内容加1,当加到1000时使Y2置1。为验证中断程序正确与否,在主程序中加入了定时电路T0,T0触点控制Y1,当X10由ON→OFF时,经延时10s后,Y1,Y2应同时为“1”态。
INC为加1指令,CMP为比较指令,当1000>[D0],M1=1;1000=[D0],M2=1;1000<[D0],M3=1(图6-21中未画出M1、M3触点)。当X10=1,M8056=1,中断被禁止。这时M0~M2复位(ZRST),K0(数据为0)传送(MOV)到D0中。
图6-21定时中断子程序实例
图6-22高速计数器中断示意梯形图
图5.18中断指针格式
(1)外中断指针
外中断指针的格式如图5.18(a)所示,I00~I50,共6点。外中断是外部信号引起的中断,对应的外部信号的输入口为X000~X005。指针格式中的最后一位可以选择是上升沿请求中断,还是下降沿请求中断。
(2)内中断指针
内中断指针的格式如图5.18(b)所示,I6□□~I8□□,共3点。内中断为内部定时时间到信号中断,由指定编号为6~8的专用定时器控制。设定时间在10~99ms间选取,每隔设定时间就会中断一次。(3)高速外部计数中断指针
高速计数器中断指针的格式如图5.18(c)所示,I010~I060,共6点。这6个中断指针分别表示由高速计数器(C235~C255)的当前值实现的中断。
中断返回IRET(Interruption Return)、中断允许EI(Interruption Enable)和中断禁止DI(Interruption Disable)相关中断指令的助记符、功能号、操作数和程序步等指令概要如表5.4所示。
表5.4有关中断指令概要
2.3.4小节已经介绍了FX2N系列PLC有3类中断,即外部中断、内中断(即内部定时器中断)和高速计数器外部计数中断。FX2N系列PLC可以多达15个中断源,15个中断源可以同时向CPU发中断请求信号,这时CPU要通过中断判优,来决定响应哪一个中断。15个中断源的优先级由中断号决定,中断号小者其优先级为高。另外,外中断的优先级整体上高于内中断的优先级。
这样,在主程序的执行过程中,就可根据不同中断服务子程序中PLC所要完成工作的优先级高低决定能否响应中断。对可以响应中断的程序段用中断允许指令EI来开中断,对不允许中断的程序段用中断指令DI来关中断。程序中允许中断响应的区间应该由EI指令开始,DI指令结束,如图5.17所示。在此区间之外时,即使有中断请求,CPU也不会立即响应。通常情况下,在执行某个中断服务程序时,将禁止其他中断。
图5.17内外中断示意梯形图
从中断服务子程序中返回必须用专门的中断返回指令IRET,不能用子程序返回指令SRET。IRET指令除了能从中断服务程序返回以外,还要通知CPU本次中断已经结束,可以响应其他中断请求了。中断的调用与返回过程与子程序的调用与返回过程十分相似,但两者还是有较大区别的。子程序调用是事先在程序中用CALL给定的,但是中断调用要求响应时间小于机器的扫描周期,所以就不能像子程序那样事先在程序中给定,这样中断没有相应的调用指令,而是由外设随机地通过硬件向CPU发出中断请求(这种能引起中断的外设被称为中断源),才把CPU拉到中断服务子程序中去。整个中断是一个软硬件结合的过程。
EI是中断开放指令,DI是中断禁止指令。这两条指令比较简单,PLC执行到EI指令就开放中断,执行到DI指令就禁止中断。这是因为PLC中断控制电路上有一个“软开关”,这个“软开关”在PLC上电初始化时是断开的,EI的作用就是接通这个“软开关”,DI的作用则是断开这个“软开关”。
EI、DI控制的“软开关”是中断源的总开关,它的下面还有一些“软“的分开关,就是M8050~M8059。这些“软“的分开关可以在程序中置为ON或OFF,分别控制不同的中断源,以FX2N/2NC为例,其中:M8050~M8055分别控制输入中断源X000-X005,输入中断用指针编号I000~I500;
M8056~M8058分别控制三个定时器中断源,定时器中断用指针编号I600、I700、I800;
M8059控制6个高速计数器中断源,高速计数器中断用指针编号I900。
这样,要想一个中断源触发中断,必须满足2个条件:1)用EI开放中断,2)使该中断源的”软“分开关为ON。
中断源触发中断后,PLC就跳转到其中断用指针编号指定的子程序执行。IRET是中断返回指令,它是中断处理程序的结束指令,其作用是使PLC返回到被中断时的下一条指令继续执行。
若没有中断处理子程序,虽然触发了中断,但没有处理任何事情。
设DM6628为0011,即00003和00004为中断输入点。当00003接通时产生中断,停止执行主程序、转去执行子程序000使20000ON,返回执行主程序使01000ON。当00004接通产生中断时,转去执行子程序001使20001ON,返回执行主程序使01000OFF。
设DM6628为0011,即00003和00004为中断输入点。