Structured Text
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 в Последовательностные Функциональные Диаграммы
[править] Ссылки
| Основные языки программирования (сравнение 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 Object Pascal Objective-C OCaml Oz Parser Паскаль Perl PHP PowerBASIC PureBasic 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 |
| Прочие | |
| Эзотерические | |
| Визуальные | |
