Специфические булевские операторы языка ST
Следующие логические операторы являются специфическими для языка ST:
- REDGE определение восходящего фронта
- FEDGE определение падающего фронта
Могут быть использованы другие логические операторы, такие, как:
- NOT логическое отрицание
- AND(&) логическое И (AND)
- OR логическое ИЛИ (OR)
- XOR логическое исключающее ИЛИ (OR)
Их описание можно найти в главе ‘Стандартные операторы функциональные блоки и функции’.
“REDGE” оператор
Имя: REDGE
Значение: определяет передний фронт булевского выражения
Синтаксис: <edge> := REDGE ( <boo_expression>,<memo_variable> );
Операнды: Первый операнд - любая булевская переменная или сложное выражение, второй операнд - внутренняя переменная, использующаяся для хранения последнего состояния выражения
Возвращаемое значение: TRUE если значение выражения меняется с FALSE на TRUE. FALSE во всех остальных случаях.
Передний фронт не может быть определен при помощи оператора REDGE более одного раза в течении одного цикла. Этот оператор можно использовать для описания состояния присоединенного к SFC переходу.
Предупреждение:
Булевская переменная для хранения последнего состояния выражения не может быть использована в качестве триггера для фронтов нескольких выражений.
Если выражение - это булевская переменная с именем “xxx”, то нужно объявить уникальное имя внутренней переменной “EDGE_xxx” и использовать его в выражении REDGE для этой переменной. Этот метод гарантирует, что эта переменная не будет изменена во время других вычислений REDGE.
Пример:
(*ST программа, использующая REDGE оператор*)
(*Эта программа считает передние фронты булевского входа*)