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. Табличная программа с логическими операциями над входными и выходными переменными