В предыдущей статье мы обсуждали, что такое организационный блок, и говорили об одном очень важном организационном блоке, которым является основной OB1.
В этой статье мы продолжим обсуждение различных OB, и на этот раз мы поговорим об организационных блоках прерывания по времени суток или OB10.
Содержание:
- Что такое прерывание по времени суток OB10?
- Как создать и использовать OB10?
- Простой пример программы.
- Важные правила для прерываний по времени суток.
- Выводы.
Что такое прерывание по времени суток (OB10)?
Как следует из названия, прерывание по времени суток — это организационный блок, который прерывает выполнение основного цикла вашей программы ПЛК в определенное время суток. Это время прерывания (дата и время) может быть указано как происходящее один раз в указанное время или периодически через указанные интервалы времени, например, каждую минуту, час, день, неделю и некоторые другие параметры.
В одной программе может быть несколько прерываний по времени суток, они не обязательно должны иметь одинаковую логику или код, каждое из них может иметь свою собственную функциональность, а также каждое из них может быть настроено отдельно для возникновения в указанное время.
Как создать и использовать OB10?
Чтобы создать прерывание по времени суток, выполните те же шаги, которые вы бы сделали, если бы вам нужно было добавить любой новый блок в вашу логику. Смотрите рисунок 1.
Рисунок 1 — Добавление прерывания по времени суток
Нажмите опцию Добавить новый блок в дереве проекта слева, выберите организационный блок, а затем выберите прерывание по времени суток, как показано на предыдущем рисунке.
Теперь вы можете открыть OB10 и добавить любую логику ПЛК, которую вы хотите выполнить при вызове этого блока, под вызовом мы подразумеваем, что произошло событие прерывания или время, и поэтому операционная система прервет основной цикл и выполнит OB10.
Мы напишем очень простой код в OB10, чтобы лучше понять, как работает этот блок OB10. В этой логике мы использовали инструкцию add для добавления значения 1 в область памяти, которую мы назвали TimeOfDayInterruptCounter, а затем поместили результат суммирования обратно в ту же область. Таким образом, у нас может быть счетчик для выполнения OB10.
Каждый раз, когда OB10 будет вызываться и выполняться, значение TimeOfDayInterruptCounter будет увеличиваться на 1. Смотрите рисунок 2.
Рисунок 2 — Добавьте свою логику в OB10
Теперь, когда мы создали OB10 и написали некоторую логику внутри, нам нужно настроить установленное время OB10 и то, сколько раз мы хотим, чтобы он прерывал наш основной цикл.
Чтобы настроить время и интервал OB10, нам нужно перейти на страницу свойств OB10. См. рисунок 3.
Фото 3 – Свойства OB10
В свойствах OB10 вы найдете множество настроек и атрибутов, которые можно настроить.
Теперь нам нужна страница прерывания по времени суток, чтобы мы могли настроить, когда и сколько раз будет вызываться OB10. См. рисунок 4.
Фото 4 – Настройка прерывания по времени суток
Как видно из последнего рисунка, вы можете установить выполнение OB10, дату начала и время суток, в которое должен выполняться OB10.
Для симуляции мы сделали интервал выполнения равным каждой минуте, чтобы каждую минуту OB10 вызывался и выполнялся. Это означает, что начиная с даты 23.03.2023 и времени 09:25 утра значение TimeOfDayInterruptCounter будет увеличиваться на 1 каждую минуту.
У вас есть возможность установить время в соответствии с системным временем ПЛК или местным временем, как вы видите на последней картинке. В предыдущей статье мы говорили о системном и местном времени ПЛК, о том, что означает каждое время, и о том, как их настроить и использовать.
Как мы уже говорили ранее, местное время — это время, которое вы видите сейчас на своем ПК. Таким образом, это фактическое время региона, в котором будет использоваться ПЛК.
Вам необходимо настроить местное время для ПЛК в зависимости от того, где он будет использоваться. См. картинку 5.
Рисунок 5 — Установка местного времени для ПЛК
Простой пример программы ПЛК
Мы добавили прерывание по времени суток OB10 в нашу программу ПЛК и настроили его так, чтобы оно выполнялось каждую минуту. Мы также настроили локальное время ПЛК.
Мы создали простую логику инструкции ADD для накопления значения TimeOfDayInterruptCounter на 1 каждый раз, когда выполняется OB10.
Мы добавим еще одну инструкцию, но в основном OB1 эта инструкция — RD_LOC_T или чтение локального времени, поэтому мы можем видеть, как изменяется локальное время, и сравнивать его с выполнением OB10. Смотрите рисунок 6.
Фото 6 — Простой пример программы
Скомпилируйте программу ПЛК и запустите новую симуляцию.
Обратите внимание, что мы установим время возникновения прерывания дня, чтобы OB10 можно было вызвать и выполнить, пока мы симуляцию логики ПЛК. Смотрите следующую симуляцию.
Как вы видите из анимации, значение TimeOfDayInterruptCounter в начале равно нулю, а затем оно будет увеличиваться на 1 каждую минуту, начиная с 09:25 утра, указывая, что OB10 выполняется каждую минуту.
Важные правила для прерываний по времени суток
- Если вы устанавливаете прерывание по времени таким образом, что соответствующий OB должен быть обработан один раз, время начала не должно быть в прошлом (относительно часов реального времени ЦП).
- Если вы устанавливаете прерывание по времени таким образом, что соответствующий OB должен быть обработан периодически, но время начала находится в прошлом, то OB прерывания по времени обрабатывается в следующий раз, когда он должен быть выполнен в соответствии с текущим временем.
- Дата периодических прерываний по времени должна соответствовать реальной дате. Например, ежемесячное повторение OB прерывания по времени с датой начала 1/31 невозможно. В этом случае OB запускается только в месяцы, в которых 31 день.
- Временное прерывание, активированное во время запуска, не выполняется до тех пор, пока запуск не будет завершен.
- Запуск удаляет все временные прерывания, которые были установлены и активированы инструкцией в пользовательской программе.
Заключение
OB10 — это организационный блок, который можно настроить для прерывания цикла вашей программы в определенный день и время. Это прерывание может происходить либо один раз, либо периодически через определенное количество времени.
Нет конкретной причины, по которой вам может понадобиться OB10, поскольку это зависит от вашего процесса и вашей логики. И да, вы можете достичь той же функциональности, используя свой личный код, но это доступная и простая в использовании встроенная функция. И вы знаете, как ею пользоваться.
Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now