Structured Text

Structured Text (ST) - мова програмування стандарту IEC61131-3. Призначений для програмування промислових контролерів і операторських станцій. Широко використовується в SCADA / HMI / SoftLogic пакетах. За структурою ближче всього до мови програмування Паскаль. Зручний для написання великих програм і роботи з аналоговими сигналами і числами з плаваючою точкою.


1. Приклад

Обчислення максимуму з масиву

 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 

2. Вирази

Основою 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.