В последнее время становится все более популярной тема автоматизации различных технологических процессов с использованием программируемых контроллеров (ПЛК). Несмотря на это, в Интернете встречается очень мало практических статей с реальными примерами как эти ПЛК программировать. Тема эта очень интересная, т.к. она находится на стыке электрооборудования, электроники и программирования. Научится писать программы для ПЛК можно даже не имея их в наличии. В этом хорошо помогает режим эмуляции, который имеется во всех современных программных пакетах.
В этой статье я покажу пример перевода электрической схемы, построенной на релейных устройствах (пускатели, реле) в программу, которая будет работать на контроллере. Сразу скажу, что это всего лишь небольшой учебный проект и на что-то большее чем просто объяснить базовые принципы программирования ПЛК на конкретном примере он не претендует.
Релейная схема грузового подъемника
Исходной схемой для этого проекта является относительно простая схема грузового подъемника (грузового лифта) с рычажным управлением на два этажа. Схема показана на рисунке ниже.
Схема электрическая приниципиальная грузвого подъемника с одним двигателем на две остановки
В схеме присутствует всего один двигатель, который поднимает и опускает подъемник между двумя этажами. Это реверсивный трехфазный асинхронный двигатель с фазным ротором на 380 В. К ротору двигателя подключены пусковые сопротивления и контакты трех электромагнитных пускателей, позволяющие запускать двигатель в 3 ступени. Это решение позволяет в процессе запуска двигателя уменьшать его пусковой ток и увеличивать пусковой момент.
Пуск двигателя автоматизирован с помощью трех реле ускорения (1РУ — 3РУ). Это обычные реле времени на 24 вольта постоянного тока. Для их питания имеется понижающий трансформатор и выпрямитель .
На клеммы двигателя подключен трехфазный колодочный электромагнитный тормоз, который при подаче напряжения на двигатель растормаживает его вал, а при исчезновении напряжения вал двигателя мгновенно зажимается и фиксируется в неподвижном положении.
Реверс двигателя выполняется с помощью контактов двух электромагнитных пускателей (на схеме В и Н). Питание на схему подается через рубильник (на схеме — ВУ) и автоматический выключатель (1А).
Включение в работу подъемника возможно только при наличии напряжения. Его контролирует реле напряжения (РН), которое находится в левой части схемы. Там же находятся штепсельные розетки и звонок, который можно включить с любой площадки для вызова проводника.
Двери шахты и кабины открываются и закрываются вручную. Управление лифтом выполняется с помощью рычажного переключателя на три положения — «Вверх», «Вниз» и «Нулевое».
При переводе рукоятки в одно из крайних положений лифт начинает двигаться и при достижении нужного этажа рукоятка механически переводится в положение «Нулевое». При этом разрываются контакты в цепи переключателя, катушка пускателя обесточивается, двигатель отключается от сети, размыкаются контакты в цепи его ротора и лифт останавливается. После этого можно запустить движение лифта в обратную сторону.
Грузовой подъемник относится к устройствам повышенной опасности и в его схеме (как и в схемах любых лифтов) присутствует большое количество различных блокировочных контактов путевых выключателей и контактов различных защитных устройств.
В данной схеме это путевые (конечные) выключатели контролирующие закрытие дверей кабины, шахты на нижнем и верхнем этаже, подъема и спуска кабины выше рабочей верхней и нижней зоны, контакты «слабины подъемных канатов», которые размыкаются при обрыве или ослаблении каната, на котором весит кабина подъемника, контакты ограничителя скорости, ловителя и натяжного устройства привода троса. Всего — 14 дискретных датчиков.
При размыкании любого из перечисленных контактов электродвигатель подъемника должен мгновенно отключаться и затормаживаться, поэтому все датчики, контакт реле напряжения и кнопка «Общий стоп» включены последовательно в цепь катушек управляющих двигателем электромагнитных пускателей.
Создание программы для ПЛК для грузового подъемника
Задача состояла в том, что бы ничего не меняя в устройстве, в принципе работы и органах управления подъемника перевести его схему с устаревшего релейного вида на вариант с использованием программируемого контролера.
Преимущество программной формы управления установками заключается в том, что в дальнейшем при желании программу можно легко доработать, улучшить удобство управления подъемником, поменять логику его работы, улучшить его функциональность. Но эти действия должны сопровождаться изменением в конструкции подъемника и добавлением в схему других дополнительных устройств. В нашем же варианте такой задачи не ставилось.
В данном случае предложен вариант модернизации электрооборудования грузового подъемника путем изменения его схемы управления с таким подходом, что бы, например, для управляющего таким механизмом человека абсолютно ничего не изменилось.
Поэтому мы сохраним главный орган управления подъемником — рычажной переключатель и оставим в работе асинхронный двигатель с фазным ротором с его трехступенчатым пуском, хотя так и хочется его заменить на асинхронный двигатель с короткозамкнутым ротором, включающимся через устройство плавного пуска. Но пока так делать не будем, так как это решение очень существенно упростит и так не слишком сложную электрическую схему подъемника.
Итак, разделим нашу схему на четыре зоны (смотрите схему подъемника на рисунке).
В зоне 1 ничего трогать не будем, т.к. она отвечает за звуковой вызов лифтера и контроль наличия напряжения в схеме. Зона 2 с двигателем, электромагнитным тормозом и силовыми контактами пускателей тоже не изменится. Все аппараты из зоны 4 можно удалить, т.к. порядком включения контактов в цепи ротора двигателя при его запуске будут управлять программные таймеры. Остается зона 3. Основная модернизация коснется именно этой зоны.
В качестве контроллера возьмем ПЛК фирмы ОВЕН. Программу для него будем составлять на языке CFC . На мой взгляд, это самый удобный язык для начинающих. Он очень похож на язык функциональных блоков FBD , но со своими небольшими особенностями. Очень многие любят еще один замечательный язык — язык релейных диаграмм LD . Я ничего не имею против, но на CFC составлять программу для ПЛК мне удобнее, поэтому я использовал именно этот язык, но тут все на любителя. Для составления программы используем пакет CoDeSys 2.3 .
Программа представляет собой набор функциональных блоков ( AND , OR , NOT , триггеров и таймеров). Программа работы грузового подъемника на языке CFC :
Первоначально нам понадобятся блоки AND (элемент И) . На выходе элемента находится логическая единица (в программе — » TRUE «) только тогда, когда на всех входах тоже находятся логические единицы. Если состояние даже одного входа отличается от единицы, то выход сбрасывается в ноль (в программе — » FALSE «) .
Этот элемент нам поможет организовать все блокировочные контакты и контакты безопасности (дискретные входы), а их у нас как вы помните 14 (в программе они обозначены под названием SQ1 — SQ14) . На вход блока AND подключим также контакт реле напряжения и кнопу «Общий стоп» ( SB1). Для удобства восприятия я завел все контакты на 3 элемента AND , а затем использовал еще один для их объединения в одну цепь.
По умолчанию при добавлении в программу любой функуиональный блок имеет 2 входа. В случае необходимости добавить дополнительный вход нужно навести на блок мышкой, нажать у нее на правую клавишу и выбрать пункт «Вход блока». Таким образом можно добавить любое необходимое количество дополнительных входов на блок.
Рычажной переключатель подключен к двум входам контроллера (в программе — «SA_verh» и «SA_niz»). Переключатель в каждом из своих двух крайних положений подает логическую единицу на один их двух RS триггеров ( «RS_verh» или «RS_niz»). Триггер — аналог катушки пускателя с блокировочным контактом в релейной схеме управления.
Для того чтобы его включить нужного подать логическую единицу на контакт » SET «, для того чтобы отключить — на » RESET » . Выход триггера » Q1 » передает сигнал на один из выходов контроллера — » KM1 » или » KM2 » к которым подключены катушки электромагнитных пускателей . Пускатели переключают контакты и управляют двигателем.
Трехступенчатый пуск в программе организован с использованием 2-х таймеров «ТОN» . При подаче логической единицы на вход таймера » IN » он отсчитывает время заданное на входе » PT » и переключает с выдержкой времени выход » Q » с логического нуля в единицу. После срабатывания первгого таймера (Т1) по сигналу с его выхода (Q) запускается отсчет времени на втором таймере (Т2) и через время заданное на входе PT второй таймер тоже подает на свой выход (Q) логическую единицу.
К выходам контроллера (в программе — KM3 , KM4 и KM5) подключено 3 катушки электромагнитных пускателя. Первый из них включается сразу при включении КМ1 или К M2 и подключает к ротору двигателю максимальное сопротивление, KM4 и KM5 включаются по таймеру и поочереди закорачивают часть пускового сопротивления. После запуска двигателя все три пускателя остаются во включенном положении.
Элемент OR (логическое ИЛИ) нужен для того, что бы одновременно с запуском одного из двух основных пускателей, в работу включалась часть схемы, отвечающая за трехступенчатый пуск двигателя. При наличии логической единицы на одном из входов элемента » OR «, на его выход передается логическая единица, т.е. для его срабатывания достаточно сигнала на любом из его входов.
Между таймерами и выходами контроллера включены элементы AND с одним из инверсных входов (кружок на входе). У данного элемента логическая единица на выходе появляется только тогда, когда на обычный вход подан сигнал логической единицы, ка на инверсный — логического нуля.
Такой же элемент, только уже с двумя инверсными входами находится рядом с входами «SA_verh» и «SA_niz», принимающими сигналы от рычажного переключателя. Это нужно для того, что бы обеспечить отключение всех пускателей на выходах при возврате переключателя в нулевое положение, когда обе цепи «Вверх» и «Вниз» разомкнуты.
При наличии двух логических нулей на входе такого элемента AND дает логическую единицу на выходе элемента. Этот сигнал приходит по программе на вход триггеров » RESET «, триггеры сбрасываются в ноль и пускатели на выходах отключаются. Элементы AND с одним инверсным входом между таймерами и выходами KM3 и KM4 отключают эти выходы и, соответственно, отключают пускатели отвечающие за шунтирование сопротивлений в цепи ротора при остановке двигателя.
Для установки инверсного входа или выхода необходимо подвести мышку к фукциональному блоку, выбрать нужный вход или выход, нажать правую кнопку мышки и выбрать «Инверсия». Аналогичным образом можно любой инверсный вход или выход преобразовать в обычный.
Элементы AND под номерами 5 и 10 не дают включиться пускателям, отвечающим за движение двигателя «Вверх» и «Вниз» одновременно (защита от короткого замыкания в цепях силовых контактов пускателей при одновременном их включении). Хотя в данной схеме с рычажным переключателем это и так не возможно. Но так как блокировочные контакты такого типа присутствовали в исходной релейной схеме, то решено было их сохранить и в программе для ПЛК.
Ну и наконец, осталось обеспечить мгновенное отключение электродвигателя при размыкании любого из контактов на входе. Наличие триггеров в схеме не позволяло изначально это сделать. Для того чтобы схема работала корректно при любой аварийной ситуации (срабатывание контактов безопасности, контактов путевых выключателей, контакта реле напряжения или кнопки «Общий стоп») в схему была добавлена две цепочки из элементов NOT и OR (4 и 7).
Элемент NOT преварщает логическую единицу на входе в логический ноль на выходе и наоборот — ноль на входе в единицу на выходе. Сможете объяснить как работают в программе цепочки из NOT и OR? Напишите в комментариях.
Эмуляция работы программы на языке CFC в CoDeSys
После создания программы ее можно проверить в CoDeSys в режиме эмуляции. Для этого нужно во вкладке «Онлайн» выбрать «Режим эмуляции», нажать кнопку «Подключение», затем выставить на всех входах логическую единицу — » TRUE «, записать эти значения в программу нажав » Ctrl » + F7 и нажать F5 для старта.
Режим эмуляции в CoDeSys :
Имитируя переключения входов (» TRUE » и » FALSE «) можно смотреть за изменением цепей в синий цвет (путь прохождения сигналов) и изменением состоянием выходов. После каждого изменения состояния входа не забывайте записывать эти значения в программу нажимая » Ctrl » + F7 . Для отключения режима эмуляции нажмите «Стоп», затем «Отключение» на вкладке «Онлайн» и снимите галочку «Режим эмуляции».
Заключение
Еще раз хочу отметить, что этот проект был связан исключительно с учебными целями и даже на реальном программируемом контроллере пока не тестировался. Если у вас возникли вопросы и что-то из изложенного осталось не понятно, спрашивайте в комментариях, я попробую на них ответить. И еще для меня очень важно получить ответ на вопрос — продолжать ли делать статьи на такую тему? В общем, готов выслушать любые конструктивные замечания и предложения.
Курс по программированию контроллеров:
Практический курс по ПЛК Овен и разработке АСУ ТП в Codesys
Structured Text
#4 — Structured Text // Функция или функциональный блок? Автор — Сергей Романов
Книга «Изучаем Structured Text МЭК 61131-3»: Ссылка на книгу
Информация, опубликованная на данном веб-сайте, представлена исключительно в ознакомительных целях, за применение этой информации администрация сайта ответственности не несет.