Чтение онлайн

ЖАНРЫ

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

1.3. Триггерные ячейки

Чтобы зафиксировать однократное появление сигнала в логических цепях, используются триггеры. Базовым видом триггеров является асинхронный RS-триггер, состояние выхода которого меняется в зависимости от логических уровней на его входах, обозначаемых буквами R и S. Для установки на выходе RS-триггера единицы на вход «S» подают логическую единицу, а для сброса выхода в ноль логическую единицу подают на вход «R».

Добавим в табличную программу возможность фиксировать однократное появление сигнала. Для этого в каждом столбце создадим свой RS-триггер с одним выходом и произвольным количеством входов. Ячейки, реализующие триггерные операции в программе, будем называть триггерными ячейками. Табличная программа, использующая триггерные ячейки, представлена на рис. 3.

Рис. 3.

Пример табличной программы, использующей триггерные ячейки

В верхний заголовок таблицы добавлена строка «RS». Каждая ячейка этой строки является выходом RS-триггера столбца, входы для которого находятся в ячейках под ним. Для того чтобы управлять этим выходом, в столбец добавлены ячейки, которые изменяют его состояние. Ячейки, использующиеся для сброса в ноль, будем обозначать символом «R», а для установки в единицу – символом «S». Ячейки «R» и «S» будем называть активными триггерными ячейками. Выберем для них следующее цветовое обозначение: серый для состояния «ноль» и пурпурный для состояния «единица». Ячейки в строке «RS» хоть и являются триггерными, но обозначены символом «&», так как они наравне с другими активными ячейками будут участвовать в логическом И по столбцу.

Начальное значение ячеек в строке «RS» равно единице. Это сделано для того, чтобы при отсутствии в столбце активных триггерных ячеек «R» и «S» ячейка «RS» не блокировала нулем результат логического И по столбцу. Выход триггера столбца, которым является ячейка «RS», управляется следующим образом. Если в столбце ячейка «R» принимает значение «единица», то значение ячейки «RS» в заголовке сбрасывается в ноль. Если же в столбце ячейка «S» принимает значение «единица», то значение ячейки «RS» устанавливается в единицу. При возвращении состояния ячейки «R» или «S» в ноль ячейка «RS» не меняет свое значение. Происходит «защелкивание». Так как внутренний интерпретатор проходит по таблице сверху вниз, то при многократном применении в столбце триггерных ячеек значение ячейки «RS» будет определяться нижней триггерной ячейкой. После учета состояния всех ячеек «R» и «S» столбца значение ячейки «RS» участвует в операции «логическое И» наравне с ячейками столбца, обозначенными символом «&».

1.4. Логические операции над входными переменными

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

Добавим в таблицу столбцы, необходимые для выполнения операций над входными значениями. Чтобы улучшить читаемость программы, немного изменим внешний вид таблицы. Вставим дополнительные строки, которые будут разделять программу на блоки, а комментарии в строках, имеющих активные ячейки, выделим светло-серым фоном. Фон в остальных ячейках оставим белым. Табличная программа с внесенными изменениями показана на рис. 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 = 0;

– строка 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

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

Поделиться с друзьями: