Date: File:PRO2_08E.1 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Обработка cинхронных и асинхронных ошибок
Date: File:PRO2_08E.2 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Обработка асинхронных ошибок Асинхронные ошибки не ставятся в соответствие какому-либо месту программы, то есть они кажутся асинхронными к выполнению программы. 1) только в S ) не переходит в STOP при отсутствии OB ошибки ПримерTип ошибки Временная ошибка Превышено максимальное время цикла Ошибка источника питания Неисправна буферная батарея Диагностическое прерывание Обрыв провода на входе блока, cпособного к диагностике Прерывание при вставке/удалении модуля Удалени сигнального модуля S7-400 в рабочем режиме Аппаратная ошибка CPU Дефектный уровень сигнала в MPI интерфейсе Ошибка последовательности программы Ошибка при обновлении таблицы отображения процесса (дефект модуля) Дефект носителя модулей (rack) Ошибка источника питания в удаленном носителе модулей Коммуникационные ошибки Некорректный идентификатор сообщения OB- - обработчик OB 80 OB 81 2) OB 82 OB 83 1) OB 84 1) OB 85 OB 86 1) OB 87
Date: File:PRO2_08E.3 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Обработка ошибок организационными блоками l Чтобы предотвратить останов CPU в случае ошибки, необходимо загрузить пустой организационный блок ошибки l Вы можете запрограммировать желательную реакцию в OB ошибки и, если требуется, вызвать состояние останова с помощью системной функцией SFC 46 после выполнения OB ошибки l Дополнительный идентификатор ошибки сохраняется в стартовой информации организационного блока ошибки, который может быть оценен в программе l Описание организационного блока ошибки может быть найдено в Интерактивной справке или в Руководстве по cистемным и стандартным функциям l Передача OB ошибок, не поддерживаемых CPU, отвергается с сообщением об ошибках
Date: File:PRO2_08E.4 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Пример OB асинхронной ошибки OB81:Error OB: Power supply failure (выход из строя источника питания) Network 1:Выход из строя батареи, приходящее событие L#OB81_FLT_ID // Загрузка идентификатора ошибки LB#16#22 // Идентификатор: выход из строя батареи в CR ==I =M81.1 // Установка доп.меркерного бита L#OB81_EV_CLASS // Идентификатор: приходящее, уходящее LB#16#39 // Идентификатор: приходящее событие ==I =M81.2 // Доп.меркерный бит приходящего события AM81.1 // Батарея вышла из строя и AM81.2 // приходящее событие SM81.0 // Установка доп.меркерного бита для показа // ошибки Network 2:Сброс доп.меркерного бита, если батарея O.K. L#OB81_EV_CLASS // Идентификатор: приходящее, уходящее LB#16#38 // Идентификатор: уходящее ==I RM81.0 // Сброс доп.меркерного бита
Date: File:PRO2_08E.5 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Обработка синхронных ошибок l Cинхронные ошибки соответствуют определенному месту в программе пользователя l Ошибки в арифметических инструкциях (перполнение, неправильное действительное (REAL) число) Установка битов слова статуса l Ошибки в выполнении STL инструкций (синхронные ошибки) Вызов OB синхронных ошибок ПримерTип ошибки Программная ошибка Вызванный блок не существует в CPU Ошибка доступа Прямой доступ к неисправному или несуществующему блоку OB- -обработчик OB 121 OB 122
Date: File:PRO2_08E.6 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Стартовая информация для программных ошибок в ОВ121 Тип данных Имя переменной OB121_EV_CLASSBYTE OB121_SW_FLTBYTE Описание, назначение B#16#25=Класс события - вызов OB121 Код ошибки (смотри текст) OB121_PRIORITYBYTE OB121_OB_NUMBRBYTE Класс приоритета ОВ, в котором произошла ошибка Номер OB (B#16#79 = 121) OB121_BLK_TYPEBYTE OB121_RESERVED_1BYTE Тип блока, в котором произошла ошибка (только в S7-400) OB: B#16#88, DB: B#16#8A, FB: B#16#8E, FC: B#16#8C Дополнение к коду ошибки (смотри текст) OB121_FLT_REGWORD OB121_BLK_NUMWORD OB121: источник ошибки Номер блока, в котором произошла ошибка OB121_PRG_ADDRWORD OB121_DATE_TIMEDT Относительный адрес команды МС7, вызвавшей ошибку (только в S7-400) Дата и время, когда был вызван ОВ121 (когда произошла ошибка)
Date: File:PRO2_08E.7 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Стартовая информация для ошибок доступа OB122 Тип данных Имя переменной OB122_EV_CLASSBYTE OB122_SW_FLTBYTE Описание, назначение B#16#29=класс события - вызов ОВ122 Код ошибки (доступные значения: B#16#42, B#16#43, B#16#44, B#16#45) OB122_PRIORITYBYTE OB122_OB_NUMBRBYTE Класс приоритета ОВ, в котором произошла ошибка Номер OB (B#16#7А=122) OB122_BLK_TYPEBYTE OB122_MEM_AREABYTE Тип прерванного блока (только в S7-400) OB - B#16#88, DB - B#16#8A, FB - B#16#8E, FC - B#16#8C Дополнение к коду ошибки (смотри текст) OB122_FLT_REGWORD OB122_BLK_NUMWORD OB122: идентификатор адреса, где произошла ошибка. Номер блока, вызвавшего ошибку OB122_PRG_ADDRWORD OB122_DATE_TIMEDT Относительный адрес команды, вызвавшей ошибку (только в S7-400) Дата и время, когда был вызван ОВ121 (когда произошла ошибка)
Date: File:PRO2_08E.8 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Маскирование синхронных ошибок Недостатки OB синхронных ошибок l Код для управления процессом и для обработки ошибок распределен по крайней мере среди двух блоков l Проблемы с последующими изменениями или с обслуживанием Улучшения l Код для управления процессом и для обработки ошибок находится в том же самом блоке Маскирование синхронных ошибок l До критических" инструкций: SFC 36 MSK_FLT - маскирование синхронных ошибок (вызовов OB12x) l Выполнение критических" инструкций l Оценка ошибки, если она произошла: SFC 38 READ_ERR - чтение регистра ошибок l Разрешение вызовов OB12x снова: SFC 37 DMSK_FLT - демаскирование синхронных ошибок
Date: File:PRO2_08E.9 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation SFC 36 для маскирования синхронных ошибок "MSK_FLT" EN ENO PRGFLT_SET_MASK ACCFLT_SET_MASK RET_VAL??.? PRGFLT_MASKED??.? ACCFLT_MASKED??.? Параметр Объявление Тип данных Область памяти Описание PRGFLT_SET_MASKINPUTDWORD I, Q, M, D, L, Const. новый (дополнит.) фильтр программной ошибки (маскируемые ошибки программирования) ACCFLT_SET_MASKINPUTBYTE I, Q, M, D, L, Const. новый (дополнит.) фильтр ошибки доступа (маскируемые ошибки доступа) RET_VALOUTPUTINT I, Q, M, D, L Возвращаемое значение SFC, W#16#0001: новый фильтр перекрывает существующий фильтр PRGFLT_MASKEDOUTPUTDWORD I, Q, M, D, L Полный фильтр программной ошибки (маскированные ошибки программирования) ACCFLT_MASKEDOUTPUTDWORD I, Q, M, D, L Полный фильтр ошибки доступа (маскированные ошибки доступа)
Date: File:PRO2_08E.10 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Структура фильтра ошибок программирования Ошибка BCD преобразования Ошибка длины области при чтении Ошибка длины области при записи Ошибка области при чтении Ошибка области при записи Ошибка номера таймера Ошибка номера счетчика Ошибка выравнивания при чтении Ошибка выравнивания при записи Не используется Ошибка записи в блок данных Ошибка записи в экземпляр блока данных Ошибка номера блока DB Ошибка номера блока DI Ошибка номера блока FC Ошибка номера блока FB DB не загружен FC не загружен FB не загружен Замечание. Соответствующие биты выходного параметра PRGFLT_MASKED устанавливаются следующим образом: Значение = 1 - ошибка маскирована, Значение = 0 - ошибка не маскирована.
Date: File:PRO2_08E.11 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Структура фильтра ошибок доступа Ошибка доступа к периферии при чтении Только для S7-400: Ошибка доступа на чтение к не существующему модулю или при повторном (при n-м, n>1) доступе Не используется Ошибка доступа к периферии при записи Только для S7-400: Ошибка доступа на запись к не существующему модулю или при повторном (при n-м, n>1) доступе... Замечание. Соответствующие биты выходного параметра ACCFLT_MASKED устанавливаются следующим образом. Значение = 1 - Ошибка маскирована. Значение = 0 - Ошибка не маскирована. Не используемые биты имеют значение "1".
Date: File:PRO2_08E.12 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation SFC 37 для демаскирования синхронных ошибок "DMSK_FLT" EN ENO PRGFLT_RESET_MASK ACCFLT_RESET_MASK RET_VAL??.? PRGFLT_MASKED??.? ACCFLT_MASKED??.? Параметры Объявление Тип данных Область памяти Описание PRGFLT_RESET_MASKINPUTDWORD I, Q, M, D, L, Const. Демаскируемые ошибки программирования ACCFLT_RESET_MASKINPUTBYTE I, Q, M, D, L, Const. Демаскируемые ошибки доступа RET_VALOUTPUTINT I, Q, M, D, L Возвращаемое значение SFC, W#16#0001: новый фильтр содержит биты, не установленные в сохраненном фильтре PRGFLT_MASKEDOUTPUTDWORD I, Q, M, D, L Все еще маскированные ошибки программирования ACCFLT_MASKEDOUTPUTDWORD I, Q, M, D, L Все еще маскированные ошибки доступа
Date: File:PRO2_08E.13 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation SFC 38 для чтения регистра ошибок "READ_ERR" EN ENO PRGFLT_QUERRY ACCFLT_QUERRY RET_VAL??.? PRGFLT_CLR??.? ACCFLT_CLR??.? Параметр Объявление Тип данных Область памяти Описание PRGFLT_QUERRYINPUTDWORD I, Q, M, D, L, Const. Опрос ошибок программирования ACCFLT_QUERRYINPUTBYTE I, Q, M, D, L, Const. Опрос ошибок доступа RET_VALOUTPUTINT I, Q, M, D, L Возвращаемое значение SFC, W#16#0001: по крайней мере одна из опрошенных ошибок не маскирована PRGFLT_CLROUTPUTDWORD I, Q, M, D, L Фильтр с ошибками программирования ACCFLT_CLROUTPUTDWORD I, Q, M, D, L Фильтр с ошибками доступа
Date: File:PRO2_08E.14 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Пример: тестирование блока данных Network 1: Маскирование, тестирование, демаскирование // Maска "DB не существует" CALLSFC36( PRGFLT_SET_MASK:= DW#16# ,// Идентификатор: DB не существует ACCFLT_SET_MASK:= DW#16#0,// ошибки доступа не маскируются RET_VAL:= #SFC36Error, PRGFLT_MASKED:= #Prog36Mask, ACCFLT_MASKED:= #Acc36Mask); // Тест вызова OPN DB[DB_NO]; // Проверка ошибки программирования CALLSFC38( PRGFLT_QUERRY:= DW#16# ,// Идентификатор: DB не существует ACCFLT_QUERRY:= DW#16#0,// ошибки доступа не маскируются RET_VAL := #SFC38Error, PRGFLT_MASKED:= #Prog38Mask, ACCFLT_MASKED:= #Acc38Mask); // Оценка результата L#Prog38Mask LDW#16# ==D =#DB_NOT_THERE// Установка вспомогательной переменной, если //DB не существует // Демаскирование ошибки " DB не существует " CALLSFC37( PRGFLT_RESET_MASK:= DW#16# ,// Идентификатор: DB не существует ACCFLT_RESET_MASK:= DW#16#0,// ошибки доступа не маскируются RET_VAL:= #SFC37Error, PRGFLT_MASKED:= #Prog37Mask, ACCFLT_MASKED:= #Acc37Mask);
Date: File:PRO2_08E.15 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Упражнение 8.1: обработка ошибок в FC81 FC 81 EN ENO Meas_values Sum Mean_value Объявл. Имя Тип inMeas_valuesANY outRET_VALINT outSumREAL outMean_valueREAL RET_VAL Код ошибки Причина Код ошибки Все O. K. 0 Тип данныхREAL -1 DB не существует -2 Ошибка длины диапазона -4