Для обработки событий, происходящих асинхронно по отноше- нию к выполнению программы, лучше всего подходит механизм прерываний. Прерывание можно рассматривать как некоторое осо- бое событие в системе, требующее моментальной реакции.
Возникновение подобных сигналов обусловлено такими собы- тиями, как:
завершение операций ввода/вывода;
истечение заранее заданного интервала времени;
попытка деления на нуль;
сбой в работе аппаратного устройства и др.
Прерывание (англ. interrupt) – сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение теку- щей последовательности команд приостанавливается и управление передается обработчику прерывания, который реагирует на собы- тие и обслуживает его, после чего возвращает управление в пре- рванный код.
Основная цель введения прерываний – реализация асинхронного режима работы и распараллеливания работы отдельных устройств вычислительного комплекса. Механизм прерываний реализуется аппаратно-программными средствами.
Структуры систем прерываний могут быть самыми различ- ными, но все они имеют общую особенность – прерывание не- пременно ведет за собой изменение порядка выполнения команд процессором.
Обработка прерывания в ПЛК (рис. 104) производится в три этапа:
Прекращение выполнения текущей программы. Должно про- изойти так, чтобы потом вернуться и продолжить работу. Для этого необходимо сохранить содержимое регистров, так как они являют- ся ресурсами, разделяемыми между программами. Эти регистры сохраняются микропроцессором автоматически. Наиболее удоб- ным местом хранения регистров является стек.
Переход к выполнению и выполнение программы обработки прерывания. Здесь определяется источник прерывания и вызывает- ся соответствующий обработчик прерывания.
Возврат управления прерванной программе. Необходимо при- вести стек в состояние, в котором он был сразу после передачи управления данной процедуре.
При обработке каждого прерывания должна выполняться сле- дующая последовательность действий:
восприятие запроса на прерывание: прием сигнала и иденти- фикация прерывания;
запоминание состояния прерванного процесса: определяется значением счетчика команд (адресом следующей команды) и со- держимым регистров процессора;
передача управления прерывающей программе (в счетчик ко- манд заносится начальный адрес подпрограммы обработки преры- ваний, а в соответствующие регистры – информация из слова состояния процессора);
обработка прерывания;
восстановление прерванного процесса и возврат в прерван- ную программу.
Рис.104.Блок-схема обработки прерывания в ПЛК
Главные функции механизма прерывания:
распознавание или классификация прерываний;
передача управления соответственно обработчику прерываний;
корректное возвращение к прерванной программе (перед пе- редачей управления обработчику прерываний содержимое регист- ров процессора запоминается либо в памяти с прямым доступом, либо в системном стеке).