Jump to content
  • Sign in to follow this  

    Tia Portal – OB121 Ошибки программирования Прерывание Организационный блок

       (0 reviews)

    leigehong

    В этой статье мы продолжаем обсуждение различных типов организационных блоков в ПЛК Siemens. На этот раз мы рассмотрим OB121 или прерывание ошибок программирования в портале Tia.

    Содержание:

    • Что такое прерывание ошибок программирования OB121?
    • Примеры ошибок программирования.
    • Что произойдет, если будет обнаружена ошибка программирования?
    • Моделирование ошибки программирования в TIA Portal.
    • Как OB121 может быть полезен против ошибок программирования?
    • Выводы.

    Что такое прерывание ошибок программирования (OB121)?

    OB121 — это организационный блок, который будет вызван операционной системой ПЛК, если во время выполнения вашей логики возникнет ошибка программирования. Обратите внимание, что мы не говорим об ошибке программирования, которая будет обнаружена компилятором при попытке загрузить вашу логику в ПЛК. См. рисунок 1.

    141-1.gif

    Рисунок 1 – Некоторые ошибки программирования будут обнаружены компилятором

    Как вы видите на последнем рисунке, в моей логике ПЛК есть ошибка программирования; некоторые операнды отсутствуют на входе и выходе сети 1. Но эта ошибка была обнаружена компилятором еще до загрузки логики в ПЛК. Ошибка на рисунке 1 не является типом ошибки программирования, которая может вызвать необходимость вызова OB121.

    Ошибки в вашей программе ПЛК, которые не могут быть обнаружены компилятором, но все равно могут вызвать проблемы в вашей логике во время работы ПЛК, — это ошибки программирования, которые мы имеем в виду. Эти ошибки вызовут вызов OB121 операционной системой.

    Примеры ошибок программирования

    Вот несколько примеров ошибок в вашей логике ПЛК, которые могут вызвать ошибки программирования:

    • Превышена максимальная глубина вложенности вызовов блоков.
    • Вы использовали указатель NULL для обращения к операнду.
    • Неизвестная инструкция.
    • Адресованная строка имеет неверную информацию о длине.
    • Ошибка длины области при чтении.
    • Ошибка длины области при записи.
    • Ошибка в номере таймера.
    • Доступ к базе данных, которая не загружена; номер базы данных находится в разрешенной области.
    • База данных не существует.

    Эти и многие другие ошибки могут вызвать ошибки программирования в вашем ПЛК. Вы можете проверить раздел справки на портале TIA, чтобы узнать, какие еще причины могут вызвать ошибки программирования ПЛК.

    Что произойдет, если обнаружена ошибка программирования?

    Когда ваш ПЛК обнаруживает ошибку программирования, может произойти одно из трех событий.

    1. Ваш ПЛК покажет ошибку и перейдет в режим STOP.
    2. Ваш ПЛК покажет ошибку, но продолжит выполнять вашу логику.
    3. Ваш ПЛК покажет ошибку, а затем попытается устранить эту ошибку.

    Эти три события будут в основном зависеть от программирования вашего ПЛК. Это означает, что ваш код будет определять, как будет вести себя операционная система при обнаружении ошибки программирования.

    Моделирование ошибки программирования в TIA Portal

    Чтобы лучше понять, как будет вести себя ПЛК, мы создадим простую программу, в которой вызовем ошибку программирования, а затем посмотрим, что произойдет. Смотрите рисунок 2.

    141-2.gif

    Рисунок 2 — Простая логика программы

    Созданная нами логика очень проста: при включении InitiateProgError значение 126 будет перемещено в область DB52.DBW16. Обратите внимание, что мы не создали DB52. поэтому это будет наша ошибка программирования. Обратите внимание, что эта ошибка не будет обнаружена во время компиляции или загрузки в ПЛК. Смотрите рисунки 3 и 4.

    141-3.gif

    Рисунок 3 — Ошибка, не обнаруженная компилятором

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

    141-4.gif

    Рисунок 4 – Блок загружен в ПЛК

    И снова, блок был загружен в ПЛК с ошибкой программирования.

    Теперь давайте смоделируем нашу программу ПЛК и посмотрим, что произойдет. См. анимацию 1 для моделирования кода ПЛК.

    spacer.png

    Анимация 1

    Как вы видите из анимации выше, светодиод ПЛК ERROR будет мигать красным в течение нескольких секунд, а затем ПЛК перейдет в режим STOP.

    Перейдите к онлайн-диагностике ПЛК, чтобы увидеть, что произошло. См. рисунок 5.

    141-6.gif

    Рисунок 5 – Онлайн и диагностика ПЛК

    То, что вы видели в анимации, это то же самое, что вы видите на предыдущем рисунке. Их можно разделить на 3 шага:

    1. ПЛК обнаруживает ошибку программирования, которая заключается в том, что OB52 не загружен.
    2. Операционная система инициирует вызов OB121, но в нашей логике OB121 не создан.
    3. Когда ПЛК обнаруживает, что в нашей логике не создан OB121, операционная система инициирует запрос STOP. И ПЛК переходит в режим STOP.

    Как OB121 может быть полезен против ошибок программирования?

    Давайте добавим OB121 в наш код ПЛК и посмотрим, как все изменится. См. рисунок 6.

    141-7.gif

    Рисунок 6 – Добавление OB121

    После создания и добавления OB121 в нашу логику ПЛК давайте посмотрим, что произойдет в симуляции.

    Помните, что мы не написали никакой логики ПЛК внутри OB121. См. анимацию 2.

    spacer.png

    Анимация 2

    Как видно из анимации 2, при возникновении InitiateProgError светодиод ПЛК ERROR будет мигать красным, но ПЛК продолжит работу.

    Это означает, что ПЛК не перейдет в режим STOP. Давайте проверим онлайн-диагностику, чтобы увидеть, что на самом деле произошло. Смотрите рисунок 7.

    141-9.gif

    Рисунок 7 — Ошибка не привела к остановке ПЛК

    На рисунке видно, что ПЛК обнаруживает ошибку, но не переходит в режим STOP. Он пропустит эту ошибку, продолжит цикл и начнет все сначала с самого начала.

    Когда он снова достигнет ошибки, он снова обнаружит ошибку, выдав сигнал тревоги в диагностике. Пропустите ошибку и продолжите. Это означает, что ПЛК будет выдавать тот же сигнал тревоги в каждом цикле сканирования. И именно поэтому на рисунке вы видите, что событие продолжает срабатывать, а сигнал тревоги повторяется в каждом цикле сканирования.

    Таким образом, просто наличие пустого OB121 даст вам преимущество в поддержании работы ПЛК и расширения y, поддерживая работу вашего процесса.

    Но мы можем сделать больше, мы можем попытаться поймать эту ошибку и устранить ее. Также мы можем попытаться показать тип обнаруженной ошибки программирования.

    Определение типа ошибки

    OB121 имеет внутренний идентификатор идентификатора ошибки, который мы можем использовать для отображения типа ошибки, возможно, как сигнал тревоги на HMI. Внутри OB121 мы создадим простую инструкцию MOVE, в которой мы поместим вход Fault_ID OB121 в определенную область памяти внутри нашей глобальной базы данных. См. рисунок 8.

    141-10.gif

    Рисунок 8 — Определение типа ошибки

    Как вы видите на предыдущем рисунке, при возникновении ошибки программирования Fault_ID будет помещен в Data.ProgErrorID. См. рисунок 9.

    141-11.gif

    Рисунок 9 — Ошибка программирования Fault_ID

    Вы можете увидеть, что идентификатор ошибки — 3A. Если вы посмотрите справку TIA Portal, вы можете узнать значение этой ошибки.

    3A: Доступ к незагруженной базе данных; номер DB находится в разрешенной области.

    Перехват ошибки

    Это просто означает попытку решить ошибку программирования ПЛК после того, как вы определили причину. Это будет зависеть в основном от того, что это за ошибка и как вы хотите ее обработать. Мы просто смоделируем решение ошибки, чтобы посмотреть, как будет себя вести ПЛК.

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

    Но ради симуляции мы просто добавим простой контакт, который будет размыкаться при возникновении ошибки программирования, чтобы перехватить эту ошибку. Смотрите рисунки 10 и 11.

    141-12.gif

    Рисунок 10 – Перехват ошибки

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

    141-13.gif

    Рисунок 11 – Устранение ошибки

    Всякий раз, когда вызывается OB121, будет установлен CatchError, и он будет использоваться для перехвата ошибки программирования в Network 1. См. анимацию 3 для моделирования ПЛК.

    spacer.png

    Анимация 3

    Из вышеприведенной анимации вы можете видеть, что при запуске InitiateProgError ПЛК на мгновение переходит в состояние ошибки, затем ошибка сбрасывается, и ПЛК все время находится в режиме RUN.

    Заключение

    Простое наличие пустого OB121 в вашей логике гарантирует, что ваш ПЛК не перейдет в режим STOP, если в вашем коде была ошибка программирования. Позже вы можете использовать OB121, чтобы также определить ошибку и устранить ее.

    Sign in to follow this  


    User Feedback

    Create an account or sign in to leave a review

    You need to be a member in order to leave a review

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

    There are no reviews to display.


Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...