引言
什么是PLC中断程序?PLC中断程序是用来紧急处理特殊事件的程序,有急事它能立马跳出来,比主程序还要优先。
我们可以把中断程序看作一个“紧急插队办事”的机制,下面我们把这个机制拆解得更细致一些。
一、为什么需要中断程序?(核心价值)
1、实时性与高优先级保障:
核心问题:
PLC的主程序(OB1)是循环扫描执行的。它会从头到尾跑一圈,然后立刻从头开始。如果主程序很长,扫描周期(跑一圈的时间)就可能达到几十甚至上百毫秒。
场景举例:
一个高速运动的包装机,需要在产品到达某个精确位置的瞬间进行喷码。这个位置信号可能只持续1毫秒。如果主程序正在执行其他复杂的逻辑运算,等它扫描到处理喷码的指令时,产品早就过去了。
中断的解决方案:
中断程序可以立即响应这个1毫秒的信号,暂停主程序,立刻执行喷码指令,确保动作的精确性和实时性。这是主程序循环扫描模式无法比拟的。
2、系统效率优化:
核心问题:
如果一个任务不需要频繁执行,比如每1小时记录一次生产数据,我们该如何处理?
低效方法:
在主程序里设置一个定时器,每次循环都检查它是否到了1小时。这就像你为了等一个1小时后的电话,每秒钟都看一次手机,浪费了大量的CPU资源。
中断的解决方案:
设置一个定时中断。你告诉PLC:“1小时后叫我,这期间你别管我,干别的活去。”PLC的CPU就可以专注于主程序的其他控制任务,到了1小时,时钟事件会自动“叫醒”CPU,执行数据记录的中断程序。这极大地解放了CPU资源,提高了整体运行效率。
3、处理异步和突发事件:
核心问题:
工业现场充满了不可预测的事件,如急停按钮被按下、传感器突然故障、安全光幕被触发等。这些事件的发生时间点是完全随机的(异步的)。
中断的解决方案:
将这些紧急事件连接到PLC的中断输入点。一旦事件发生,无论主程序在做什么,都会被立即暂停,转而执行对应的中断程序(通常是安全停机、报警等)。这为系统提供了最高级别的安全保障。
二、中断程序的触发条件(分类详解)触发PLC中断程序的4种情况
硬件中断(外部中断)
上升沿/下降沿触发:
信号从0变1(如按钮按下、传感器检测到物体)或从1变0(如按钮松开、物体离开)的瞬间。这是最常用的硬件中断。
您提到的急停按钮:
急停通常是常闭触点,所以触发中断的是下降沿(信号从1变为0),表示线路被断开。
触发源:
PLC特定的数字量输入点(通常是可配置的)。
典型事件:
应用场景:
精确定位、事件捕捉、安全联锁。
定时器中断(内部中断)
循环定时中断:
每隔一个固定的时间间隔(如1ms, 10ms, 100ms)就执行一次。常用于需要周期性执行的任务,如PID控制回路计算、数据采样、与HMI/上位机通信等。
单次定时中断:
设定一个延时,时间到后仅执行一次。
触发源:
PLC内部的时钟。
典型事件:
应用场景:
过程控制、数据记录、通信任务。
高速计数器中断(内部中断)
计数值=预设值:
当编码器或流量计的脉冲计数达到您设定的某个值时触发。例如,送料电机转了1000圈(对应1000个脉冲)。
计数方向改变:
电机从正转变为反转,或反之。
外部复位:
接收到一个外部信号,将计数器清零。
触发源:
PLC内部的高速计数器模块。
典型事件:
应用场景:
长度/位置控制、速度测量、批量计数。
其他类型的中断(补充)
诊断中断:
当PLC自身或其模块(如模拟量输入模块、通信模块)检测到故障时(如断线、超量程),自动触发中断,执行故障处理程序。
通信中断:
当接收到来自其他设备(如另一台PLC、上位机)的特定通信请求或数据时触发。
程序扫描周期中断:
在主程序扫描开始或结束时触发,用于执行一些特殊的初始化或收尾工作。
三、中断程序的执行过程(详细步骤)
分为“暂停-保存-执行-恢复”几个阶段,我们把它具体化:
中断请求:
某个中断事件发生(如传感器信号变化)。
响应中断:
PLC在执行完当前正在执行的指令后,会立即检查是否有中断请求。
如果有,并且该中断未被屏蔽(允许),PLC会立即暂停主程序的执行。
保护现场:
这是至关重要的一步。PLC会像“按了暂停键”一样,将当前主程序的所有关键信息保存到一块专门的内存区域(称为“堆栈”或“中断栈”)。
保存的信息包括:
程序计数器(即主程序下一条该执行的指令地址)、累加器、寄存器、数据块寄存器等所有“工作记忆”。这确保了中断程序执行完后,主程序能无缝衔接,就像什么都没发生过一样。
执行中断服务程序:
PLC根据中断源的类型,找到并跳转到与之对应的中断程序(也称为中断服务程序, ISR)。
执行中断程序中的所有指令。这个过程通常要求尽可能短,以免影响其他中断或主程序的正常运行。
恢复现场:
中断程序执行完毕(通常以RETI或类似指令结束)。
PLC从“堆栈”中取出之前保存的所有信息,恢复到暂停前的状态。
返回主程序:
PLC从被暂停的地方(之前保存的程序计数器指向的地址)继续执行主程序。
四、关键注意事项(进阶知识)
中断优先级:
如果多个中断同时发生,PLC怎么办?PLC的中断系统是有优先级的。例如,硬件中断的优先级通常高于定时中断。PLC会先处理优先级最高的中断,高优先级的中断甚至可以打断正在执行的低优先级中断程序(称为中断嵌套)。
中断屏蔽:
在某些关键代码段,我们不希望被任何中断打扰。可以通过指令**暂时关闭(屏蔽)**所有或部分中断,执行完关键代码后再重新开启。
程序设计原则:
短小精悍:
中断程序应尽可能快地执行完毕。避免在中断程序中使用复杂的计算、长时间的延时或等待指令。
避免冲突:
如果中断程序和主程序会操作同一个变量(如数据块中的某个字),需要特别小心,防止数据被破坏。通常需要通过“互锁”机制来保护共享数据。
五、PLC中断的精髓
把中断程序想象成一个公司的CEO(主程序)正在开一个例行会议(循环扫描),这时突然来了一个紧急电话(中断事件)。CEO会:
暂停会议(暂停主程序)
让秘书记下会议开到哪里(保护现场)
立刻接听紧急电话并处理(执行中断程序)
处理完电话后,让秘书提醒会议之前开到哪里(恢复现场)
继续开会(返回主程序)
这个机制确保了PLC既能高效处理常规任务,又能对紧急和实时性要求高的事件做出秒级甚至毫秒级的响应,是现代工业自动化控制中不可或缺的核心技术。
欢迎大家在评论里面留言与交流!
PLC经典案例与源程序