198366809 发表于 2021-2-27 22:20:19

三菱PLC的中断处理,如何正确的理解中断的功能

来源:工控人(头条)相信大家无论在计算机编程还是我们PLC编程中,中断这个概念都会出现:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行从字面上说就是放下所有的 事情,优先完成中断任务,那么在我们PLC中的中断如何理解,可能大家在我们编程时很少用到中断,所有对其概念很模糊。了解PLC中断,首先我们说下PLC的运算周期,也就是扫描时间,PLC从上到下对程序扫描指导END指令,对所有的状态进行更新,每个运算周期后都会更新一次,在这个周期内,无论状态怎么变化都输出最后一个状态,比如X0,在一个周期内OFF→ON的状态变换了好多次,最后扫描时间到后的状态为OFF,那么PLC的X0就是OFF,即使在这段时间内XO由ON的状态。这就是运算周期。其次,我们再说中断,为什么要中断,在一般的顺控程序处理中,由运算周期造成的延迟以及时间的偏差给机械动作带来影响,这里就涉及到高速输入的问题,例如我们PLC的运算周期是1ms,我们要采集编码器的脉冲输入,如果脉冲的周期时间(脉冲频率)小于运算周期的话,如采集10KHz的脉冲,一个脉冲的时间就是0.1ms,这样的在PLC在一个周期内只能捕捉到1个脉冲,计数就不准确了,因此我们要对输入进行中断处理,优先进行计数,我们通过下面的梯形图进行对比分析:https://p1-tt.byteimg.com/origin/pgc-image/f513a0c7db0c4af6b20dc932e0294eb9?from=pc中断处理对比
我们采用分辨率为2000p/r的编码器进行计数,我们分别用普通计数器C200和经过中断处理的X1对编码器进行计数,我们产不多转了5圈编码器,发现采用C200的计数结果是25,经过中断处理后的计数是100039,相差这么大,这下可以看到中断的功能了吧。这里我们在说下中断的用法,上面的梯形图是对输入X1进行中断,EI表示允许中断、FEND表示主程序结束,IRET表示中断返回。从EI→FEND这之间是主程序,从FEND→IRET表示中断子程序。当检测到X1上升沿之后进入中断子程序,然后返回主程序。编码器转一圈,X1有2000个上升沿,由于子程序只执行一次就返回主程序,因此D0就进行了2000次的+1。https://p6-tt.byteimg.com/origin/pgc-image/bf65940b7c5d4541a0d62edf8cbc6e76?from=pc编码器计数
此外,在我们三菱PLC指令中,涉及到高速的指令,比如高速计数器、高速输出、定位指令等都是经过中断处理过的,是不需要自己做中断的,很方便直接使用即可,大家看指令的步数就知道。

开心果 发表于 2021-2-27 22:20:21

感恩无私的分享与奉献 :)

my欢欢 发表于 2021-2-28 06:36:30

淡定,淡定,淡定……

十文 发表于 2025-11-13 08:45:33

水个经验,楼主加油,支持你~

DJW 发表于 2025-11-13 11:24:55

来凑个热闹,为楼主增加点人气!

Zhs 发表于 2025-11-13 11:33:21

谁懂啊!这内容我能循环看十遍

古月 发表于 2025-11-13 11:35:01

这波分析到位,逻辑满分!

liujianhau 发表于 2025-11-13 11:35:07

水个经验,支持楼主,加油呀

zx201 发表于 2025-11-13 11:38:33

路过打卡,为优质内容疯狂打 call

multi522 发表于 2025-11-13 11:38:43

原来还有这种操作,长见识了!
页: [1] 2 3
查看完整版本: 三菱PLC的中断处理,如何正确的理解中断的功能