Рис. 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 сначала инвертируется, а потом участвует в логической операции «исключающее ИЛИ».