Читать книгу Табличный ПЛК.Табличное программирование контроллеров (Владимир Васильевич Стретенцев) онлайн бесплатно на Bookz (2-ая страница книги)
bannerbanner
Табличный ПЛК.Табличное программирование контроллеров
Табличный ПЛК.Табличное программирование контроллеров
Оценить:
Табличный ПЛК.Табличное программирование контроллеров

4

Полная версия:

Табличный ПЛК.Табличное программирование контроллеров


Рис. 4. Табличная программа с логическими операциями над входными переменными


Сначала рассмотрим возможность инвертирования входных логических сигналов для дальнейшего их использования в программе. Одни сигналы, поступающие на вход контроллера, могут приходить с датчиков, имеющих нормально открытый контакт (НО), и при срабатывании такого датчика на входе контроллера будет уровень, соответствующий единице. Другие датчики могут иметь нормально замкнутый контакт (НЗ), и при их срабатывании на входе контроллера появится ноль. Реализуемый в программе алгоритм может потребовать инвертированных входных сигналов. Если инверсии не требуется, запишем в ячейку операции знак «=». Чтобы инвертировать входное значение, в ячейку операции запишем слово NOT. В строке 10 таблицы на рис. 4 значение переменной b1 сначала инвертируется, а потом участвует в логической операции «исключающее ИЛИ».

Далее рассмотрим применение основных логических операций – «И», «ИЛИ», «исключающее ИЛИ» – для обработки входных переменных перед присвоением результата активным ячейкам таблицы. Так как операциям «И», «ИЛИ», «исключающее ИЛИ» требуется не менее двух аргументов, то две строки будут формировать аргументы, а результат поместим в третью строку. Конструкция будет напоминать арифметическое действие в столбик. Многострочные логические операции производятся над данными в столбце «Результат», и в этом же столбце записывается ответ. Расположение в одном столбце операндов и результата операции позволяет использовать полученный результат в качестве одного из операндов для следующей операции. На рис. 4 в ячейке «Результат» строки 4 будет ответ на логическое И содержимого двух ячеек, расположенных выше. Аналогично – в строке 8 для операции логическое «ИЛИ» и в строке 12 для операции «исключающее ИЛИ». В обычном для текстовых языков программирования виде это будет выглядеть следующим образом:

– строка 4: b3 = b1 AND b2 // 0 AND 1 = 0;

– строка 8: b4 = b1 OR b2 // 0 OR 1 = 1;

– строка 12: b5 = (NOT b1) XOR b2 // 1 XOR 1 = 0.

1.5. Инверсия выходных переменных

Иногда бывает необходимо, чтобы один из выходных сигналов контроллера был инвертирован – например, если в схеме устройства используется сигнал, состояние которого должно быть равным нолю, когда результат логического И по столбцу дает единицу. Чтобы реализовать такую возможность, дополним заголовок таблицы двумя строками: «Операция» и «Результат» (рис. 5).


Рис. 5. Табличная программа с логическими операциями над входными и выходными переменными


Выходным переменным, которым не требуется инверсия, в ячейку «Операция» запишем «=», а переменным, значение которых нужно инвертировать, запишем NOT. В приведенном на рис. 5 примере выходной переменной 3 присваивается инвертированное значение логического И по столбцу 3 с помощью операции NOT.

1.6. Таймеры

Управление оборудованием часто требует жестких временных рамок. Иногда нужна задержка между последовательным включением механизмов или систем, иногда наоборот – между последовательным их выключением. Наиболее ответственные операции должны выполняться за определенное время, и если этого не происходит, то оператору выдается предупреждение или происходит остановка процесса. Для формирования временных интервалов в программах контроллеров используются различные таймеры. Наиболее распространенные – таймер с задержкой на включение TON (timer on delay), таймер с задержкой на выключение TOF (timer off delay), таймер, формирующий импульс заданной длительности, TP (timer pulse). Рассмотрим алгоритм работы каждого из них.

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


Рис. 6. Временная диаграмма таймера с задержкой на включение TON


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

У таймера с задержкой на выключение TOF в исходном состоянии на выходе будет ноль (рис. 7). При переходе входного сигнала из ноля в единицу на выходе таймера будет единица без какой-либо задержки.


Рис. 7. Временная диаграмма таймера с задержкой на выключение TOF


А при переходе сигнала на его входе из единицы в ноль, то есть по заднему фронту сигнала, запускается обратный отсчет времени, начиная со значения, предустановленного в параметрах таймера. Установившийся на входе таймера ноль появится на выходе не сразу, а через заданное время – при достижении счетчиком нулевого значения. Если входной сигнал станет единицей до истечения предустановленного времени, то обратный отсчет прекратится, таймер перейдет в начальное состояние и на выходе останется единица.

В исходном состоянии на выходе импульсного таймера TP будет ноль (рис. 8). При переходе сигнала на его входе из ноля в единицу, то есть по переднему фронту сигнала, на выходе таймера будет единица без какой-либо задержки. Сразу же запускается обратный отсчет времени, начиная со значения, предустановленного в параметрах таймера. При достижении счетчиком нулевого значения на выходе таймера устанавливается ноль. Таким образом, по переднему фронту будет сформирован импульс заданной длительности. Возвращение входного сигнала в нулевое состояние до истечения заданного времени не повлияет на формирование импульса. Если входной сигнал снова станет единицей и будет сформирован передний фронт, то таймер будет перезапущен и отсчет начнется заново.


Рис. 8. Временная диаграмма таймера, формирующего импульс заданной длительности, TP


Чтобы при необходимости в программе можно было формировать временные интервалы, добавим в таблицу три столбца. Первый соответствует типу используемого таймера, второй – установленному времени, третий – текущему состоянию внутреннего счетчика таймера. Дополнительно сократим названия колонок и отформатируем таблицу. Табличная программа с внесенными изменениями представлена на рис. 9.


Рис. 9. Пример использования таймеров


Битовый результат операции сначала поступает на вход таймера, выходное значение которого будет присваиваться активным ячейкам строки. Если тип таймера не указан, то результат логической операции записывается в активные ячейки без задержки. Если результат операции не используется в активных ячейках строки, то ячейка этой строки в столбце «Знач.» остается пустой. Это сделано для того, чтобы в столбце «Знач.» отображались только те значения, которые принимают участие в формировании результата по столбцу. В приведенной на рис. 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.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

Примечания

1

ГОСТ Р МЭК 61131-3-2016 «Контроллеры программируемые. Часть 3. Языки программирования».

2

ГОСТ 19.781-90 «Обеспечение систем обработки информации программное. Термины и определения».

Вы ознакомились с фрагментом книги.

Для бесплатного чтения открыта только часть текста.

Приобретайте полный текст книги у нашего партнера:


Полная версия книги

Всего 10 форматов

bannerbanner