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_FO 

Выражения[править | править исходный текст]

Основой 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 — Последовательностные Функциональные Диаграммы

Ссылки[править | править исходный текст]