说到中断可能很多人都对中断的本质含义都似懂非懂,这里如果我还是把定义和概念拉出来,肯定有人就要骂娘了,所以我还是拿讲课和大家打个比方,用这个例子把扫描和中断和大家讲清楚。
首先我们来看什么是中断工作方式,比方说有1个老师和10个学生,那么老师讲课的过程就相当于执行主程序,这时有学生突然有问题,举手向老师提问,那么这个学生就打断了老师的讲课,就相当于中断了主程序。老师停止讲课去回答这个学生的问题就相当于在执行中断程序。当老师回答完这个学生的问题,继续开始讲课。这对于PLC来说就相当于执行完中断程序,返回继续执行主程序。
那什么又是扫描的工作方式呢?还是以上课为例,老师讲课的时候不允许学生提问,当课程讲完后老师先问第1个学生是否有问题,如果第1个学生没有问题,老师问第2个学生是否有问题,以此类推,但是当老师问到第8个学生的时候,突然第1个学生说我有问题,这时如果按照扫描的工作方式,老师是不去理会第1个学生的,只有当老师问完第10个学生后才会来处理第1个学生的问题。
其实稍微熟悉一点计算机工作原理的朋友都应该清楚通常我们的笔记本或者台式机主要都是采用中断的工作方式,我们点一下鼠标或者按一下键盘,都相当于那个举手提问打断老师讲课的学生,而PLC则采用以循环扫描为主,中断为辅的工作模式。既然PLC也是计算机的一种,为什么PLC不采用普通电脑以中断为主的工作方式呢?很明显以中断为主的工作模式的运行效率要比以循环扫描为主的工作模式效率要高得多。下面我们回到这样一个场景,如果一个学生问题非常多老师刚回答完他的问题,他就又举手提问,如此往复不停循环,那么这节课就上不下去了,这对于我们电脑来说就叫做死机,也就是一个进程占据了系统所有的资源。这就是中断工作模式的缺点,虽然工作效率高但有可能会死机,而我们的PLC是绝对不能出现死机这种情况的,因此PLC为了保证运行的稳定,牺牲了部分工作效率而采用了循环扫描为主的工作模式。