Лекция о стандартных функциональных блоках программирования ПЛК: триггерах, детекторах фронта, таймерах и счётчиках. Разбирается назначение и работа RS- и SR-триггеров, таймеров задержки и импульсов, инкрементного и декрементного счётчиков. В CODESYS показан вызов блоков из стандартной библиотеки, компиляция проекта и эмуляция работы контроллера с демонстрацией состояний переменных.
- 00:07 Триггеры: RS- и SR-триггеры, память и состояния
- 05:36 Таймеры: задержка, импульсы, часы реального времени
- 08:52 Счетчики импульсов: инкрементный и декрементный
- 12:03 Стандартные функциональные блоки в средах программирования ПЛК
- 13:01 Вызов триггеров, таймеров и счетчиков в CODESYS
- 23:34 Компиляция проекта и эмуляция работы ПЛК
- 24:22 Демонстрация работы таймеров, триггеров и счетчиков
- CODESYS
- ПЛК
Кому полезно: Инженерам АСУ ТП, изучающим программирование ПЛК и стандартные функциональные блоки
Описание составлено автоматически по расшифровке речи в ролике.
Расшифровка видео
0:07 Добрый день, уважаемые зрители канала, мы продолжаем изучение программируемых логических контроллеров. Тема сегодняшней лекции посвящается важным функциональным блоком, которые. Стали неотъемлемой частью Майк программирования ПЛК функционал этих блоков, перешел из схемы техники или цифровой электроники и является очень важным инструментом при реализации. Автоматизированных систем управления на базе программируемых логических контроллеров 1. Из таких важных функциональных блоков являются триггеры, Триггер, это устройство, обладающее. Спностью длительно находиться в 1 из 2 устойчивых состояний, это состояние либо включена, либо выключена, соответственно, истина или ложь и чередовать их под воздействием внешних сигналов.
1:07 Главной особенностью Триггера является его свойство запоминания двоичной информации. Триггеры обладают памятью, которая заключается в способности оставаться в 1 из 2 состояний после прекращения действия переключающего сигнала. Р Стригер получил название по обозначению своих входов. Вход с означает позволяет устанавливать выход Триггера в единичное состояние, то есть записывать единицу. Ну а выход р, который обозначает ресет, позволяет сбрасывать выход триггера в нулевое состояние. То есть записывать 0 на выходе Триггера, то есть это 1 из наиболее? Широко применяемых видов триггера, которые реализуются в Мег, программирование обозначается РС Триггер. Вот таким вот образом, ну и соответственно таким вот образом. У нас обозначается триггер на включение СР Триггер и, как мы видим из 1 картинки даже при отключении включающего сигнала на выходе рестригера, сформирован.
2:22 Процесс включения выхода устройства, и мы видим, что такой триггер обладает свойством. Запоминать свое состояние, то есть он находится во включенном состоянии. Это у нас РС Триггер функционально, как правило, реализуется 2 вида триггеров. Это РС Триггер на выключение, то есть ресет Сет Триггер и СР Триггер, это Триггер на включение Сет ресет.
2:52 Об этом мы будем подробно говорить при. Рассмотрении соответствующих примеров на применение данных устройств при программировании следующими функциональными блоками, которые часто применяются при программировании. Контроллеров являются детекторы фронта фронтом сигнала. Я напоминаю, называется переход импульсного сигнала, в частности цифрового сигнала из 1 состояния в другое переход из. состояния Фолс, то есть нижний уровень в состоянии чу, то есть истина, верхний уровень называют передним фронтом. Переход из состояния истина в состоянии, ложь называют задним. Фронтом сигнала, как это реализуется в Мек программирования, реализуется это с помощью вот такого, вот функционального блока. Это детектор переднего фронта, то есть, когда переходит.
3:52 Сигнал Сет из состояния ложь, состояния истина. На выходе формируется импульс очень малой длительности, то есть такой блок реализует реакцию на включение входной переменной, ну и соответственно это. Можно будет наблюдать вот на следующих диаграммах. Когда происходит переход из состояния 0 в состоянии единицы нашей переменной, которая у нас на входе этого блока, то на выходе формируется вот такой.
4:31 Импульс. С ничтожно малой длительностью вот таким вот образом. У нас работает функциональный блок, который реагирует на. Передний фронт сигнала соответственно у нас имеется функциональный блок, который реагирует на так называемый задний фронт сигнала. То есть это переход из состояния логической единицы? В состоянии логического 0 это также кратковременный импульс на выходе данного блока. Но этот импульс ничтожно малой длительности является реакцией на обратный переход из единицы в 0.
5:17 Такие функциональные блоки часто применяются при программировании контроллеров и обогащают свойства автоматизированных систем управления, которые работают на базе ПЛК. Категории таких функциональных блоков являются таймер. Это прибор, который в заданный момент времени выдает определенный сигнал, либо включающий, выключающий какое либо оборудование через устройства коммутации цепей таймеры бывают с. Задержкой на включение и выключение также бывают таймеры, выдающие импульсы заданной длительности, а также отображающие часы реального времени. Все это реализуется в ПЛК с помощью специальных функциональных блоков практически во всех. Программных комплексах эти функциональные блоки присутствуют и успешно реализуются при программировании. Вот такой вот таймер ТПН, типичный таймер ТП, который есть во многих программных комплексах. По сути, он задает импульс определенной. Длительности, то есть мы видим здесь таймерная переменная, то есть на входе имеется сигнал, который подается на вход ПТ. Это длительность нашего импульса, как только включается сет сигнал, подающийся на вход ин у нас начинается отчет.
6:55 Величины таймерной на выходе идти, как только этот отчет закончится у нас на выходе. Формируется сигнал на выходе Кью, то есть, по сути, этот таймер устанавливает формирование некоторого импульса заданной длительности именно задание длительности. У нас выполняется на 2 ходе этого таймера, мы на примере все это увидим. Следующим устройством является таймер, отображающий часы реального времени. То есть вот так он выглядит, и он, соответственно, выполняет отображение часов реального времени. Следующими устройствами, которые являются таймерами, является. Так называемый таймер, он это таймер с задержкой на включение. То есть, как только у нас был подан сигнал включения, выполняется отсчет времени некоторые. Длительности, которые мы сдаем на 2 ходе этого блока, он здесь отсчитывается и выполняется включение соответствующей переменной с определенной задержкой, которую. Мы заранее задаем соответственно, и у нас имеется таймер на выключение, который действует аналогичным образом. Но выключается он после того, как выполняется. Отсчет того времени, который мы указываем во 2 входе данного блока. Данные переменные очень часто используются при Мэг программировании реализации. Автоматизированных систем управления, но я, как и говорил выше, они являются уже неотъемлемой частью практически всех программных комплексов Мег программирования.
8:52 Следующей группой функциональных блоков, который часто реализуется в Мак программировании, являются счетчики, счетчик импульсов. Это устройство, на выходах которого получается некоторая величина. Соответствующая числу поступивших импульсов основная задача счетчиков считать количество импульсов. Затем выполнять какое либо действие, например, включать либо отключать некоторую болевую переменную.
9:21 Типичный такой счетчик, который реализуется в в комплексах, мы программирование, это так называемый инкрементный счетчик. Здесь имеется 3 входа на вход в ЦУ, это вход, связанный с в некоторой болевой переменной подается.
9:44 Сигнал включения. На входе пиви это у нас целочисленный вход имеется некоторое заданное число. Ну и соответственно сколько раз вход сию был включен, то есть включался столько раз. Будет выполняться счет выходной переменной севи, как только Севи будет равно, пи ви у нас включится.
10:18 Выходной сигнал ку, который формируется на выходе этого счетчика, ну и входным сигналом ресет можно будет обнулить величину. Сиви, то есть это так называемый типичный, так называемый. Инкрементный счетчик, который реализует включение некоторой выходной булевой переменной при достижении определенного количества импульсов, которые мы задаем заранее через.
10:49 Входную переменную типа Интеджа в данном случае это переменная типа Ворд. Существует аналогичный счетчик, но работающие уже на вычитание так называемый декрементный счетчик, то есть как только. Мы подаем сигнал на вход лот, у нас загружается в Сирии некоторое количество импульсов, которые мы задали заранее. В пиве и то количество раз сколько надо было включить, выключить вход. Сиди, выполняется вычитанием. Величины Си Ви, как только оно будет 0 у нас включится.
11:40 Выходная, переменная кью этого счетчика. Оба этих функциональных блоков часто применяется и хорошо реализуется во всех проектах, связанных с Мэг программированием. В коды СИС во 2 версии все эти функциональные блоки содержатся в стандартной библиотеке.
12:03 Данные функциональные блоки широко применяются, как я говорил практически во всех комплексах, мы программирование, например, программном комплексе сил. Воркс для программирования контроллеров Хим они также реализуется вот в таком вот виде. Мы их можем наблюдать в виде стандартных функциональных. Блоков либо в программном комплексе Джикс Воркс Мэлсофт их также можно будет наблюдать уже в таком виде, то есть функционально они ничем не. Отличаются от тех блоков, которые мы рассмотрели ранее, то есть все это есть и является таким стандартным инструментом для Мег программирования.
12:48 Теперь давайте разберем пример применение этих функциональных блоков в программном комплексе Кодесис. Нам нужно будет настроить целевую платформу, выбрать тип контроллера, выбрать язык программирования, пусть будет си эф Си. Так нам. Нужно будет выполнять вызов этих функциональных блоков из стандартной библиотеки. Для этого мы обращаемся к менеджеру библиотек, мы видим вот библиотека, стандарт Лип. И в ней содержится вот эти триггеры, то есть не триггера, а детекторы фронта в них содержится также вот таймеры и счетчики, которые мы. Рассмотрели счетчик инкрементный счетчик декрементный, их мы будем применять точнее вызывать в нашу основную программу, вернемся в нее.
13:51 И для того, чтобы нам реализовать наш пример, давайте зададимся некоторым количеством переменных сет 1 сет 2. Сет 3 Сет 4 Так ресет 3 нам понадобится переменная ресет 4. Так нам еще понадобятся переменные, давайте назовем их Лоуд 1. Аут 1 аут, 2 аут 3. Так аут 4 И а вот 5 нам еще понадобится аут 6. Аут, 7 и это будут переменные типа булл. Так еще давайте зададимся переменными, которые нам нужны будут тайм 11 тайм, 22 тайм, 33 и это будут переменные типа тайм, то есть для интервалов времени.
15:12 Так еще нам понадобятся некоторые переменные для счетчиков. Это семьи 11 Си Ви, 22 и они будут типа Уорд, это целочисленный тип. Итак, теперь давайте. Выполним вызов этих устройств и. Вызываются они. С помощью ассистента Вуда мы видим это стандартные функциональные блоки, выбираем их. Для них мы также должны задаться именем экземпляром этих функциональных блоков. Объявим их тип, будет материнский, так на вход этого детекторы фронта мы подадим некоторую переменную, пусть будет это переменная.
16:01 С именем Сет 1 И на выходе пусть будет сформирована переменная. Ауто 1 Далее давайте вызовем аналогичное устройство, но это будет детектор заднего фронта, уже называется. Он также и стоишь в библиотеке ему, мы ему. Мы также должны задать имя, тип будет материнским. И на его вход мы также подадим некоторую булевую переменную. Пусть будет эта переменная сет, 2 которую мы объявили, и на выходе пусть формируется переменная аут. 2 Она у нас есть, я уже ее объявлял, и так давайте еще.
17:00 Зададимся блоком из стандартной библиотеки. Это пусть будет РС Триггер, также нужно объявить имя для данного устройства с раз 11 на вход. С нужно подать некоторую болевую переменную сет 3 и, соответственно, ресет 3 на вход ресет.
17:26 1 Так и на выходе у этого устройства будет некоторое. Булевая переменная, а внутри которой я уже объявил аналогичным образом. Вызываем триггер на включение, объявим его имя СР 11. Пусть будет с материнским типом СР, ну и соответственно на входы этого триггера нам нужны будут переменные булевые.
17:58 Так пусть будет переменная. Допустим, Сет 4 Ну и на вход резет, мы подадим переменную ресет 4 так. Так, ну и на выходе пусть формируется. Логическая переменная аут 4. Вот таким вот образом мы вызвали триггеры из стандартной библиотеки, теперь давайте. Объявим таймер таймер, заданной длительности, ему также нужно будет объявить имя ТП 11 с материнским типом ТПН. На вход и этого таймера мы подаем булевую переменную. Пусть будет сад 1 на вход, ПТ, мы должны будем подать.
18:59 Таймерную переменную либо вот такую таймерную константу, то есть мы подаем. Некий интервал длительностью в 5 секунд на выходе, естественно, будет булевая переменная. Пусть будет аут, 5 а вот на выход идти. Мы подадим уже таймерную переменную, которую объявляли ранее, это переменная типа тайм с именем тайм 11. Так давайте еще 1 функциональный блок, связанный с таймерами, объявим это таймер на включение с задержкой так называемый таймер Том. Объявим его имя.
19:58 Аналогично на вход им будет подана переменная, пусть будет с 2 булевая переменная. И на вход ПТ мы зададим таймерную константу длительностью в 5 секунд, то есть 5 секунд на входе на выходе соответствующий. Выход будет связан с некоторой булевой переменной, это пусть будет переменный ресет. 3 То есть она будет активирована с задержкой в 5 секунд? Ну и на выходе идти будет таймерная переменная тайм, 22 которая будет отображать отсчет этих 5 секунд, которые мы задали на входе аналогичным. образом нам нужно будет посмотреть, как работает таймер Тов. Это таймер с задержкой на выключение, объявим его имя то в 22 с типом материнским. Тов, аналогичные сигналы мы подадим на входы, пусть будет это сет. 3 Ну и здесь таймерная константа длительностью в 4 секунды, пусть будет так.
21:15 На выходе будет формироваться. Некоторая булевая переменная ресет, 4 ну и соответственно переменная, которая будет отображать временной интервал, после которого будет выключение. Так теперь давайте. Выполним вызов других устройств, пусть будет это счетчик инкрементной сети Ю. Ю 11 назовем его имя. На вход сию нам нужно будет подать. Некоторую болевую, переменную на вход рецепт. Нам также нужно будет подать некоторую болевую переменную, которая будет обнулять счетчик.
22:05 Так что так? Допустим, это будет переменная рецепт 5. Так и на вход пиви. Нам нужно будет подать, ну, допустим, целочисленное число некоторое. Для того чтобы отсчитывать так на выходе, это булевая переменная аут 6 и сиви. Здесь мы должны будем задать переменную типа. А Уорд, как мы помним, это переменная с целочисленным типом такое мы объявляли это себе 11. Так это счетчик инкрементный, теперь нам нужен счетчик декрементный. Это Ситиди, вот так вот можем вызывать его.
23:09 Объявили имя также на вход, сиди, нужна будет булевая переменная. Давайте ее свяжем с переменной сет, 4 так для переменной лоуд у нас. Есть булевая переменная лоуд 1 для того, чтобы загружать величину и на пиве мы подадим целочисленную константу, пусть будет число 3.
23:34 На выходе аналогично, так на Кью подаем некоторую булевую переменную аут, 7 но и с си ви будет связана. С типом Стой с переменной си ви 22 типа Ворд, так все мы задали. Теперь остается только откомпилировать наш проект, ошибок нет, но и подключиться в режиме эмуляции. Контроллеру для того, чтобы проверить, как он работает, включаем. Мы видим, что Аут 7 уже зажегся, давайте изменим состояние всех переменных типа Сет.
24:22 Так обратите внимание на таймерные переменные. Так записываем значения, таймер выполняет отчет, он будет включен ресет 3. Так мы едем. Рестригеры сохраняют свои значения, как мы видим, рецепт сохраняется отключенным асет. Стояние включено, давайте изменим значение опять переменных. То есть у детектора фронта здесь сигнал не будет меняться, его надо будет наблюдать. Здесь будет очень кратковременный такой импульс при изменении входного. состояния практически незаметный глаз мы видим, таймер выключается с задержкой. У счетчика выполняется счет при включениях и выключениях, обратите внимание.
25:26 Так запишем значение. Итак, триггеры включились у счетчиков. Мы видим, как меняется значение на 2 выходе при переходе из состояния включена, выключена да у. Инкрементного счетчика 2 выход увеличивается, а у декрементного он уменьшается. Ну и соответственно, когда значения пи ви и ти ви будут равны. Будет включен соответствующий 1 выход, как мы видим. Вот здесь у 1 отключился, у другого включился у счетчиков триггеры сохраняют свои. состояния то есть, как мы говорили, обладают некоторой памятью, их можно будет отключить либо включить, воспользовавшись специальными 2 входами.
26:18 Сет ресет. Так что так? Еще раз давайте загрузим число наш. Декрементный счетчик мы видим от серии 22 загрузилось 3 и при каждом включении включении переменной сет 4 будет выполняться счет импульсов. Так давайте поменяем состояние еще раз наших таймеров на входе. Запишем значение, выполняется отсчет, так надо включить. То есть при включении при переходе из 0 в единицу выполняется включение? Значения таймера работают, мы еще раз видим 1 с задержкой на включение другой с задержкой на выключение, так здесь.
27:16 Мы тоже выполним переход, Сет ресет так переход у нас. Так не выполняется, так она нам нужно отключить. Вход ресет, но тем не менее мы видим, что декрементный счетчик у нас работает. Итак, Детекторы фронта работают, триггеры работают. Так еще раз записываем значение, то есть переход. Из 0 в единицу. Так, Лоут, мы загрузили и на и ресет. Нам нужно выключить, чтобы все заработало, и. И еще раз давайте отключим переменную сет, 4 потом затем еще раз ее включим, чтобы продемонстрировать, как выполняется счет импульсов. Обратите внимание на инкрементном счетчике появилась единичка после перехода из 0 в единицу. Так отключим рецепт на СР Триггере, и выход у нас все равно остается включенным. То есть на данном примере мы увидели, как работают различные функциональные блоки, которые часто применяются при Мэг программировании ПЛК.
28:50 Я надеюсь, что данное видео было полезным. Ставьте лайки, подписывайтесь на канал, задавайте свои вопросы, оставляйте комментарии. Я буду очень рад. Надеюсь, что данное видео вам пригодится вашей деятельности всем больших успехов, спасибо.
Расшифровка сделана автоматически (Yandex SpeechKit) и может содержать ошибки в терминах.
В данном видео обсуждаются такие стандартные функциональные блоки, как триггеры, таймеры, детекторы фронта сигналов и счетчики импульсов. В видео показыны принципы их работы и основные свойства, которые применяются при программировании ПЛК.
Показан пример написания программы с использованием данных функциональных блоков.
00:00 — Начало