Продолжая использовать наш сайт, вы даете согласие на обработку файлов cookie, которые обеспечивают правильную работу сайта. Благодаря им мы улучшаем сайт!
Принять и закрыть

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: Табличный ПЛК.Табличное программирование контроллеров - Владимир Васильевич Стретенцев на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

Результат операции над входными переменными сначала будет поступать на вход таймера, выходное значение которого будет присваиваться активным ячейкам строки. Если тип таймера не указан, то результат логической операции записывается в активные ячейки без задержки. Если результат входной логической операции не используется в активных ячейках строки, то ячейка этой строки в столбце «Знач.» остается пустой. Это сделано для того, чтобы в столбце «Знач.» отображались только те значения, которые используются для логического И по столбцам. В приведенной на рис. 9 таблице используются три таймера: таймер с задержкой на включение TON, таймер с задержкой на выключение TOF, таймер, формирующий импульс, TP.

Теперь результат логической операции над входными переменными записывается в ячейки столбца «Резул.», а логический уровень выхода таймера — в ячейки столбца с названием «Знач.». Тип применяемого в строке таймера указывается в столбце «Таймер». Время работы таймера записывается в миллисекундах в столбце «Устан.». При обратном отсчете времени текущее состояние внутреннего счетчика таймера будет выводиться в ячейку «Текущ.». Пример отображения обратного отсчета показан в строке 12 (рис. 9).

Установленная в строке 12 длительность импульса равна 2000 миллисекунд, или 2 секунды, до окончания импульса остается 1610 миллисекунд, или 1,61 секунды. По истечении этого времени значение в столбце «Знач.» по строке 12 перейдет из единицы в ноль. В строках таблицы 4 и 8 также используются таймеры, однако их текущее значение времени не отображается, следовательно, в данный момент таймеры в этих строках неактивны.

Можно заметить, что заголовок «Входной контакт» заменен на «Адрес», но цифры в столбце остались те же. Это сделано для того, чтобы максимально приблизить табличную программу к электрической схеме. Обычно при программировании контроллера с помощью графических языков программирования переменным присваиваются адреса с точностью до бита, хотя в среде программирования контроллера каждой переменной соответствует определенная структура размером в несколько десятков байтов. Назначение адресов с точностью до бита не более чем исторически сложившаяся практика. В табличной программе адрес входной или выходной переменной может соответствовать порядковому номеру контакта на разъеме контроллера. Тип переменной будет определяться ее адресом. К примеру, первые десять адресов будут принадлежать входным битовым переменным, а адреса с одиннадцатого по двадцатый — выходным битовым переменным.

2. Табличное программирование. Пример разработки программы

2.1. Простая программа управления шлагбаумом

Рассмотрим работу табличной программы на конкретном примере. Для этого создадим программу управления простым шлагбаумом с электроприводом. Сначала опишем алгоритм работы и основное оборудование такого шлагбаума.


Управление шлагбаумом производится нажимным двухкнопочным выключателем с фиксацией, возврат одной кнопки которого происходит при нажатии другой кнопки. Введем правило: шлагбаум может быть либо открыт, либо закрыт, остановку стрелы шлагбаума в промежуточном состоянии считаем аварийной. Если нажата кнопка «Открыть», то шлагбаум должен открыться, и мы сможем нажать только кнопку «Закрыть», так как кнопка «Открыть» зафиксирована в нажатом состоянии. Верхний и нижний концевые выключатели при срабатывании должны останавливать двигатель. Так как работа шлагбаума может нанести вред людям или имуществу, то необходимо предусмотреть в схеме аварийную кнопку и главный контактор, отключающий силовое питание при нажатии на нее. Аварийная кнопка должна иметь дополнительный контакт для сигнализации о том, что она находится в нажатом состоянии. Не углубляясь в схему реверсивного управления двигателем, поднимающего и опускающего стрелу шлагбаума, будем считать, что два выхода контроллера, обозначенные как «Вверх» и «Вниз», будут управлять движением стрелы.


Опишем алгоритм управления шлагбаумом. При нажатии на кнопку «Открыть» на выходе контроллера «Вверх» появляется единица и держится до срабатывания верхнего концевого выключателя. Аналогично, если будет нажата кнопка «Закрыть», на выходе контроллера «Вниз» появляется единица и держится до срабатывания нижнего концевого выключателя. Если во время опускания стрелы шлагбаума оператор увидит помеху, то он может кнопкой «Открыть» переключить двигатель на подъем стрелы. При нештатных ситуациях оператор нажимает аварийную кнопку.

Рассмотрим работу программы при переводе стрелы шлагбаума из открытого состояния в закрытое. Для открытого состояния шлагбаума управляющая программа представлена на рис. 10.


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

Можно увидеть, что питание включено, аварий нет, шлагбаум открыт, команды «вверх» и «вниз» равны нолю. По тому, что верхний концевой выключатель разомкнут, можно определить, что стрела шлагбаума находится в верхнем конечном положении. Нажатие на кнопку «Закрыть» выключит кнопку «Открыть», активные ячейки в таблице под командой «вниз» получат состояние «единица» и станут отображаться зеленым цветом. Логическое И по столбцу 2 даст в результате единицу. На выходном контакте 12 появится напряжение, соответствующее логической единице, и двигатель будет включен для опускания стрелы шлагбаума. Начнется движение вниз (рис. 11).


Рис. 11. Табличная программа управления шлагбаумом в момент нажатия кнопки «Закрыть»

После начала движения вниз верхний концевой выключатель перейдет в замкнутое состояние. Если не будет никаких действий со стороны оператора, движение стрелы вниз будет совершаться до срабатывания нижнего концевого выключателя. Табличная программа в момент движения стрелы вниз представлена на рис. 12.


Рис. 12. Табличная программа управления шлагбаумом в момент движения стрелы вниз

Как только стрела достигнет положения «закрыто», сработает нижний концевой выключатель. Соответствующая ему ячейка в столбце под командой «вниз» получит значение ноль, результатом логического И по этому столбцу станет ноль, и двигатель будет отключен. Таблица перейдет в состояние «закрыто» (рис. 13).


Рис. 13. Табличная программа управления шлагбаумом, соответствующая закрытому состоянию шлагбаума

На простом примере несложно увидеть, что благодаря табличному программированию прямо во время выполнения программы можно наблюдать состояния входов, выходов и цепей формирования выходных сигналов. Нет скрытых модулей обработки, полностью понятен алгоритм управления устройством. Во многих случаях нет необходимости в разработке графического интерфейса.

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

2.2. Использование триггерных ячеек

Одним из недостатков первой версии программы управления шлагбаумом является жесткая зависимость пуска приводного двигателя от состояния концевых выключателей. Если из-за раскачки стрелы шлагбаума на ветру или намокания контактов произойдет замыкание концевого выключателя, то это может привести к неконтролируемому включению двигателя стрелы, так как одна из кнопок, «Открыть» или «Закрыть», уже нажата. Попробуем повысить надежность системы управления шлагбаумом. Изменим способ подачи команд «открыть» и «закрыть». Вместо двухкнопочного выключателя с фиксацией применим обычные нажимные кнопки. Это более надежное и удобное решение. Также добавим кнопку «Стоп», при нажатии на которую состояние выходов 11 и 12, управляющих движением стрелы шлагбаума, становится равным нолю. Хотя нажатие на кнопку «Стоп» остановит движение, ею нельзя заменить аварийную кнопку. Аварийная кнопка должна отключить систему вне зависимости от работы контроллера.


Необходимо отметить, что контакты кнопок «Открыть» и «Закрыть» нормально открытые, а контакт кнопки «Стоп» нормально замкнутый. Это сделано для того, чтобы при неисправности кнопки «Стоп» или обрыве провода, соединяющего ее с контроллером, заблокировать команды открытия и закрытия. Кнопка «Стоп» наряду с аварийной кнопкой является частью системы безопасности, при неисправности которой запрещается работа механизмов.

Чтобы реализовать алгоритм управления с помощью кнопок, необходимо ввести в программу триггерные ячейки. Кнопка управления обычно имеет нормально открытый контакт, и при ее нажатии на входе контроллера появится единица. А концевой выключатель обычно имеет нормально замкнутый контакт, и при его срабатывании на входе контроллера будет уровень, соответствующий нолю. Но реализуемый в программе алгоритм требует, чтобы срабатывание конечного выключателя также давало единицу. Поэтому необходимо инвертировать некоторые входные логические сигналы. Для инверсии сигналов от конечных выключателей, кнопки «Стоп» и главного контактора в ячейку операции запишем слово «NOT».

Состояние программы при отсутствии силового питания представлено на рис. 14, из которого можно увидеть, что силовое питание выключено, аварий нет, шлагбаум открыт, команды «вверх» и «вниз» равны нолю. В отличие от первоначальной программы, верхняя строка перенесена вниз, а в строке 4 появился входной сигнал от кнопки «Стоп», приходящий на входной контакт номер 7. Во многих активных ячейках символ «&» заменен на «R» или «S».


Рис. 14. Табличная программа управления шлагбаумом с использованием триггерных ячеек перед включением главного контактора

Начальное значение всех ячеек «RS» равно единице, и если не сбросить их в ноль, то возможно появление на выходах ВВЕРХ и ВНИЗ логической единицы, которая самопроизвольно запустит двигатель при первоначальной подаче питания. Чтобы этого не произошло, в строке 7 на входной контакт номер 1 приходит сигнал с главного контактора, коммутирующего силовое питание. После того, как на контроллер будет подано напряжение, а главный контактор еще не будет включен, на контакте номер 1 будет логический ноль, который после инверсии сбросит ячейки «RS».

Пересчет таблицы внутренним интерпретатором производится сверху вниз, и значение ячейки «RS» определяется нижней триггерной активной ячейкой. Поэтому при отключенном главном контакторе ячейки «RS» будут находиться в сброшенном состоянии, независимо от сигналов кнопок управления. В целях безопасности должна быть предусмотрена схема, не позволяющая включать главный контактор при неработающем контроллере. На первый взгляд, достаточно блокировать включение главного контактора на время загрузки контроллера. Но наиболее правильным решением будет формирование на выходе контроллера сигнала готовности, который станет активным только после полной загрузки программы контроллера и разрешит включить главный контактор.

Как только главный контактор будет включен, триггерные активные ячейки в строке 7 перейдут в нулевое состояние и больше не будут влиять на результат, а ячейки «RS» в верхнем заголовке останутся в ноле. Так как стрела шлагбаума находится в верхнем положении и верхний концевой выключатель сработал, то ячейка «RS» в первом столбце будет удерживаться в сброшенном состоянии и не позволит включить двигатель при нажатии на кнопку «Открыть». Шлагбаум, находящийся в открытом состоянии, дальше открываться не будет. Программа, готовая принять команду оператора, показана на рис. 15.


Рис. 15. Табличная программа управления шлагбаумом с использованием триггерных ячеек после включения главного контактора

Нажатие на кнопку «Закрыть» переведет ячейку «RS» во втором столбце из ноля в единицу, результат логического И по столбцу также будет равен единице. Команда «вниз» запустит двигатель, и стрела начнет опускаться. Состояние программы в этот момент показано на рис. 16.


Рис. 16. Табличная программа управления шлагбаумом с использованием триггерных ячеек и нажатой кнопкой «Закрыть»

Стрела шлагбаума еще находится в верхнем конечном положении, начинается движение вниз. Силовое питание включено, аварий нет, команда «вниз» равна единице.

После начала движения оператор отпустит кнопку «Закрыть», при этом выходная переменная с адресом 12 будет активной благодаря установленной в единицу ячейке «RS» во втором столбце, как показано на рис. 17.


Рис. 17. Табличная программа управления шлагбаумом с использованием триггерных ячеек и отпущенными кнопками

Стрела, дойдя до закрытого положения, выключит нижний концевой выключатель, ячейка «RS» во втором столбце будет сброшена, логическое И по второму столбцу будет равно нолю — и двигатель остановится (рис. 18).


Рис. 18. Табличная программа управления шлагбаумом с использованием триггерных ячеек после срабатывания нижнего концевого выключателя

При всей кажущейся простоте программа управления шлагбаумом вполне может быть использована на реальном объекте. Можно добавить фотодатчики и другие обратные связи с механизмами, но сейчас нас интересует сама возможность управлять оборудованием простой программой в таблице.

2.3. Семь строк таблицы

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

2.4. Применение логических операций над входными переменными

Если высоты подъема стрелы будет недостаточно для проезда машины с негабаритным грузом, то у оператора должна быть возможность поднять стрелу выше положения, при котором срабатывает верхний концевой выключатель. Это нештатный режим работы, и он должен осуществляться под полным контролем оператора и его помощника. Обычно для обхода концевых выключателей используется кнопка «Шунт», при нажатии и удержании которой блокируются концевые выключатели.


Пока в программе управления шлагбаумом применялись только две операции над входными переменными — «=» и «NOT». Табличная программа с использованием логической операции «AND» над входными переменными показана на рис. 19. В ней можно увидеть, что силовое питание включено, аварий нет, стрела шлагбаума находится в верхнем конечном положении, следовательно, шлагбаум открыт.


Рис. 19. Использование логических операций над входными переменными в программе управления шлагбаумом

Для того чтобы ввести в программу управления шлагбаумом кнопку «Шунт», используется логическая операция «И». Так как двигатель остановлен срабатыванием верхнего концевого выключателя, сбросившего ячейку «RS» в первом столбце, с помощью триггерной ячейки «R» в строке 10, то для обхода концевого выключателя и продолжения движения необходимо отменить сброс, переведя триггерную ячейку «R» в строке 10 в ноль. Это можно сделать нажатием на кнопку «Шунт», при котором аргумент операции «логическое И» в строке 9 станет нолем и будет в этом состоянии, пока кнопка «Шунт» остается нажатой. Нулевой результат входной операции в строке 9 сделает результат в строке 10 равным нолю и отменит сброс.

Так как кнопка «Шунт» нормально открытая и при нажатии дает единицу, а для блокировки сигнала конечного выключателя нужен ноль, то сигнал от кнопки «Шунт» необходимо инвертировать. Логическое И инвертированных сигналов от конечного выключателя и кнопки «Шунт» через триггерную ячейку «R» будет сбрасывать ячейку «RS» команды пуска двигателя при достижении стрелой конечного положения, а нажатие на кнопку «Шунт» будет блокировать сброс. Таким образом, при удержании кнопки «Шунт» нажатием на кнопку «Открыть» можно поднять стрелу выше верхнего концевого выключателя. Табличная программа в момент обхода верхнего концевого выключателя показана на рис. 20.


Рис. 20. Обход верхнего концевого выключателя нажатием на кнопку «Шунт»

В таком виде программа в таблице хорошо читается, имеет несложный алгоритм, позволяет контролировать входные сигналы контроллера и цепи формирования выходных сигналов и может быть использована на реальном объекте. Но мы продолжим вносить в программу изменения — даже не столько для улучшения ее алгоритма, сколько для того, чтобы показать возможности табличного программирования контроллеров.

2.5. Применение таймера с задержкой на включение

Немного усложним алгоритм работы шлагбаума. Подъем и опускание стрелы шлагбаума происходит за определенное время. Следовательно, если стрела шлагбаума начала движение из нижнего положения, то через время, необходимое для подъема стрелы, мы ожидаем срабатывания верхнего концевого выключателя. Если за отведенное для подъема время сигнал от концевого выключателя не был получен, то мы можем говорить либо о неисправности шлагбаума, либо о повышенной нагрузке на механизм подъема. В таком случае требуется вмешательство специалиста.

Добавим к программе управления шлагбаумом возможность контролировать время выполнения операции. Для этого в качестве входных данных используем значения выходных переменных «команда „вверх“» и «команда „вниз“», управляющих двигателем шлагбаума. Время операции будем контролировать таймером с задержкой на включение TON. В таблице на рис. 21 выходное значение таймера в строке 18 станет равным единице только в том случае, если сигнал на входе таймера продержится равным единице больше установленного времени. То есть если при подъеме стрелы шлагбаума двигатель остается включенным больше 8 секунд, то на выходном контакте 13 установится логическая единица.


Рис. 21. Использование таймеров в программе управления шлагбаумом

Этим сигналом можно включить индикатор «Авария» или звуковой сигнал. Чтобы не усложнять программу, не будем вводить дополнительную кнопку квитирования аварий. Для сброса аварии применим кнопку «Стоп», которая подключена к контакту номер 7. При возникновении аварийной ситуации нажатие на кнопку «Стоп» квитирует аварию и отключает, к примеру, звуковой сигнал. Однако при этом произойдет сброс ячеек «RS» в первых двух столбцах и будет потеряна информация о направлении движения шлагбаума, в котором возникла аварийная ситуация. Это несколько усложнит задачу сервисной службы найти причину, по которой стрела шлагбаума не может подняться или опуститься за заданное время.

Состояние программы в аварийной ситуации представлено на рис. 21, из которого можно увидеть, что вышло время операции «поднять шлагбаум». Стрела шлагбаума находится между верхним и нижним конечными положениями. Силовое питание включено, кнопка «Открыть» нажата и отпущена. Сформирована команда «вверх». Таймер в строке 18 установил на своем выходе логическую единицу. За 8 секунд стрела шлагбаума не дошла до верхнего концевого выключателя.

Выбор времени таймеров, с помощью которых контролируется время открытия и закрытия шлагбаума, производится во время пусконаладочных работ. Если во время эксплуатации установленного времени недостаточно для выполнения операции, то это может быть следствием отсутствия смазки или обледенения механизмов, электрической или механической поломки, а также удержания стрелы каким-либо препятствием.

Чтобы не повредить двигатель шлагбаума при перегрузке, добавим в программу еще одну строку — для автоматического отключения команд «вверх» и «вниз» при возникновении аварийной ситуации. Табличная программа с добавленной строкой 20 представлена на рис. 22. Теперь при возникновении аварийной ситуации двигатель шлагбаума остановится и оператор будет уведомлен об аварии, например, звуковым сигналом. Отключается звуковое оповещение нажатием на кнопку «Стоп».



Поделиться книгой:

На главную
Назад