Манипулирование прерываниями с задержкой
После того как Вы вызвали SFC 32 "SRT_DINT", операционная система по истечении заданного времени задержки генерирует прерывание, иными словами, вызывается выбранный OB прерываний с задержкой. Это прерывание известно как прерывание с задержкой.
Условия для вызова
Чтобы прерывание с задержкой могло быть вызвано операционной системой, должны быть выполнены следующие условия:
- OB прерываний с задержкой должен быть запущен посредством SFC32 "SRT_DINT."
- Выбор OB прерываний с задержкой не должен быть отменен с помощью STEP 7.
- OB прерываний с задержкой должен существовать в CPU.
Назначение SFC32 - SFC34
Системные функции SFC32 - SFC34, описанные в следующих разделах, используются следующим образом:
- для запуска прерываний с задержкой (SFC32 "SRT_DINT")
- для отмены прерываний с задержкой (SFC33 "CAN_DINT")
- для опроса прерываний с задержкой (SFC34 "QRY_DINT")
В следующей таблице я покажу различные ситуации.
Если... | и... | то... |
---|---|---|
запускается прерывание с задержкой (вызовом SFC32 "SRT_DINT"). | уже запущено прерывание с задержкой, | время задержки заменяется; прерывание с задержкой запускается вновь. |
OB прерываний с задержкой не существует к моменту вызова, | операционная система генерирует ошибку класса приоритета (вызывает OB85). Если OB 85 не существует, то CPU переходит в состояние STOP. | |
запуск прерывания произошло в OB запуска и время задержки истекло прежде, чем CPU оказался в RUN | вызов OB прерывания с задержкой задерживается до тех пор, пока CPU не перейдет в RUN. | |
время задержки истекло | ранее запущенный ОВ прерываний с задержкой еще исполняется | операционная система генерирует ошибку времени (вызывает OB80 Если OB 80 не существует, то CPU переходит в состояние STOP. |
Теплый рестарт и холодный рестарт
При теплом и холодном рестарте все настройки прерывания с задержкой, сделанные в программе пользователя с помощью SFC, стираются.
Старт в OB запуска
Прерывание с задержкой может стартовать в OB запуска. Для вызова OB прерываний с задержкой должны быть выполнены два условия:
- Истекло время задержки
- CPU находится в режиме RUN
Если время задержки истекло, а CPU еще не находится в режиме RUN, то вызов OB прерываний с задержкой откладывается до тех пор, пока CPU не перейдет в состоянии RUN. Тогда OB прерываний с задержкой вызывается еще до первой команды в OB1
Запуск прерывания с задержкой с помощью SFC32 "SRT_DINT"
С помощью SFC 32 "SRT_DINT" (start time-delay interrupt [запустить прерывание с задержкой])Вы запускаете прерывание с задержкой, которое по истечении времени задержки (параметр DTIME) вызывает OB прерываний с задержкой.
С помощью параметра SIGN Вы можете ввести идентификатор для распознавания запуска прерывания с задержкой. Значения DTIME и SIGN вновь появляются в информации о событии запуска указанного OB, когда он выполняется.
Параметр | Описание | Тип данных | Область памяти | Характеристика |
---|---|---|---|---|
OB_NR | INPUT | INT | I, Q, M, D, L, константа |
Номер OB для запуска с задержкой времени (OB20 - OB23). |
DTIME | INPUT | TIME | I, Q, M, D, L, константа |
Длительность задержки (от 1 до 60000 мс) |
SIGN | INPUT | WORD | I, Q, M, D, L, константа |
Идентификатор, который вводится в информацию о событии запуска OB при вызове OB прерываний с задержкой. |
RET_VAL | OUTPUT | INT | I, Q, M, D, L, | Если при выполнении функции происходит ошибка, то фактический параметр RET_VAL содержит код ошибки. |
Точность
Время между вызовом SFC 32 "SRT_DINT" и запуском OB прерываний с задержкой максимум на одну миллисекунду меньше, чем выбранное время, если только никакие события прерывания не задерживают вызов.
Информация об ошибках
Код ошибки (W#16#...) | Описание |
---|---|
0000 | Ошибки не было. |
8090 | Ошибочный параметр OB_NR |
8091 | Ошибочный параметр DTIME |
<-- Предыдущая статья | Следующая статья --> |