Structured Text | это... Что такое Structured Text? (original) (raw)
Structured Text (ST) — язык программирования стандарта IEC61131-3. Предназначен для программирования промышленных контроллеров и операторских станций. Широко используется в SCADA/HMI/SoftLogic пакетах. По структуре ближе всего к языку программирования Паскаль. Удобен для написания больших программ и работы с аналоговыми сигналами и числами с плавающей точкой.
Пример
Вычисление максимума из массива
VAR_CONSTANT Array_Sz:BYTE:=4; END_VAR VAR Iter:BYTE; arr:ARRAY [1..Array_Sz] of real:=3.2,4.2,1.4,7.8; fnd_max:REAL:=-1.2E38; END_VAR FOR Iter:=1 TO Array_Sz DO fnd_max:=MAX(fnd_max,arr[Iter]); END_FOR
Выражения
Основой ST-программы служат выражения. Выражения состоят из операндов (констант и переменных) и операторов
Операторы являются «командами» языка программирования ST. Они должны заканчиваться точкой с запятой. Одна строка может содержать несколько операторов (отделяемых точками с запятой).
Результат вычисления выражения присваивается переменной при помощи оператора присваивания :=
. Каждое выражение обязательно заканчивается точкой с запятой "; ".
Выражение состоит из переменных, констант и функций, разделенных операторами, например:
**Varl : 1+Var2 / ABS(Var2)** ;
Стандартные операторы в выражениях языка ST имеют символьное представление, например математические действия: +, -, *, /, операции сравнения и т. д.
Имена, используемые в исходном коде (идентификаторы переменных, константы, ключевые слова) разделены неактивными разделителями (пробелами, символами окончания строки и табуляции) или активными разделителями, которые имеют заранее определенное значение (например, символ-разделитель " > " означает сравнение больше чем, а символ " + " операцию сложения и т. д.).
Неактивные разделители могут быть свободно введены между активными разделителями, константами и идентификаторами. В отличие от неформатных языков, таких как IL, конец строки может быть введен в любом месте программы.
Для улучшения читаемости программ нужно использовать неактивные разделители в соответствии со следующими правилами: не более одного оператора в строке; табуляцию для сдвига сложных операторов; комментарии .
В текст могут быть введены комментарии, которые должны начинаться символами (*
и заканчиваться ими же *)
.
Несколько выражений можно записать в одну строку. Однако хорошим стилем считается за-пись одного выражения в строке. Длинные выражения можно перенести на следующую строку. Перенос строки равноценен пассивному разделителю.
Выражение может включать другое выражение, заключенное в скобки. Выражение, заклю-ченное в скобки, вычисляется в первую очередь:
bAlarm :=bylnpl > bylnp2 '**AND'** bylnpl+ bylnp2 о О '**OR'** bAlarm2 ;
Тип всех операндов выражения должен быть одинаковым. Для изменения типов использовать функции преобразования типов: BOO, ANA, REAL, TMR и MSG. Для того чтобы отделить и от части выражения и явно определить приоритетность операций используются скобки.
Когда в сложном выражении нет скобок, приоритетность ST-операторов задана неявно.
Например:
2 + 3*6 равно 2+18=20 - _оператор * имеет высший приоритет_
(2+3) * 6 равно 5*6=30 - _приоритет задается скобками_
Максимальное количество вложенных скобок — 8.
См. также
Другие языки программирования стандарта IEC61131-3:
- LD — Релейно-Контактные Схемы
- FBD — Функциональные Блоковые Диаграммы
- IL — Список Инструкций
- SFC — Последовательностные Функциональные Диаграммы