В предыдущих статьях мы начали обсуждать различные организационные блоки ПЛК TIA Portal, мы говорили о том, что такое OB, и мы обсудили некоторые OB, такие как OB1- Main cyclic, OB10 и OB20, прерывания с задержкой по времени и времени соответственно. В этой статье мы поговорим о OB100 или организационном блоке запуска в Сименс Tia Portal.
Содержание:
- Что такое OB100?
- Зачем нужен OB100?
- Важные замечания во время запуска.
- Простой пример программы.
Что такое организационный блок запуска (OB100)?
OB100 или OB запуска — это организационный блок, который вызывается и выполняется операционной системой один раз при запуске ПЛК, то есть один раз при каждом переходе из режима STOP в режим RUN.
Основной цикл OB1 не будет вызываться и выполняться, пока не будут выполнены все функции запуска внутри OB100.
В вашей логике ПЛК может быть более одного OB запуска, если это произойдет, то операционная система вызовет и выполнит их все один за другим, начиная с меньшего номера OB к большему номеру. То есть, если у вас есть OB100 и OB123, то OB100 будет вызван и выполнен первым, а затем OB123.
После выполнения OB100 операционная система прочитает входные модули в PII и запустит основную программу цикла OB1.
Зачем нужен OB100?
Вы используете OB100 для множества задач, которые вы можете захотеть или должны выполнить перед запуском циклической логики, по следующим причинам:
- Инициализация переменных.
- Сброс системных модулей.
- Повторная калибровка датчиков/исполнительных механизмов.
- Проверка наличия аварийных сигналов и условий безопасности перед запуском процесса.
Даже если вы не создали OB запуска для своей логики, у операционной системы все еще есть много задач, которые ей необходимо выполнить перед запуском вашей основной логики, вот некоторые из этих задач:
- Очистка не сохраняемой памяти
- Очистка PIQ
- Вызов и выполнение OB запуска, если таковые имеются.
- Обновление PII
- Включение выходов после перехода в режим RUN.
Вы заметили, что последняя задача процедуры запуска — включение выходов? Вот почему первым шагом выполнения основной циклической программы OB1 является запись PIQ в выходной модуль.
Важные замечания во время запуска
Обратите внимание на следующие моменты относительно режима «STARTUP»:
- Выходы на модулях отключены.
- Инициализируется образ процесса.
- Образ процесса не обновляется.
- Чтобы прочитать текущее состояние с входов во время «STARTUP», вы можете получить доступ к входам через прямой доступ ввода-вывода.
- Чтобы инициализировать выходы во время STARTUP, значения можно записать через образ процесса или через прямой доступ ввода-вывода. Значения выводятся на выходах во время перехода в режим «RUN».
- Инициализируются несохраняемые битовые памяти, таймеры и счетчики.
- Инициализируются несохраняемые теги в блоках данных.
- Во время запуска мониторинг времени цикла еще не запущен.
Простой пример программы
В этом примере мы добавим стартовый OB100 в нашу логику ПЛК и посмотрим, сколько раз выполняется OB100. См. рисунок 1 для добавления нового OB100.
Рисунок 1 — Добавление OB100
Как видно из последнего рисунка, вы добавляете стартовые организационные блоки так же, как мы добавляем функцию функционального блока.
Внутри только что созданного OB100 мы добавим простую инструкцию ADD, чтобы накапливать, сколько раз вызывается и выполняется OB100. См. рисунок 2.
Рисунок 2 – Накопление времени выполнения OB100
Теперь скомпилируйте и запустите свою программу и посмотрите, что произойдет. Посмотрите следующую анимацию для моделирования программы ПЛК.
Анимация 1
Как вы можете видеть из приведенной выше анимации, OB100CycleCounter равен 1 и не меняется, когда режим ПЛК переходит из режима STOP в режим RUN.
Ну, он меняется, но вы не видите этого изменения. Каждый раз, когда ПЛК переходит в режим STOP, а затем снова в режим RUN. Счетчик будет сброшен на ноль, а затем снова на 1 после выполнения OB100. Вы также можете увидеть, как изменяется основной счетчик циклов OB1, и ПЛК останавливается, а затем снова запускается, OB1CycleCounter снова начнет накапливать данные.
Чтобы увидеть изменение в счетчике запуска, нам нужно сохранить значение памяти тега. Смотрите рисунок 3.
Рисунок 3 – Сохранение памяти тега OB100CycleCounter
После того, как мы сохранили тег OB100CycleCounter, теперь снова запустите симуляцию ПЛК и посмотрите, что произойдет. Смотрите анимацию симуляции 2.
Анимация 2
Теперь вы видите из вышеприведенной анимации, что счетчик запуска увеличивается каждый раз, когда я останавливаю ПЛК, а затем снова запускаю его. Поскольку память тега теперь сохраняется, значение не будет сброшено до нуля, и именно поэтому вы видите, что значение OB100CycleCounter накапливается.
Теперь мне нужно добавить дополнительную функциональность в мою логику запуска ПЛК, которая заключается в том, чтобы знать, когда был последний запуск ПЛК. Мы достигнем этого с помощью простой логики, где я считываю локальное время ПЛК при запуске и перемещаю дату и время в определенную область памяти. Смотрите рисунок 4.
Рисунок 4 – Чтение локального времени при запуске
После добавления логики скомпилируйте и снова запустите симуляцию. Смотрите анимацию симуляции ПЛК 3.
Анимация 3
Из анимации выше видно, что каждый раз при запуске ПЛК дата и время запуска будут записаны в назначенную нами область памяти. Так что теперь у меня есть информация о том, сколько раз запускался мой ПЛК и когда был последний запуск.
Заключение
OB запуска очень важны, если вы хотите оценить некоторые функции перед запуском вашего циклического процесса. Вы можете использовать OB запуска для инициализации параметров, калибровки датчиков и даже проверки условий безопасности перед запуском вашего процесса.