在理解plc中断时,你首先要清楚plc的运算周期或者说是扫描周期。我们有必要说下plc顺控循环执行的流程,这是理解中断的前提,必须要掌握。可编程控制器在执行程序前,将可编程控制器的所有输入端子的ON/OFF状态读入输入映像区,程序执行过程中即使输入发生变化,输入映像区的内容也不会变化,在执行下一个循环的输入处理时读取该变化。plc根据程序内存中的指令内容,从输入映像区和其他软元件的映像区中读出各软元件的ON/OFF状态,然后从0步依次开始运算,并将每次得出的结果写入到映像区中。因此,各软元件的映像区随着程序的执行逐步改变其内容,此外,输出继电器的内部触点根据输出映像区的内容而执行动作。所有指令执行结束后,输出Y映像区中的,ON/OFF状态会传送至输出锁存内存,这个就作为可编程控制器的实际输出。执行以一次动作所需要的时间就是运算周期也叫扫描时间,那么中断与扫描周期有什么联系呢,中断就是不按照从上到下顺序的完整执行,而是中断程序优先单独运行程序处理而且是立即输出不参与整个周期运算。
我们知道plc扫描周期是很短的,因此我们很难看出plc顺控执行过程。这里我们不妨假设扫描周期为10s的时间,就是执行全部的程序需要10s的时间。有一个很简单的程序LD X0,OUT Y0,根据上图当X0为ON时,Y0不是马上就有输出的,而是等到10s后才输出,断开X0后,同样Y0也不是马上就关闭的,都需要得到扫描完后才有结果。那么这样在我们实际应用中plc就没什么使用了设备就无法进行工作了,这时候就需要中断处理了,采用输入中断功能,立即执行输入。实际上plc的运算时间是很短只有几毫秒,完全能够满足需要,但一些如高频脉冲输入、脉冲捕捉等时间在微秒级的肯定要受到周期运算的影响了。
因此如果在一个周期内要完成很多次ON/OFF状态处理时,必须使用中断功能了。在我们一般情况下很少用到中断,即使需要plc的高速指令都带有中断功能无需自己专门编写中断子程序了。例如高速计数器采用中断的方式对从特定的输入继电器出来的高速脉冲进行处理,所以无论运算时间多少都可进行计数,计数的结果或是使用高速计数器专用的比较指令立即输出,或是对高速计数器的计数值用高速计数器中断方式执行特定的程序处理。对高频脉冲进行计数不采用高速计数器进行计数,我们举例使用中断功能对高速输入进行计数。示例如下,从EI到FEND是主程序,从指针I101(输入X0的中断指针)开始到IRET是中断子程序,每当感应到X1的上升沿就执行子程序将数值立即传送到D10中,这样就避免了plc运算周期的影响。