Особенности прерывания циклической обработки блоками OB2.OB18

Реальный вызов и обработка блоков OB2...OB18 осуществляется не сразу при появлении запроса на прерывание. Анализ наличия прерываний производится на границе блоков (при смене обрабатываемого в циклической программе блока) (см. рис. 7). Анализируются все поступившие запросы, и вызывается организационный блок с высшим приоритетом. Самый высокий приоритет имеет блок с меньшим номером, с увеличением номера блока приоритет убывает. Затем системной программой блокируется обработка прерываний до команды BE вызванного организационного блока, т.е. все вложенные в OB блоки обрабатываются даже при наличии запроса на прерывание, имеющего более высокий приоритет. По окончании обработки вызванного OB прерывания разблокируются, и обрабатывается следующий по приоритету запрос. Продолжение циклической обработки программы происходит только по окончании обслуживания всех запросов на прерывание.

 
 

Для сокращения времени реакции на вызов блоков OB2...OB18 необходимо разбивать пользовательскую программу на большее количество программных и функциональных блоков. Время реакции на прерывание для блока с низшим приоритетом увеличивается соответственно на время обработки блоков, имеющих более высокий приоритет. Если выполнение программы по какой-либо причине не должно прерываться, то она должна находиться в одном блоке. Обработку по сообщению можно также блокировать командой AS. В этом случае обработка по сообщению не будет выполняться до команды AF.

(П) – точки прерывания, где может быть вставлена обработка по сообщению или обработка с управлением по времени;

(Н) – начальные и конечные точки обработки программы по сообщению или обработки с управлением по времени.

Рис. 7. Прерывание циклической обработки блоками OB2...OB18.

На примере вызова ОВ13 это выглядит так:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: