СИНХРОННЫЕ И АСИНХРОННЫЕ ОШИБКИ

Цели

ОРГАНИЗАЦИОННЫЕ БЛОКИ

 

Рис. 13.29.Организационные блоки

После завершения изучения данной главы слушатели ...

… будут знать о доступных организационных блоках

… будут понимать разницу между "Полным перезапуском" ("Complete restart"), 'Теплым перезапуском" ("Warm restart") и "Холодным перезапуском" ("Cold restart")

… смогут объяснить принципы обработки прерываний

… будут знать следующие прерывания: 'Time-of-Day Interrupt" (прерывание по времени суток), "Cyclic Interrupt' (циклическое прерывание). "Hardware Interrupt" (аппаратное прерывание). "Time-Delay Interrupt" (прерывание с задержкой времени). "Diagnostic Interrupt' (диагностическое прерывание)

… будут знать ОВ обработки синхронных и асинхронных ошибок и будут уметь использовать их для управления реакцией CPU на обнаруженные ошибки

… будут способны интерпретировать стартовую информацию ОВ и будут уметь считывать её в программе

Рис. 13.30.Общий обзор организационных блоков

Запуск Программа запуска выполняется перед циклическим выполнением программы после восстановления питания или изменения режима работы (переключателем режима CPU или программатором).Для запуска используются OB100, OB101, OB102. В этих блоках Вы можете, например, выполнить предварительные установки для коммуникаций.

 

ЦиклическаяНепрерывно выполняемая программа находится в

программаорганизационном блоке OB1. После полного выполнения программы пользователя в OB1, новый цикл начинается с обновления областей отображения процесса и, затем, начиная с первой инструкции OB1. Время цикла сканирования и время реакции системы - результат этих операций.

Время реакции системы складывается из времени работы операционной системы CPU и времени, необходимого для выполнения программы пользователя. Время реакции, то есть то, как быстро, после изменения на входе, может быть переключен выход, равняется удвоенному времени цикла сканирования.

 

Периодически Периодическое выполнение программы можно

выполняемыепрерывать с фиксированными интервалами. Блоки

программы OB30…OB37 вызываются с заданными периодами, например, каждые 100 мс, начиная с момента

инициализации. В этих блоках, в частности, программируются блоки управления с обратной связью, которые обычно требуют определенного интервала дискретизации. OB прерывания по времени дня выполняется в специфическое время, например, ежедневно в 17:00, чтобы сохранить данные за рабочую смену.

 

Выполнение Прерывание от аппаратуры можно использовать

программы,для быстрой реакции на события процесса. Сразу

управляемоепосле внешнего события прерывается циклическая

событиями программа и выполняется программа обработки

прерывания. Прерывание с задержкой запускается с заданным интервалом после события в процессе.
В OB ошибок Вы можете определить, как должна вести себя система при ошибке, например, если выходит из строя резервная батарея.

Рис. 13.31. Стартовые OB

ПолныйПолный перезапуск (Complete Restart) – это такой

перезапуск перезапуск системы, прикотором стираются

Complete Restart)данные таблиц входов/выходов образа (процесса(PII, PIQ) и все нереманентные меркеры, таймеры и счетчики. В то же время реманентные меркеры, таймеры и счетчики, а также текущие данные в DB сохраняются (только при наличии резервной батареи; а для S7-300™ даже без резервной батареи и если используется модуль памяти EPROM и заданы параметры для реманентных областей и поведения CPU).Программа в OB 100 выполняется один раз, после чего запускается выполнение циклической программы.

 

"Теплый""Теплый" перезапуск (Warm Restart) – это такой

перезапуск,перезапуск системы, прикотором сохраняются

(Warm Restart) состояния всех адресов (меркеры, таймеры, счетчики данные таблиц входов/выходов образа процесса и текущие данные в DB. Программа в OB 101 выполняется один раз, после чего запускается выполнение циклической программы с точки, в которой произошло прерывание (по причине выключения питания или перехода CPU в состояние STOP). После завершения, начиная с этой точки, оставшейся части цикла циклической программы ее циклическое выполнение возобновляется с самого начала.

 

"Холодный"CPU типов 318-2 и 417-4 имеют дополнительный

перезапусквариант перезапускасистемы – так называемый

(Cold Restart) "холодный" перезапуск (Cold Restart). Этоттип перезапуска может быть установлен для случая возобновления подачи питающего напряжения после его выключения. Установка производится с помощью утилиты HW Config при параметризации CPU. Единственное отличие "холодного" перезапуска (cold restart) от полного перезапуска (complete restart) заключается в том, что при "холодном" перезапуске все меркеры, таймеры и счетчики (в том числе и реманентные!) стираются. Кроме того, при "холодном" перезапуске текущие данные в DB перезаписываются текущими значениями, сохраненными в загрузочной (load) памяти или теми значениями, которые были изначально загружены с блоками данных в CPU.

Рис. 13.32. Прерывания циклической программы

Вызовы блоков OB Организационные блоки (OB) являются интерфейсом между операционной системой CPU и пользовательской программой. Организационные блоки запускаются исключительно операционной системой. Существуют различные стартовые события (прерывания по времени суток [time-of-day interrupts], аппаратные прерывания [hardware interrupts] ), каждое из которых приводит к запуску соответствующего (связанного с ним) организационного блока.

 

Прерывания Когда операционная система вызывает другой OB,

циклической при этом происходит прерывание выполнения

программыциклической программы, так как блок OB1имеет самый низкий приоритет. Следовательно, любой другой организационный блок OB может прервать выполнение главной программы, чтобы выполнить свою собственную программу. Впоследствии OB1 возобновляет свое выполнение, начиная с точки прерывания. Если вызывается OB с более высоким приоритетом, чем приоритет выполняемого в данный момент блока, то выполнение последнего прерывается после завершения обработки текущей инструкции. После этого операционная система сохраняет целиком стек регистров (register stack) прерванного блока. Эта информация для регистров вновь востребуется при возобновлении выполнения прерванного блока.

 

Приоритеты Каждое выполнение программы OB может прерываться событием (OB) с высшим приоритетом на границах команд. Приоритеты имеют значения от 1 до 28, 1 имеет самый низкий приоритет и 28 - самый высокий приоритет. OB,

имеющие одинаковый приоритет, не прерывают друг друга, но запускаются один после другого в последовательности возникновения. Кроме того, в S7-400™ имеется ОВ90, предназначенный для выполнения фоновых задач. Этот ОВ имеет самый низкий приоритет - 29. Выполнение этого ОВ могут прерывать любые другие ОВ. Если ОВ в данном проекте не вызывается, то ему нужно назначить приоритет 0

Рис. 13.33. Прерывания во времени суток (Time-of-Day Interrupt) (OB10)

Прерывания Прерывания по времени суток используются для

по времени выполнения определенной программы, вызываемой

(Time-of-Day) в OB 10 (к примеру) или только один раз в определенное время или периодически (ежеминутно, ежечасно, один раз день, один раз в недели, раз в месяц, раз в год), начиная с определенного времени.Прерывания по времени конфигурируются с помощью утилиты "HW Config". Чтобы выбрать, когда и как OB 10 должен быть активирован, выберите опции меню: CPU -> Object Properties (CPU -> Свойства объекта) (вкладка"Time-of-Day Interrupts").

 

 

"Active" Если Вы отметите опцию " Active", то OB прерывания по времени будет активировано при каждом перезапуске CPU.

 

ПримечаниеПрерываниями по времени можно управлять с помощью системных функций в RT-режиме. В наличии есть следующие системные функции:

•SFC 28 "SET_TINT" Установка начальной даты, времени и периода
•SFC 29 "CAN_TINT" Отмена прерывания по времени
•SFC 30 "ACT_TINT" Активация прерывания по времени
•SFC 31 "QRY_TINT" Запрос прерывания по времени.

 

S7-400™ В PLC S7-400™ может быть организовано до восьми различных OB для обработки прерываний по времени ("Time-of-Day") (OB 10 …17).

Рис. 13.34. Циклическое прерывание (Cyclic Interrupt) (OB35)

Циклическое Циклические прерывания используются для

прерывание выполнения блоков через фиксированные интервалы. Циклическим прерыванием в S7-300™ является блок OB 35. По умолчанию интервал вызова OB 35 = 100 мс. Вы можете изменить это значение в пределах от 1 мс до 1 минуты.

 

Стартовое время Когда Вы активируете управляемое временем прерывание, Вы определяете интервал относительно "стартового времени". Стартовое время начинается сразу при переходе CPU от STOP к RUN.

 

ИнтервалВы должны убедиться, что интервал, который Вы определяете, дольше, чем время, необходимое для выполнения OB. Операционная система циклически вызывает OB 35 через определенное время. Если OB 35 еще активен в это время, то операционная система вызывает OB 80 (OB обработки ошибки циклического прерывания).

 

Примечание Системные функции в RT-режиме не могут управлять циклическими прерываниями (cyclic interrupts).

 

S7-400™ В PLC S7-400™ может быть организовано до девяти различных OB для обработки циклических прерываний (с OB 30 до OB 38).

Рис. 13.35. Аппаратное прерывание (Hardware Interrupt) (OB40)

Аппаратное Программа в OB аппаратного прерывания (OB40)

прерывание выполняется сразу, как только произойдет определенное событие.

Аппаратные прерывания могут запускаться различными модулями посредством соответствующих сигналов:

•Для параметрируемых сигнальных модулей (DI, DO, AI, AO) Вы можете использовать утилиту "HW Config" для определения условий активации аппаратных прерываний.

•В случае использования модулей CP и FM характеристики прерываний определяются с помощью программного обеспечения для конфигурирования соответствующего модуля.

 

Пример В примере, приведенном на рисунке, указанные значения предельных величин сконфигурированы для модуля аналоговых входов. Если измеренная величина превышает заданный предел, вызывается OB40. Это имеет тот же эффект, что и включение в OB1 операции сравнения, которая вызывает FB или FC, когда достигается верхний предел. Тем не менее, если Вы используете OB40, Вам не нужно писать программу для другого блока. Вы можете использовать программу в OB40 для генерации прерывания или для управления процессом.

 

S7-400™ В PLC S7-400™ может быть организовано до восьми различных OB для обработки аппаратных прерываний (OB 40 …OB 47).

Рис. 13.36. Прерывание с задержкой времени (Time-Delay Interrupt) (OB20)

Прерывание Программа в OB (OB20) выполняется спустя

с задержкой определенное время после некоторого события.

OB20 может активироваться только вызовом в программе системной функции SFC32 (SRT_DINT). Эта функция используется также для установки времени задержки.

 

SFC 32•OB_NR = Номер OB, который должен выполниться с задержкой времени.

•DTIME = Время задержки (от 1 до 60000 мс)

•SIGN = Определяемое пользователем значение, которое передается во временную переменную OB2х_SIGN вызываемого блока OB2х_ для идентификации события, вызвавшего данный блок

•RET_VAL = Код ошибки для случая, если возникнет ошибка во время выполнения OB

прерывания с задержкой (См. контекстную справку для кодов ошибок).

 

Примечание Кроме SFC32 могут применяться также и другие SFC для работы с прерываниями с задержкой:

•SFC33 (CAN_DINT) = Отмена прерывания с задержкой

•SFC34 (QRY_DINT) = Запрос состояния прерывания с задержкой.

 

S7-400™ В PLC S7-400™ может быть организовано до четырех различных OB для обработки прерываний с задержкой времени (OB20…23).

Рис. 13.37. Диагностическое прерывание (Diagnostic Interrupt) и прерывания асинхронных ошибок (Asynchronous Error Interrupt) (OB81…87)

Асинхронные Асинхронные ошибки рассматриваются как

ошибки функциональные отказы PLC. Они происходят асинхронно относительно выполнения программы и не могут “прослеживаться” в конкретной точке программы (например, диагностическое прерывание из модуля).

 

Реакция системы Если ошибка обнаруживается в RUN-режиме и запрограммирован соответствующий OB для обработки ошибки, то OB вызывается и выполняется его программа. Эта программа может, например, содержать:

• команду на включение сирены;

• инструкции для копирования данных с последующей инструкцией перехода к состоянию STOP;

• программу для записи частоты проявления дефекта, не вызывая перехода CPU в режим STOP.

 

Примечание Если OB ошибки для конкретного дефекта не предусмотрен, то CPU автоматически переходит в режим STOP.

 

Пример Прерывание OB82 при асинхронной ошибке вызывается, например, в следующих ситуациях :

• Обрыв провода в модуле с внутренней диагностикой

• Неисправность питания в модуле аналоговых входов

• Превышен диапазон измерения в модуле аналоговых входов и т.д.

Рис. 13.38. OB асинхронных ошибок

Приоритет OB обработки ошибок вызываются при возникновении асинхронной ошибки и выполняются немедленно, так как они имеют самый высший приоритет среди всех прерываний и среди всех OB обработки ошибок:

• Приоритет 26, если происходит ошибка, когда выполняется OB с более низким приоритетом (<26) (режим RUN)

• Приоритет 28, если происходит ошибка пока выполняется OB запуска (с приоритетом 27) (режим STURTUP).

 

 

Рис. 13.39. Синхронные ошибки

 

Синхронные Эти ошибки могут прослеживаться в конкретной

ошибки точке программы, если ошибка проявляется во время выполнения определенной команды. OB ошибки вызываются как реакция на синхронные ошибки в программе, причем с тем же самым приоритетом, что и у блока, в котором была обнаружена ошибка.

 

Рис. 13.40. Системные функции для управления OB прерываний

 

OB Вы найдете полный список и описание OB ошибок в интерактивной справочной системе:

LAD/STL/FBD -> Help -> Contents -> Help on Blocks -> Help on Organization Blocks (Редактор LAD/STL/FBD -> Справка -> Содержание -> Справка по блокам -> Справка по организационным блокам).

 

SFC Системные функции и их использование, вызов, назначение параметров обсуждаются в курсе ST-7PRO2.

 

 

 

Рис. 13.41. Стартовая информация OB

 

Стартовая При вызове OB операционной системой Вы можете

информация получить стандартную системную стартовую информацию в стеке локальных данных. Стартовая информация имеет длину 20 байтов и доступна после начала выполнения OB.

 

Доступ к стартовой STEP 7 предоставляет символьный доступ к

информации стартовой информации в стандартной таблице объявлений (пример для OB81)

 

Таблица 13.1. «Пример для OB81»

 

 

Примечание Вы можете изменить или дополнить стандартную таблицу объявлений. Смысл переменных объясняются Вам в интерактивной справочной системе или в руководстве по стандартным и системным Функциям

Например, переменная OB8_FLT_ID содержит признак неисправности и указание на неисправную батарею.