Структуро́ваний текст або Structured text (ST) — мова програмування стандарту IEC 61131-3, що призначена для програмування промислових контролерів та операторських станцій. Знайшла застосування у SCADA/HMI/ пакетах. За структурою й синтаксисом є найближчою до мови програмування Pascal. Мова є зручною для написання великих програм й роботи з аналоговими сигналами та числами з рухомою комою.
Основні принципи мови
Основою ST-програми слугують вирази. Результат обчислення виразу присвоюють змінній за допомогою оператора «:=». Кожний вираз обов'язково має закінчуватись крапкою з комою «;». Вирази будуються із змінних, констант і функцій, розділених операторами.
Стандартні оператори у виразах мають символьне позначення, наприклад математичні дії: +, -, *, /, порівняння тощо. Крім операторів у виразі можуть використовуватись пробіли і табуляція для кращого сприйняття, а також, коментарі.
Вираз може містити інший вираз у дужках, що обчислюється у першу чергу.
Вираз обчислюється відповідно до правил пріоритету операцій. У порядку зменшення пріоритету операції розташовуються таким порядком: вираз у дужках; виклик функції; степінь EXPT; зміна знаку; заперечення NOT; множення, ділення і ділення по модулю MOD; додавання і віднімання; операції порівняння (<, >, <=, >=); рівність (=); нерівність (<>); логічні операції AND, XOR та OR.
Основні оператори мови
Оператор вибору (IF)
Оператор вибору дозволяє виконувати різні групи виразів залежно від умов, записаних логічними виразами. Повний синтаксис оператора IF виглядає так:
IF <логічний вираз IF> THEN <вирази IF>; [ ELSEIF <логічний вираз RLSEIF 1> THEN <вирази ELSEIF 1>; … ELSEIF <логічний вираз ELSEIF n> THEN <вирази ELSEIF n>; ELSE <вирази ELSE>; ] END_IF
Оператор множинного вибору (CASE)
Оператор множинного вибору CASE дозволяє виконати різні групи виразів залежно від значення однієї цілочисельної змінної або виразу. Синтаксис:
CASE <цілочисельний вираз> OF <значення 1>: <вирази 1>; <значення 2>: <вирази 2>; … <значення n>: <вирази n> [ ELSE <вирази ELSE>; ] END_CASE
Цикли WHILE та REPEAT
Цикли WHILE та REPEAT забезпечують повторення групи виразів, поки вірним є логічний вираз.
Синтаксис WHILE:
WHILE <умовний логічний вираз> DO <вирази (тіло циклу)> END_WHILE
Синтаксис REPEAT^
REPEAT <вирази (тіло циклу)> UNTIL <умовний логічний вираз> END_REPEAT
Цикл FOR
Цикл FOR забезпечує задану кількість повторень групи виразів. Синтаксис:
FOR <цілочисельний лічильник> := <початкове значення> TO <кінцеве значення> [BY <крок>] DO <вирази (тіло циклу)> END_FOR
Оператори переривання ітерацій EXIT та RETURN
Оператор EXIT, розташований у тілі циклів WHILE, REPEAT та FOR, приводить до негайного закінчення циклу. Оператор RETURN здійснює негайний вихід з програми.
Приклад оформлення фрагменту тексту програми на ST
FOR icY := 0 TO 8 DO FOR icX := 0 TO 16 DO IF iaPos[icY, icX] > iLevel THEN iBalance := iBalance + 1; ELSE IF iaPas[icY,IcX] < iLevel THEN iBalance := iBalance – 1; END_IF END_IF END_FOR iLevel := iLevel *2; END_FOR
Розширення стандарту
Існує розширений стандарт IEC 61131-3, що містить елементи об'єктно-орієнтованого програмування через розширення можливостей функціональних блоків (успадкування, властивості, методи, інтерфейси). Також розширений стандарт передбачає уведення нових типів даних, таких як вказівники, об'єднання, рядки з двома байтами на символ, посилання тощо.
Деякі виробники доповнюють свої реалізації власними нестандартними розширеннями. Прикладом можуть слугувати операції динамічного виділення й звільнення пам'яті у TwinCAT 3.1 компанії «Beckhoff» (__NEW та __DELETE відповідно). Ці розширення відкривають багато нових можливостей при написанні програм.
Приклад тексту програми мовою ST
// PLC configuration CONFIGURATION DefaultCfg VAR_GLOBAL b_Start_Stop : BOOL; // Global variable to represent a boolean. b_ON_OFF : BOOL; // Global variable to represent a boolean. Start_Stop AT %IX0.0:BOOL; // Digital input of the PLC (Address 0.0) ON_OFF AT %QX0.0:BOOL; // Digital output of the PLC (Address 0.0). (Coil) END_VAR // Schedule the main program to be executed every 20 ms TASK Tick(INTERVAL := t#20ms); PROGRAM Main WITH Tick : Monitor_Start_Stop; END_CONFIGURATION PROGRAM Monitor_Start_Stop // Actual Program VAR_EXTERNAL Start_Stop : BOOL; ON_OFF : BOOL; END_VAR VAR // Temporary variables for logic handling ONS_Trig : BOOL; Rising_ONS : BOOL; END_VAR // Start of Logic // Catch the Rising Edge One Shot of the Start_Stop input ONS_Trig := Start_Stop AND NOT Rising_ONS; // Main Logic for Run_Contact -- Toggle ON / Toggle OFF --- ON_OFF := (ONS_Trig AND NOT ON_OFF) OR (ON_OFF AND NOT ONS_Trig); // Rising One Shot logic Rising_ONS := Start_Stop; END_PROGRAM
Див. також
Інші мови програмування стандарту IEC 61131-3:
Примітки
- IEC 61131-3:2013 Programmable controllers — Part 3: Programming languages.
Джерела
- Мишель Ж. Программируемые контроллеры: Архитектура и применение: пер. с фр. / Ж. Мишель ; Переводчик И. В. Федотов ; Ред. Б. И. Лыткин . — М. : Машиностроение, 1992 . — 320 . —
- Э. Парр. Программируемые контроллеры: руководство для инженера. — М.: БИНОМ. Лаборатория знаний, 2007. — 516 с. —
- Петров И. В. Программируемые контроллеры. Стандартные языки и приёмы прикладного проектирования / Под ред. проф. В. П. Дьяконова. — М.: СОЛОН-Пресс, 2004. — 256 c. —
Посилання
- Приклади програм мовою ST [ 10 травня 2016 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Strukturo vanij tekst abo Structured text ST mova programuvannya standartu IEC 61131 3 sho priznachena dlya programuvannya promislovih kontroleriv ta operatorskih stancij Znajshla zastosuvannya u SCADA HMI paketah Za strukturoyu j sintaksisom ye najblizhchoyu do movi programuvannya Pascal Mova ye zruchnoyu dlya napisannya velikih program j roboti z analogovimi signalami ta chislami z ruhomoyu komoyu Osnovni principi moviOsnovoyu ST programi sluguyut virazi Rezultat obchislennya virazu prisvoyuyut zminnij za dopomogoyu operatora Kozhnij viraz obov yazkovo maye zakinchuvatis krapkoyu z komoyu Virazi buduyutsya iz zminnih konstant i funkcij rozdilenih operatorami Standartni operatori u virazah mayut simvolne poznachennya napriklad matematichni diyi porivnyannya tosho Krim operatoriv u virazi mozhut vikoristovuvatis probili i tabulyaciya dlya krashogo sprijnyattya a takozh komentari Viraz mozhe mistiti inshij viraz u duzhkah sho obchislyuyetsya u pershu chergu Viraz obchislyuyetsya vidpovidno do pravil prioritetu operacij U poryadku zmenshennya prioritetu operaciyi roztashovuyutsya takim poryadkom viraz u duzhkah viklik funkciyi stepin EXPT zmina znaku zaperechennya NOT mnozhennya dilennya i dilennya po modulyu MOD dodavannya i vidnimannya operaciyi porivnyannya lt gt lt gt rivnist nerivnist lt gt logichni operaciyi AND XOR ta OR Osnovni operatori moviOperator viboru IF Operator viboru dozvolyaye vikonuvati rizni grupi viraziv zalezhno vid umov zapisanih logichnimi virazami Povnij sintaksis operatora IF viglyadaye tak IF lt logichnij viraz IF gt THEN lt virazi IF gt ELSEIF lt logichnij viraz RLSEIF 1 gt THEN lt virazi ELSEIF 1 gt ELSEIF lt logichnij viraz ELSEIF n gt THEN lt virazi ELSEIF n gt ELSE lt virazi ELSE gt END IF Operator mnozhinnogo viboru CASE Operator mnozhinnogo viboru CASE dozvolyaye vikonati rizni grupi viraziv zalezhno vid znachennya odniyeyi cilochiselnoyi zminnoyi abo virazu Sintaksis CASE lt cilochiselnij viraz gt OF lt znachennya 1 gt lt virazi 1 gt lt znachennya 2 gt lt virazi 2 gt lt znachennya n gt lt virazi n gt ELSE lt virazi ELSE gt END CASE Cikli WHILE ta REPEAT Cikli WHILE ta REPEAT zabezpechuyut povtorennya grupi viraziv poki virnim ye logichnij viraz Sintaksis WHILE WHILE lt umovnij logichnij viraz gt DO lt virazi tilo ciklu gt END WHILE Sintaksis REPEAT REPEAT lt virazi tilo ciklu gt UNTIL lt umovnij logichnij viraz gt END REPEAT Cikl FOR Cikl FOR zabezpechuye zadanu kilkist povtoren grupi viraziv Sintaksis FOR lt cilochiselnij lichilnik gt lt pochatkove znachennya gt TO lt kinceve znachennya gt BY lt krok gt DO lt virazi tilo ciklu gt END FOR Operatori pererivannya iteracij EXIT ta RETURN Operator EXIT roztashovanij u tili cikliv WHILE REPEAT ta FOR privodit do negajnogo zakinchennya ciklu Operator RETURN zdijsnyuye negajnij vihid z programi Priklad oformlennya fragmentu tekstu programi na STFOR icY 0 TO 8 DO FOR icX 0 TO 16 DO IF iaPos icY icX gt iLevel THEN iBalance iBalance 1 ELSE IF iaPas icY IcX lt iLevel THEN iBalance iBalance 1 END IF END IF END FOR iLevel iLevel 2 END FORRozshirennya standartuIsnuye rozshirenij standart IEC 61131 3 sho mistit elementi ob yektno oriyentovanogo programuvannya cherez rozshirennya mozhlivostej funkcionalnih blokiv uspadkuvannya vlastivosti metodi interfejsi Takozh rozshirenij standart peredbachaye uvedennya novih tipiv danih takih yak vkazivniki ob yednannya ryadki z dvoma bajtami na simvol posilannya tosho Deyaki virobniki dopovnyuyut svoyi realizaciyi vlasnimi nestandartnimi rozshirennyami Prikladom mozhut sluguvati operaciyi dinamichnogo vidilennya j zvilnennya pam yati u TwinCAT 3 1 kompaniyi Beckhoff NEW ta DELETE vidpovidno Ci rozshirennya vidkrivayut bagato novih mozhlivostej pri napisanni program Priklad tekstu programi movoyu ST PLC configuration CONFIGURATION DefaultCfg VAR GLOBAL b Start Stop BOOL Global variable to represent a boolean b ON OFF BOOL Global variable to represent a boolean Start Stop AT IX0 0 BOOL Digital input of the PLC Address 0 0 ON OFF AT QX0 0 BOOL Digital output of the PLC Address 0 0 Coil END VAR Schedule the main program to be executed every 20 ms TASK Tick INTERVAL t 20 ms PROGRAM Main WITH Tick Monitor Start Stop END CONFIGURATION PROGRAM Monitor Start Stop Actual Program VAR EXTERNAL Start Stop BOOL ON OFF BOOL END VAR VAR Temporary variables for logic handling ONS Trig BOOL Rising ONS BOOL END VAR Start of Logic Catch the Rising Edge One Shot of the Start Stop input ONS Trig Start Stop AND NOT Rising ONS Main Logic for Run Contact Toggle ON Toggle OFF ON OFF ONS Trig AND NOT ON OFF OR ON OFF AND NOT ONS Trig Rising One Shot logic Rising ONS Start Stop END PROGRAMDiv takozhInshi movi programuvannya standartu IEC 61131 3 FBD angl Function Block Diagram funkcionalni blokovi diagrami IL angl Instruction List spisok instrukcij asemblernogo tipu SFC angl Sequential Function Chart mova diagram staniv LD angl Ladder Diagram relejno kontaktni shemi PrimitkiIEC 61131 3 2013 Programmable controllers Part 3 Programming languages DzherelaMishel Zh Programmiruemye kontrollery Arhitektura i primenenie per s fr Zh Mishel Perevodchik I V Fedotov Red B I Lytkin M Mashinostroenie 1992 320 ISBN 5 217 00974 8 E Parr Programmiruemye kontrollery rukovodstvo dlya inzhenera M BINOM Laboratoriya znanij 2007 516 s ISBN 978 5 94774 340 1 Petrov I V Programmiruemye kontrollery Standartnye yazyki i priyomy prikladnogo proektirovaniya Pod red prof V P Dyakonova M SOLON Press 2004 256 c ISBN 5 98003 079 4PosilannyaPrikladi program movoyu ST 10 travnya 2016 u Wayback Machine