Strukturovaný text - Structured text
Strukturovaný text, zkráceně jako SVATÝ nebo STX, je jedním z pěti jazyků podporovaných IEC 61131-3 standard, určený pro programovatelné logické automaty (PLC).[1][2] Je to jazyk na vysoké úrovni strukturovaný blok a syntakticky se podobá Pascal, na kterém je založen.[3] Sdílet všechny jazyky Společné prvky podle normy IEC61131. Proměnné a volání funkcí jsou definovány společnými prvky, takže ve stejném programu lze použít různé jazyky v rámci normy IEC 61131-3.
Jsou podporovány složité příkazy a vnořené pokyny:
- Iterační smyčky (OPAKOVAT-DOKUD; KDYŽ DO)
- Podmíněné provedení (IF-THEN-ELSE; CASE)[3]
- Funkce (SQRT (), SIN ())
Ukázkový program
(* jednoduchý stavový stroj *)TxtState := STÁTY[StateMachine];PŘÍPAD StateMachine Z 1: Uzavírací ventil(); StateMachine := 2; 2: Otevírací ventil();JINÝ BadCase();END_CASE;
Na rozdíl od některých jiných programovacích jazyků neexistuje propadnout pro příkaz CASE: je zadána první podmínka shody a po spuštění jejích příkazů je blok CASE ponechán bez kontroly dalších podmínek.
Další příklady programování ST
// Konfigurace PLCKONFIGURACE DefaultCfg VAR_GLOBAL b_Start_Stop : BOOL; // Globální proměnná, která představuje logickou hodnotu. b_ON_OFF : BOOL; // Globální proměnná, která představuje logickou hodnotu. Začátek Konec NA %IX0.0:BOOL; // Digitální vstup PLC (adresa 0,0) ZAPNUTO VYPNUTO NA %QX0.0:BOOL; // Digitální výstup z PLC (adresa 0,0). (Cívka) END_VAR // Naplánujte spuštění hlavního programu každých 20 ms ÚKOL Klíště(INTERVAL := t#20slečna); PROGRAM Hlavní S Klíště : Monitor_Start_Stop;END_CONFIGURATIONPROGRAM Monitor_Start_Stop // Aktuální program VAR_EXTERNAL Začátek Konec : BOOL; ZAPNUTO VYPNUTO : BOOL; END_VAR VAR // Dočasné proměnné pro logické zpracování ONS_Trig : BOOL; Rising_ONS : BOOL; END_VAR // Začátek logiky // Chyťte Rising Edge jednou ranou vstupu Start_Stop ONS_Trig := Začátek Konec A NE Rising_ONS; // Hlavní logika pro Run_Contact - zapnout / vypnout --- ZAPNUTO VYPNUTO := (ONS_Trig A NE ZAPNUTO VYPNUTO) NEBO (ZAPNUTO VYPNUTO A NE ONS_Trig); // Rising One Shot logic Rising_ONS := Začátek Konec;END_PROGRAM
Příklad funkčního bloku
//=======================================================================// Counter Function Block Timed Counter: Inkrementální počet časovaných intervalů//=======================================================================FUNCTION_BLOCK FB_Timed_Counter VAR_INPUT Vykonat : BOOL := NEPRAVDIVÉ; // Spouštěcí signál pro zahájení časovaného počítání Time_Increment : NEMOVITÝ := 1.25; // Zadejte čas cyklu (sekundy) mezi počty Count_Cycles : INT := 20; // Počet požadovaných cyklů počítání END_VAR VAR_OUTPUT Timer_Done_Bit : BOOL := NEPRAVDIVÉ; // Jeden snímek bit označující, že je časovač dokončen Count_Complete : BOOL := NEPRAVDIVÉ; // Výstupní bit označující počet je dokončen Current_Count : INT := 0; // Kumulativní hodnota čítače END_VAR VAR CycleTimer : TÓN; // Časovač FB z knihovny příkazů CycleCounter : ČVUT; // Počítadlo FB z knihovny příkazů Předvolba časovače : ČAS; // Převedený Time_Increment v sekundách na MS END_VAR // Začátek programování funkčních bloků Předvolba časovače := REAL_TO_TIME(v := Time_Increment) * 1000; CycleTimer( v := Vykonat A NE CycleTimer.Q, pt := Předvolba časovače); Timer_Done_Bit := CycleTimer.Q; CycleCounter( cu := CycleTimer.Q, r := NE Vykonat, pv := Count_Cycles); Current_Count := CycleCounter.životopis; Count_Complete := CycleCounter.q; END_FUNCTION_BLOCK
Reference
- ^ Bacidore, Mike (16. května 2018). „Mám omezit programování na logiku žebříku nebo použít všechny standardy v rámci IEC 61131?“. Návrh ovládání.
- ^ Stevic, Tom (5. května 2017). „Velmi krátká historie programovacích platforem PLC“. Návrh ovládání.
- ^ A b Roos, Nieke. "Programování PLC pomocí strukturovaného textu". Pennsylvania State University. Katedra počítačových věd, University of Nijmegen.