首页 > 其他分享 >三菱FXPLC 中断服务

三菱FXPLC 中断服务

时间:2023-08-04 13:46:17浏览次数:38  
标签:服务程序 三菱 中断 指令 FXPLC PLC 子程序 指针

一、中断是什么

  所谓中断,是指PLC按顺序执行程序扫描的过程中,当有需要立即反应的请求发出时,立即中断当前执行的扫描工作,优先地去执行请求所指定的服务工作。服务工作完成后,再回到刚才被中断的地方继续往下执行程序扫描工作。

  换句话说,中断服务就像是个磨人的小妖精,时不时地打断PLC当前的工作,PLC又不能不理它。这小妖精一过来,PLC就得马上招待它,服务到它满意走了后,PLC才能继续刚才被打断的工作。

1、中断源

  显然,中断也是一种程序流程转移,但这种转移大都是随机发生的,例如故障报警、外部设备动作等。那么,PLC怎么去发现这些小妖精,啊呸,发现这些中断请求的呢?中断请求又是谁发出的呢?其实,发出中断请求的设备称为中断源,中断源可以是外部各种开关信号,也可以是PLC内部定时器、计数器等。

  PLC执行哪个中断源的中断服务,是靠不同标号的中断指针区分的,在下文讲中断指令的时候我们再继续探讨这个内容。

2、断点与返回

  而PLC在接收到中断请求后,就会在程序中产生一个断点,当中断服务执行完毕后,PLC会回到断点处,也就是所谓的中断返回,继续在断点处往下执行被打断的程序。

  中断服务程序的断点与中断返回,显然类似于子程序服务程序的断点与子程序返回,而且中断服务程序和子程序都是处在副程序区,都是用指针作为入口地址标号。但子程序所用的指针是分支指针P,而中断服务程序所用指针为中断指针I。

3、中断执行与优先

  PLC只能在中断允许的情况下才能进行中断处理,而且一旦接到中断请求必须立即处理中断服务程序,不管PLC当前在执行主程序还是执行子程序。

  另外,PLC在任何时刻都只能执行一个中断服务程序,这时候就会有两种情况。

(1)PLC尚未在执行中断服务程序,当有多个中断请求同时发生:PLC按中断指针编号大小排列优先级,编号越小的优先级越高,就会先处理,例如I000优先于I100,I100优先于I500。

 (2)PLC正在执行中断服务程序时有其他新的中断请求发生:此时PLC必须继续执行完当前的中断服务程序,才能去执行其他中断服务程序,也就是按时间优先原则进行处理。毕竟PLC霸总精力有限,小妖精1号先来,那PLC就先服务1号,后面来的就乖乖排好队,总不会漏掉就是了。

4、中断服务程序的编写

  中断服务程序和子程序一样,都是写在副程序区,但子程序的调用要用到CALL指令,而且只有当驱动条件成立时,PLC才会去到CALL指令指定的子程序入口去执行子程序,执行到子程序返回指令SRET后返回主程序。

  而中断服务程序的执行靠的不是软元件,而是由硬件电路发出中断信号给PLC,PLC自动辨别该中断请求,然后找到相应的入口进而执行对应的中断服务程序,直到执行到中断返回指令IRET后返回到断点(主程序或子程序中)处继续往下执行。

  可想而知,在子程序眼前,中断服务程序就是个爸爸。要注意的一点就是,在设计中断服务程序时应遵循“越短越好”的原则,因为中断服务程序执行的时间过长,会影响主程序的执行控制。知己知彼,方能百战百胜,我们知道了什么是中断后,接下来就要对它发起进攻了!

二、中断指令

  三菱FX PLC的中断指令有EI、DI、IRET三个。

1、中断允许指令EI

  执行中断允许指令后,PLC在执行接下来的程序的过程中,收到中断请求都会做出应答,去执行相应的中断服务程序。EI指令就像是一扇打开的门,有了这扇打开的门,PLC才能招待中断这个小妖精,就像是哆啦A梦的任意门似的,所以EI又称开中断指令。

  EI指令虽然能开中断,但它不能关,哆啦.PLC.梦掏出来的EI门本就是开着的,那如果我们不想PLC招待中断这个小妖精又该怎么办呢?我们继续往下看。

2、中断禁止指令DI

  执行EI指令后,如果不想某些程序段被中断,就可以在该程序段前编写中断禁止指令DI。执行DI指令后,PLC在执行接下来的程序的过程中,收到任何中断请求都不会有响应。 DI指令就像是一扇锁闭的门,有了这扇锁闭的门,PLC才能经得住中断这个小妖精的诱惑,不去理它,所以,DI指令又称关中断指令。

 

  知道了中断允许指令和中断禁止指令后,我们继续看中断返回指令。

3、中断返回指令IRET

  PLC在执行中断服务程序的过程中,当执行到中断返回指令IRET时,会无条件返回到主程序或子程序的断点处继续往下执行。它的应用与子程序返回指令SRET的应用大同小异,只不过一个用于中断,一个用于子程序罢了。

  上文说到,PLC执行哪个中断源的中断服务,是靠不同标号的中断指针区分的,现在我们就来探讨一下这些不同标号的中断指针。

三、中断指针I与其中断源

由上文可知,按中断指针的标号,我们可以把中断源分为3类。

1、外部输入中断

外部输入中断的请求信号其实就是输入端口X0~X5的开关量信号,当X0~X5被用于中断时,一旦接通,就会向PLC发出中断请求。外部输入中断常用于外部紧急事件的处理,如报警。

  如上图所示,6个输入端口X0~X5对应12个中断指针,并配有相应的禁止中断继电器。这些禁止中断继电器显然和我们上文所提的关中断指令DI有所不同。DI指令一旦被执行,之后的程序执行过程中,所有中断请求都不被响应,但禁止中断继电器仅仅是对某些中断请求而言。

   外部中断指针的标号显然与其输入端口编号有对应关系,并有上升沿和下降沿之分,但对于同一个端口,上升沿中断指针和下降沿中断指针不能同时编写。

2、内部定时器中断

  内部定时器中断是按一定时间自动进行的中断,不受扫描周期的影响。它适用于扫描时间较长但又需要及时处理数据的场合,例如模拟量的定时采样。

   定时中断指针类似于外部输入中断指针,其标号也有其对应关系,又由于定时中断指针只有3个,且不能重复使用,显然,一个程序中最多只能设置3个定时器中断。

3、高速计数器中断

  高速计数器中断理解起来比较难,所以我也没有理解多少,毕竟我也只是一个PLC小白。特别是高速计数器,我根本就不认识它,哇的一声哭出来。

  高速计数器中断必须与高速计数器指令DHSCS一起使用,当高速计数器的当前值与设定值相等时,执行中断指针所指的中断服务程序。高速计数器中断可以用于高速的定位控制等。

  其所用中断指针如下图所示,对应禁止中断继电器只有一个M8059,当M8059接通时,所有高速计数器中断都被禁止。

  类似的,由于高速计数器中断指针有6个,且不能重复使用,显然,一个程序中最多只能设置6个高速计数器中断。

  显然,PLC中断的知识,我目前也只算是略懂皮毛,不过,作为一名合格的小白,学到目前为止,我至少是能看懂一些相关的程序的。哪怕有些指令还没学过,但掐指一算,还是能推理出它的大概意思。我相信,随着不断地学习,我会慢慢理解之前尚未理解的知识,当然,你也一样,如果你也在学习PLC的话。

标签:服务程序,三菱,中断,指令,FXPLC,PLC,子程序,指针
From: https://www.cnblogs.com/ybqjymy/p/17605667.html

相关文章

  • 三菱Q系列PLC串口和台达变频器进行RTU通信
    ▎一、动作描述1.三菱Q系列串口和台达变频器进行RTU通信2.通信内容:正反转停止控制▎二、前置基础1.Q系列串口通讯重要指令:U:模块的起始IO编号(以16进制数4位表示时的高3位)例如:起始IO为0070——U7n1:K1表示第1通道,K2表示第2通道n2:协议连续执行数,最大8个S:起始软元件(看下......
  • 10. NVIC中断控制器
    一、什么是中断  中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。  当处理机接受中断时,只需暂停一个或几个周期而不执行处理程序的中断,称为简单中断。中断又可分为屏蔽......
  • 三菱plcCCLINK转profinet与西门子PLC通讯案例分析
    用三菱PLC的控制系统需要和西门子的PLC控制系统交互数据,捷米JM-PN-CCLK 是自主研发的一款 PROFINET 从站功能的通讯网关。该产品主要功能是将各种 CCLINK 总线和 PROFINET 网络连接起来。 捷米JM-PN-CCLK总线中做为从站使用,连接到 CCLINK 总线中做为从站使用。  三......
  • stm32CubeIDE 串口UART+DMA+空闲中断接收不定长数据
    一、概述串口使用时,有时候会有接收不定长数据的需求,这时候用DMA+空闲中断的方式是最好的方法。二、cubeide的配置串口按照需求配置后,添加一个串口接收的DMA,如下图 三、代码编写部分1、在串口init函数 MX_UART4_Init(void)的末尾用户代码区域添加使能空闲中......
  • 第7期ThreadX视频教程:如何实现RTOS高效的任务管理,抢占式调度,时间片调度和零中断延迟(20
    视频教程汇总帖:https://www.armbbs.cn/forum.php?mod=viewthread&tid=110519 本期视频为大家分享高效的RTOS任务管理设计,通过这个点来引出抢占式调度,时间片调度,任务优先级设置和零中断延迟。RTOS任务高效管理是我们使用RTOS一个重要原因。视频:https://www.bilibili.com/vi......
  • FTP上传经常中断
    首先要确认您本地电脑的ftp客户端使用的是主动模式(Port)还是被动模式(PASV)。01 43.240.72.0 43.240.73.0如果本地电脑的ftp客户端为主动模式需要确认您在服务器上开放了高端端口,并且在FTPServer中指定了这些端口。02 43.240.159.0 43.240.74.0如果本地电脑的ftp客户端使用的......
  • 设备驱动-10.中断子系统-4.3中断线程化处理-threaded_irq
    1.threaded_irq引入工作队列用起来挺简单,但是它有一个缺点:工作队列中有多个work,前一个work没处理完会影响后面的work执行,导致后面的work没法快速响应。那么可以再内核自己创建一个线程来单独处理,不跟别的work凑在一块了。比如在Linux系统中,对于存储设备比如SD/TF卡,它......
  • STM32定时器(TIM)中断
    一、什么是定时器中断?大白话理解:使用一个定时器进行计时(计数),数数的方式可以从上到下(从设定值到0),也可从下到上(从0到设定值),或者中间计数(一般用不上,记住前面两者解决大部分问题,)要学会释怀自己,哈哈(允许我找个不会的借口)。当计数完成以后,将会发出冲断请求(就是给中断控制系统说,我想......
  • cortex_m3内核 屏蔽所有中断
    在Cortex-M3内核中,可以使用__disable_irq()函数来屏蔽所有中断。这个函数会将PRIMASK寄存器的值设置为1,从而禁用所有可屏蔽中断。下面是一个简单的示例,演示如何在C语言中使用__disable_irq()函数来屏蔽所有中断:#include"core_cm3.h"//其中可以为cmsis_armcc.h/cmsis_gcc.hvoi......
  • Cortex M4 中断向量设置
    CortexM4中断向量表设置Keywords:CortexM4CM4Vectortable中断前言本文叙述了因Vectortable设置错误导致进入hardfault中断的问题,现象就是APP运行卡死。起因今天同事在app最前面加了固定大小的校验,然后将新的程序烧录之后,bootloader无法正常启动app,我对此问题比较感......