Реальный вызов и обработка блоков OB2...OB18 осуществляется не сразу при появлении запроса на прерывание. Анализ наличия прерываний производится на границе блоков (при смене обрабатываемого в циклической программе блока) (см. рис. 7). Анализируются все поступившие запросы, и вызывается организационный блок с высшим приоритетом. Самый высокий приоритет имеет блок с меньшим номером, с увеличением номера блока приоритет убывает. Затем системной программой блокируется обработка прерываний до команды BE вызванного организационного блока, т.е. все вложенные в OB блоки обрабатываются даже при наличии запроса на прерывание, имеющего более высокий приоритет. По окончании обработки вызванного OB прерывания разблокируются, и обрабатывается следующий по приоритету запрос. Продолжение циклической обработки программы происходит только по окончании обслуживания всех запросов на прерывание.
![]() |
Для сокращения времени реакции на вызов блоков OB2...OB18 необходимо разбивать пользовательскую программу на большее количество программных и функциональных блоков. Время реакции на прерывание для блока с низшим приоритетом увеличивается соответственно на время обработки блоков, имеющих более высокий приоритет. Если выполнение программы по какой-либо причине не должно прерываться, то она должна находиться в одном блоке. Обработку по сообщению можно также блокировать командой AS. В этом случае обработка по сообщению не будет выполняться до команды AF.
(П) – точки прерывания, где может быть вставлена обработка по сообщению или обработка с управлением по времени;
(Н) – начальные и конечные точки обработки программы по сообщению или обработки с управлением по времени.
Рис. 7. Прерывание циклической обработки блоками OB2...OB18.
На примере вызова ОВ13 это выглядит так:








