====== Structured Text ====== **Structured Text (ST)** je vyšší programovací jazyk podobný **PASCALu**, navržený pro implementaci složitých řídicích algoritmů, matematických výpočtů a stavových automatů v rámci řídicí jednotky. Je preferovanou volbou pro softwarové vývojáře, protože využívá známé programátorské konstrukce, jako jsou podmíněné příkazy, cykly a explicitní přiřazování proměnných. ST umožňuje vyjádřit složité funkce pomocí několika málo řádků kódu, což je ideální pro rozsáhlé projekty. Zároveň je to hlavní jazyk používaný pro tvorbu **vlastních funkčních bloků**. {{ en:mervis-ide:40-st:st.png?600&direct |Ukázka editoru Structured Text }} === Slovníček: Klíčové pojmy ST === * **Přiřazovací operátor**: Operátor používaný k **přiřazení** výsledku výrazu nebo hodnoty konkrétní proměnné (např. `Proměnná := Hodnota;`). * **Řídicí struktury**: Klíčová slova jako **`IF-THEN-ELSE`**, **`CASE`**, **`FOR`** a **`WHILE`**, která určují nelineární tok vykonávání programu. * **Výraz (Expression)**: Kombinace proměnných, konstant a operátorů, kterou řídicí jednotka vyhodnotí na **jedinou výslednou hodnotu**. * **Deklarace proměnné**: Povinný proces, při kterém se definuje **název proměnné**, její **datový typ** (např. BOOL, INT, REAL) a její rozsah použití (scope), předtím než je použita. * **Program Organization Unit (POU)**: Běžný pojem pro modulární, znovupoužitelný blok kódu, kterým může být buď **funkce**, nebo **funkční blok**. === Ukázkový kód: Řídicí struktury === Následující příklady ukazují, jak ST používá řídicí struktury pro logiku a výpočty. === Podmíněná logika (IF...THEN) === Tato konstrukce slouží k provedení bloku kódu pouze tehdy, pokud je daná Booleovská podmínka **PRAVDA**. IF Teplota > 100.0 THEN Stav_Topení := TRUE; Kontrolka_Alarmu := TRUE; END_IF; === Výběrová logika (CASE) === Příkaz `CASE` provede konkrétní blok kódu na základě hodnoty celočíselného výrazu. CASE Vstupní_Režim OF 1: // Režim 1: Manuální Rychlost_Motoru := 50; 2: // Režim 2: Automatický Rychlost_Motoru := Automatický_Nastavený_Bod; ELSE // Výchozí pro jakoukoli jinou hodnotu Rychlost_Motoru := 0; END_CASE; === Cyklická smyčka (FOR) === Cyklus `FOR` opakuje blok kódu pevně stanovený početkrát pomocí počítací proměnné. FOR i := 1 TO 10 DO Výsledné_Pole[i] := Výsledné_Pole[i] * 2; END_FOR;