12-10-2023
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:
Основные языки программирования (сравнение • IDE • история • хронология) | |
---|---|
Используемые в разработке |
Ада • APL • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • Бейсик • Си • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Модула-3 • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Компонентный Паскаль • Perl • PHP • PowerBASIC • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic (.NET) |
Академические | |
IEC 61131-3 |
Instruction List • ST • FBD • Ladder Diagram (LD) • SFC |
Прочие | |
Эзотерические | |
Визуальные |
Structured Text.