Назад
Диагностика
Программирование с помощью STEP 7 версии 5.0
21-22 C79000-G7076-C562-02
21.8.4 Диагностические функции
Системная диагностика обнаруживает, анализирует и сообщает об ошибках,
происходящих внутри программируемого контроллера. Для этого в каждом
CPU и каждом модуле, обладающем возможностью диагностики системы
(например, FM 354), имеется диагностический буфер, в который вводится
подробная информация обо всех диагностических событиях в порядке их
появления.
Диагностические события
В качестве диагностических событий отображаются, например, следующие
входные сообщения:
внутренние и внешние неисправности в модуле
системные ошибки в CPU
переключения режимов работы (например, из RUN в STOP)
ошибки в программе пользователя
вставка/снятие модулей
сообщения пользователя, вводимые посредством системной функции
SFC52
После сброса памяти содержимое диагностического буфера сохраняется.
Используя диагностический буфер, можно анализировать ошибки в системе и
в более позднее время с тем, чтобы найти причину перехода в STOP или
проследить возникновение отдельных диагностических событий диагностики
и классифицировать их.
Сбор диагностических данных
Вам нет нужды программировать сбор диагностических данных средствами
диагностики системы. Это стандартный элемент, работающий автоматически.
SIMATIC S7 предоставляет различные диагностические функции. Некоторые
из этих функций встроены в CPU, а другие предоставляются модулями (SM,
CP и FM).
Индикация неисправностей
Внутренние и внешние неисправности модулей отображаются на лицевых
панелях модуля. Светодиодные дисплеи и их анализ описаны в руководствах
по аппаратным средствам S7. В случае S7-300 внутренние и внешние
неисправности отображаются совместно как групповая ошибка.
CPU распознает системные ошибки и ошибки в программе пользователе и
вводит диагностические сообщения в список состояний системы и в
диагностический буфер. Эти диагностические сообщения можно читать в
программаторе.
Сигнальные и функциональные модули с диагностическими возможностями
обнаруживают внутренние и внешние ошибки модулей и генерируют
диагностическое прерывание, на которое вы можете реагировать при помощи
OB прерываний.
Диагностика
Программирование с помощью STEP 7 версии 5.0
C79000-G7076-C562-02
21-23
21.9 Программные средства обработки ошибок
21.9.1 Программные средства обработки ошибок
Когда обнаруживаются ошибки в обработке программы (синхронные ошибки)
и ошибки в программируемом контроллере (асинхронные ошибки), CPU
вызывает соответствующий организационный блок (OB) для обработки
ошибки:
Ошибка OB для
ошибки
Ошибка резервирования ввода/вывода OB70
Ошибка резервирования CPU OB72
Ошибка времени OB80
Сбой источника питания OB81
Диагностическое прерывание OB82
Прерывание при вставке/снятии модуля OB83
Отказ аппаратных средств CPU OB84
Ошибка класса приоритета OB85
Отказ стойки или отказ станции в децентрализованной периферии OB86
Ошибка связи OB87
Ошибка программирования OB121
Ошибка доступа для ввода/вывода OB122
Если соответствующий OB отсутствует, то CPU переходит в режим STOP. В
противном случае в OB можно хранить команды относительно того, как он
должен реагировать на такую сбойную ситуацию. Это означает, что
воздействие ошибки можно уменьшить или устранить.
Основная последовательность действий
Создание и открытие OB
1. Отобразите информацию о модуле для вашего CPU.
2. Щелкните по кнопке "Blocks" [блоки] во вкладке "Performance Data
[Эксплуатационные данные]".
3. На основе отображенного списка определите, разрешен ли OB, который
вы хотите программировать, для данного CPU.
4. Вставьте OB в папку "Blocks" вашей программы и откройте OB.
5. Введите программу для обработки ошибки.
6. Загрузите OB в программируемый контроллер.
Диагностика
Программирование с помощью STEP 7 версии 5.0
21-24 C79000-G7076-C562-02
Программирование мер по обработке ошибок
1. Проанализируйте локальные данные OB, чтобы определить точную
причину ошибки. Переменные OB8xFLTID и OB12XSWFLT в локальных
данных содержат код ошибки. Их значение описано в справочном
руководстве "Системные и стандартные функции”.
2. Перейдите к разделу программы, который реагирует на эту ошибку.
Вы найдете пример обработки диагностических прерываний в оперативной
справочной информации System and Standard Functions [Системные и
стандартные функции] под заголовком "Example of Module Diagnostics with
SFC51 (RDSYSST) [Пример диагностики модуля при помощи SFC51
(RDSYSST)]".
Вы можете найти подробную информацию о блоках OB, SFB и SFC в
соответствующей оперативной справке Help on Blocks [справка о блоках].
21.9.2 Анализ выходного параметра RET_VAL
Используя выходной параметр RET_VAL (возвращаемое значение),
системная функция указывает, оказался ли CPU способным правильно
выполнить функцию SFC или нет.
Информация об ошибках в возвращаемом значении
Возвращаемое значение имеет целочисленный тип данных (INT). Знак целого
числа указывает, является ли оно положительным или отрицательным целым
числом. Отношение возвращаемого значения к значению ”0" указывает,
произошла ли при выполнении функции ошибка или нет (см. таблицу):
Если во время выполнения функции происходит ошибка, то
возвращаемое значение меньше, чем "0". Знаковый бит целого числа
равен1".
Если функция выполняется без ошибок, то возвращаемое значение
больше, чем "0", или равно "0". Знаковый бит целого числа равен ”0".
Обработка SFC в CPU Возвращаемое значение Знак целого числа
Произошла ошибка Меньше, чем ”0"
Отрицательный
(знаковый бит
равен1")
Ошибки нет Больше, чем "0", или равно "0" Положительный
(знаковый бит
равен ”0")
Диагностика
Программирование с помощью STEP 7 версии 5.0
C79000-G7076-C562-02
21-25
Реакция на информацию об ошибках
Если во время выполнения SFC происходит ошибка, то SFC предоставляет в
возвращаемом значении (RET_VAL) код ошибки.
Различают:
общий код ошибки, который могут выводить все SFC, и
конкретный код ошибки, который SFC может выводить в зависимости от
свой конкретной функции.
Передача значения фу нкции
Некоторые SFC используют выходной параметр RET_VAL также для того,
чтобы передать значение функции, например, SFC64 TIMETCK передает
системное время, которое она считала, при помощи RET_VAL.
21.9.3 OB ошибок как реакция на обнаруженные ошибки
Обнаруживаемые ошибки
Системная программа может обнаруживать следующие ошибки:
Неправильное функционирование CPU
Ошибка в выполнении системной программы
Ошибка в программе пользователя
Ошибка при вводе/выводе
В зависимости от типа ошибки CPU устанавливается в режим STOP или
вызывается OB ошибки.
Программирование реакций
Вы можете проектировать программы, чтобы реагировать на различные типы
ошибок и задавать способ, которым реагирует CPU. Затем программу для
конкретной ошибки можно сохранить в OB ошибок. Если вызывается этот OB
ошибок, то выполняется данная программа.
CPU вызывает соответствующий OB ошибок.
Если запрограммирован OB ошибок, то CPU
выполняет программу в этом OB. Если OB ошибок
не запрограммирован, то CPU переходит в
состояние "STOP". (Исключение: OB 81)
Возникает ошибка ...
Диагностика
Программирование с помощью STEP 7 версии 5.0
21-26 C79000-G7076-C562-02
OB ошибок
Различают синхронные и асинхронные ошибки следующим образом:
Синхронные ошибки могут быть поставлены в соответствие команде MC7
(например, команде загрузки для сигнального модуля, который был снят).
Асинхронные ошибки можно поставить в соответствие классу приоритета
или всему программируемому логическому контроллеру (например,
превышено время цикла).
Следующая таблица показывает типы ошибок, которые могут происходить. За
справкой о том, поддерживает ли ваш CPU указанные OB, обратитесь к
руководству "Программируемый контроллер S7-300: Аппаратные средства и
монтаж" или "Программируемые контроллеры S7-400, M7-400: Аппаратные
средства и монтаж".
Класс ошибки Тип ошибки OB Приоритет
Резервирование
Ошибка резервирования
ввода/вывода (только в H CPU)
OB70 25
Ошибка резервирования CPU
(только в H CPU)
OB72 28
Асинхронная Ошибка времени OB80 26
Сбой источника питания OB81
(или 28, если OB ошибки
вызывается в
Диагностическое прерывание OB82 программе запуска)
Прерывание вставки/снятия модуля OB83
Отказ аппаратных средств CPU OB84
Ошибка последовательности
выполнения программы
OB85
Отказ стойки OB86
Ошибка связи OB87
Синхронная Ошибка программирования OB121
Приоритет OB, вызвавшего
ошибку
Ошибка доступа для ввода/вывода OB122
Диагностика
Программирование с помощью STEP 7 версии 5.0
C79000-G7076-C562-02
21-27
Пример использования организационного блока ошибки OB81
Используя локальные данные (стартовую информацию) в OB ошибки, вы
можете оценить тип произошедшей ошибки.
Например, если CPU обнаруживает неисправность батареи, то операционная
система вызывает OB81 (см. рисунок).
Выполнение
программы
OB 81
Операци-
онная
систем а
OB 81 проверяет тип
обнаруженного сбоя питания и
отображает, действительно ли
сбой был вызван отказом
батареи.
Истощение батареи
(CPU)
1
Нет резервного напряжения
(CPU)
Отказ источника питания 24 В
(
CPU
)
1
Истощение батареи
(устройство расширения )
1
Нет резервного напряжения
(устройство расширения )
1
Отказ источника питания 24 В
(устройство расширения )
1
21
22
23
31
32
33
1
Нет в S7-300.
CPU обнаруживает
отказ батареи
Типы сбоя источника питания
Вы можете написать программу, которая оценивает код события,
запускаемый вызовом OB81. Вы можете также написать программу, которая
осуществляет реакцию, такую как активизация выхода, связанного с лампой
на станции оператора.
Диагностика
Программирование с помощью STEP 7 версии 5.0
21-28 C79000-G7076-C562-02
Локальные данные организационного блока ошибки OB81
Следующая таблица показывает временные переменные, которые должны
быть описаны в этом случае в таблице описания переменных OB81.
Символ
Battery error [сбой батареи] (BOOL) должен быть идентифицирован
как выход (например, Q 4.0) так, чтобы другие части программы могли
обращаться к этим данным.
Описание Имя Тип Объяснение
TEMP OB81EVCLASS BYTE Класс ошибки/Идентификатор ошибки 39xx
TEMP OB81FLTID BYTE Код ошибки:
b#16#21 =
по крайней мере, одна батарея резервного
питания CPU истощена
1)
b#16#22 =
нет резервного напряжения в CPU
b#16#23 =
отказ источника питания 24 В в CPU
1)
b#16#31 =
по крайней мере, одна батарея резервного
питания стойки расширения истощена
1)
b#16#32 =
нет резервного напряжения в стойке
расширения
1)
b#16#33 =
отказ источника питания 24 В стойки
расширения
1)
TEMP OB81PRIORITY BYTE Класс приоритета = 26/28
TEMP OB81OBNUMBR BYTE 81 = OB81
TEMP OB81RESERVED1 BYTE Зарезервировано
TEMP OB81RESERVED2 BYTE Зарезервировано
TEMP OB81MDLADDR INT Зарезервировано
TEMP OB81RESERVED3 BYTE Имеет смысл только для кодов ошибки
B#16#31, B#16#32, B#16#33
TEMP OB81RESERVED4 BYTE
TEMP OB81RESERVED5 BYTE
TEMP OB81RESERVED6 BYTE
TEMP OB81DATETIME DATEANDTIME Дата и время запуска OB
1)
= нет в случае S7-300.
Диагностика
Программирование с помощью STEP 7 версии 5.0
C79000-G7076-C562-02
21-29
Типовая программа для организационного блока ошибки OB81
Типовая программа на языке AWL показывает, как вы можете считывать код
ошибки в OB81.
Программа структурирована следующим образом:
В OB81 (OB81FLTID) считывается код ошибки и сравнивается со
значением для события ”battery exhausted [истощение батареи]"
(B#16#3921).
Если код ошибки соответствует коду события ”battery exhausted
[истощение батареи]", то программа переходит к метке Berr и
активизирует выход
batteryerror.
Если код ошибки не соответствует коду события ”battery exhausted
[истощение батареи]", то программа сравнивает этот код с кодом события
”battery failure [отказ батареи]".
Если код ошибки соответствует коду события ”battery failure [отказ
батареи]", то программа переходит к метке Berr и активизирует выход
batteryerror. В противном случае блок завершается.
AWL Описание
LB#16#3921
L#OB81FLTID
== I
JC Berr
Lb#16#3922
<> I
BEC
Berr: S #batteryerror
Сравнить код события ”battery exhausted
[истощение батареи]" (B#16#3921) с
кодом ошибки для OB81. Если они
одинаковы (истощение батареи), то
перейти к Berr. Ср авнить код события
”battery failure [отказ батареи]"
(b#16#3922) с кодом ошибки для OB81.
Если они разные (нет отказа батареи в
центральной стойке), то закончить блок.
Berr устанавливает выход ”batteryerror",
если обнаружен отказ батареи или
истощение батареи.
Вы можете найти подробную информацию о блоках OB, SFB и SFC в
соответствующей оперативной справке Help on Blocks [справка о блоках].
21.9.4 Подстановка заменяющих значений при обнар ужении ошибок
При ошибках некоторых типов (например, обрыв провода, воздействующий
на входной сигнал), вы можете предоставлять заменяющие значения для
значений, которые недоступны из-за ошибки. Есть два способа, с помощью
которых вы можете предоставлять заменяющие значения:
Вы можете назначать конфигурируемым модулям вывода заменяющие
значения, используя STEP 7. Модули вывода, которые не могут иметь
назначаемых параметров, имеют по умолчанию заменяющее значение 0.
Вы можете программировать заменяющие значения в OB ошибок при
помощи SFC44 RPLVAL (только для модулей ввода).
Для всех команд загрузки, приводящих к синхронным ошибкам, вы можете в
OB ошибки задать заменяющее значение для содержимого аккумулятора.
Диагностика
Программирование с помощью STEP 7 версии 5.0
21-30 C79000-G7076-C562-02
Типовая программа для подстановки значения
В следующей типовой программе в SFC44 RPLVAL делается доступным
заменяющее значение. Следующий рисунок показывает, как вызывается
OB122, когда CPU обнаруживает, что модуль ввода не откликается.
OB1
OB 122
L PIB0
T IB0
SFC44
RPL_VAL
В этом примере заменяющее значение, показанное на след ующем рисунке,
вводится в программу так, чтобы программа могла продолжать работать с
допустимыми значениями.
Stop_Sw I 0.1
Stand_Eval I 0.3
Full_Sw I 0.4
Start_Sw I 0.0
0 0 0 1 0 0 1 0
Заменяющее
значение:
Если модуль ввода выходит из строя, то обработка оператора L PIB0
вызывает синхронную ошибку и запускает OB122. Команда загрузки
считывает обычно значение 0. Однако с помощью SFC44 вы можете
определить любое заменяющее значение, подходящее для процесса. Эта
SFC заменяет содержимое аккумулятора указанным заменяющим значением.
Следующую типовую программу можно было бы записать в OB122.
Следующая таблица показывает временные переменные, которые должны
быть описаны в этом случае в таблице описания переменных OB122.
Описание Имя Тип Объяснение
TEMP OB122EVCLASS BYTE Класс ошибки/идентификатор ошибки
29xx
TEMP OB122SWFLT BYTE Код ошибки:
16#42, 16#43, 16#44
1)
, 16#45
1)
TEMP OB122PRIORITY BYTE
Класс приоритета = приоритет OB, в
котором возникла ошибка
TEMP OB122OBNUMBR BYTE 122 = OB122
TEMP OB122BLKTYPE BYTE Тип блока, в котором возникла ошибка
Диагностика
Программирование с помощью STEP 7 версии 5.0
C79000-G7076-C562-02
21-31
Описание Имя Тип Объяснение
TEMP OB122MEMAREA BYTE Область памяти и тип доступа
TEMP OB122MEMADDR WORD
Адрес памяти, в котором возникла
ошибка
TEMP OB122BLKNUM WORD Номер блока, в котором возникла ошибка
TEMP OB122PRGADDR WORD Относительный адрес команды,
вызвавшей ошибку
TEMP OB122DATETIME DATEANDTIME Дата и время запуска OB
TEMP Error INT Хранит код ошибки SFC44
1)
нет в случае S7-300.
AWL Описание
LB#16#2942
L#OB122SWFLT
==I
JCAerr
LB#16#2943
<> I
JC Stop
Aerr: CALL ”REPLVAL"
VAL : = DW#16#2912
RETVAL : = #Error
L #Error
L0
==I
BEC
Stop: CALL ”STP"
Сравнить код события OB122 с кодом события
(B#16#2942) для подтверждения ошибки времени
при чтении входов/выходов. Если они одинаковы, то
переход к ”Aerr".
Сравнить код события OB122 с кодом события
(B#16#2943) для ошибки адресации (запись в
несуществующий модуль). Если они неодинаковы, то
переход к ”Stop".
Метка ”Aerr": передает DW#16#2912 (двоичный
10010) в SFC44 (REPLVAL). SFC44 загружает это
значение в аккумулятор 1 (и заменяет значение,
запущенное вызовом OB122). Код ошибки SFC
сохраняется в #Error.
Сравнить #Error с 0 (если совпадают, то во время
выполнения OB122 ошибки не было). Если ошибки
не было, то закончить блок.
Метка "Stop": вызывает SFC46 ”STP" и переключает
CPU в состояние STOP.