Programovatelné automaty II
-1-
1. Programování PLC Centrální jednotka Poskytuje programovatelnému automatu inteligenci. Realizuje soubor instrukcí a systémových služeb, zajišťuje i základní komunikační funkce s vlastními i vzdálenými moduly, s nadřízeným systémem a s programovacím přístrojem. Paměťový prostor, který poskytuje uživateli je obvykle rozdělen na části. Prvá je určena pro uložení uživatelského program (PLC programu), datových bloků a tabulek. Její obsah se zadává v edičním režimu a během vykonávání programu se obvykle nemění (u "TECOMAT" se může měnit jen obsah tabulek). Druhá část je operační (zápisník). Jsou v ní lokalizovány uživatelské registry, čítače a časovače, obrazy vstupů a výstupů, komunikační, časové a jiné systémové proměnné (systémové registry). Obsah operační části se dynamicky mění působením uživatelského a systémového programu. Centrální jednotky současných programovatelných automatů obsahují mikroprocesor, mikrořadič nebo specializovaný řadič, zaměřený na rychlé provádění instrukcí. Jeho programem (systémovým programem) jsou realizovány všechny funkce, které má uživatel k dispozici, tj. kompletní soubor instrukcí programovatelného automatu, jeho systémové služby, časové a komunikační funkce. Jen výjimečně a za omezujících podmínek zpřístupňují některé PLC uživatelům programování na úrovni instrukcí mikroprocesoru. Typické je použití instrukcí a příkazů jazyka programovatelného automatu, který je přizpůsoben převažujícím úlohám a způsobu myšlení typického uživatele a programátora PLC. Soubor instrukcí PLC Protože programovatelné automaty byly původně určeny k realizaci logických úloh a k náhradě pevné logiky, nechybějí v žádném PLC instrukce pro základní logické operace s bitovými operandy. Tj. sejmutí pravdivostní hodnoty adresovaného bitu, operace logického součtu a součinu, negace, výlučného součtu a jiných kombinačních logických funkcí, instrukce pro realizaci paměťových funkcí a klopných obvodů, pro zápis výsledku a mezivýsledku na adresované místo, ale i instrukce čítačů, časovačů, posuvných registrů, krokových řadičů a jiných funkčních bloků. Současné PLC nabízejí instrukční soubor podstatně bohatší. V souboru instrukcí vyspělých PLC obvykle nechybí ani instrukce pro aritmetiku a operace s čísly (někdy jen nejzákladnější, např. sčítání, odčítání a porovnávání,jindy kompletní knihovny pro výpočty s pevnou nebo plovoucí řádovou čárkou), logické instrukce s číselnými operandy (paralelní operace s operandem v délce byte, slova nebo delším) a přenosy dat. Obvyklé jsou instrukce pro organizaci programu (např. skoky v programu, volání podprogramů a návraty). Specializované instrukce Některé PLC poskytují i velmi výkonné instrukce pro komplexní operace, např. pro realizaci regulátorů a jejich automatické seřizování, pro fuzzy logiku a fuzzy regulaci, pro operace s daty a s datovými strukturami, pro realizaci ucelených funkčních bloků, pro ukládání dat do zásobníků a záznamníků, pro podporu tvorby kultivovaného operátorského rozhraní a pro podporu komunikací. Tyto specializované instrukce usnadňují programování (nabízejí již hotové ucelené funkce nebo jejich "prefabrikáty"), zvyšují však i výpočetní výkon PLC. Systémové služby Jako systémové služby označujeme prostředky, které centrální PLC poskytuje nad rámec instrukčního souboru. Obvykle sem řadíme soubor systémových registrů, které obsluhuje systémový program. Výkonnost programovatelného automatu se nejčastěji posuzuje podle doby vykonání instrukcí. Obvyklé hodnoty pro výkonné systémy jsou v řádu jednotek mikrosekund na instrukci, výjimečně méně (někdy se uvádějí doby na 1 000 instrukcí). U malých systémů bývají časy řádově jednotky až desítky mikrosekund na instrukci. Zde je třeba uvést, že toto hodnocení je mnohdy zavádějící. Uváděné časové údaje obvykle odpovídají jen nejzákladnějším logickým instrukcím. Doby ostatních instrukcí bývají mnohonásobně delší (často desetkrát i stokrát). Výpočetní výkon PLC zvyšují instrukce, které realizují komplexní funkční bloky (krokové řadiče, aritmetické knihovny pro práci v pevné nebo v pohyblivé řádové čárce, PID regulátor, fuzzy regulátor, generátor funkcí) nebo dovolují efektivní zpracování souborů dat a datových struktur. Významnou pomoc přestavují systémové služby. Odezvu systému na kritické události zkracuje i možnost přerušení a multiprogramování.
Programovatelné automaty II
-2-
Výkonnost stejného systému bude záviset na typu převažujících úloh a na prostředcích, které k tomu použijeme, na míře kvalifikovanosti programátora, jak výkonné instrukce a postupy použije a které ze systémových služeb využijeme. Proto se doporučuje výkonnost PLC posuzovat nikoliv podle katalogových údajů, ale podle výsledků řešení reálných příkladů a typových úloh, zpracovaných kvalifikovaným programátorem.
2. Vykonávání programu PLC Uživatelský program, cyklická aktivace Program PLC je posloupnost instrukcí a příkazů jazyka. Typickým režimem jeho aktivace je cyklické vykonávání v programové smyčce. Na rozdíl od jiných programovatelných systémů se programátor PLC nemusí starat o to, aby po konci programu vrátil jeho vykonávání opět na začátek - zajistí to již systémový program. Naopak každé dlouhodobé setrvání programu v programové smyčce je "fatální chybou" a systém jej hlásí jako "překročení doby cyklu". Cyklické vykonávání programu je schematicky znázorněno na obr. 1. Vždy po vykonání poslední instrukce uživatelského programu (např. E 0) je předáno řízení systémovému programu, který provede tzv. otočku cyklu. V ní nejprve aktualizuje hodnoty výstupů a vstupů: hodnoty uložené dosud v paměti jako obrazy výstupů (registry Y) přepíše do registrů výstupních periferních modulů a hodnoty ze vstupních modulů okopíruje do paměťových obrazů vstupů (registry X). Dále aktualizuje časové údaje pro časovače a systémové registry, ošetří komunikaci a provede ještě řadu režijních úkonů. Po otočce cyklu je opět předáno řízení prvé instrukci uživatelského programu (např. P 0) PLC program je vykonáván v cyklu. v jeho režijní části (v otočce cyklu) jsou nejprve na výstupy vyslány aktuálně vyčíslené hodnoty obrazů výstupů Y, pak jsou provedeny režijní operace systému, aktualizace systémových a časových proměnných, naplánována aktivace procesů pro další cyklus, ... apod.) a na závěr jsou sejmuty aktuální hodnoty , fyzických vstupů, které jsou pro celý následující cyklus konzervovány, jako obrazy vstupů X. Obr. 1. Obrazy vstupů a výstupů Pro program PLC je typické, že nepracuje s aktuálními hodnotami vstupů a výstupů, ale s jejich "paměťovými konzervami" - s obrazy vstupů a výstupů, uloženými v zápisníkové paměti (registry X a Y). Aktualizace jejich hodnot - předání obrazů výstupů k řízenému objektu a sejmutí aktuálních vstupních hodnot od řízeného objektu se provede pouze ve fázi otočky cyklu. Tím je zajištěna synchronizace vstupních a výstupních dat s během programu a je tak omezena možnost chyb způsobených nevhodným souběhem měnících se hodnot (hazardních stavů). Obdobně jsou po dobu cyklu zmrazeny i časové údaje a hodnoty většiny systémových proměnných (například zpráv předávaných sériovou komunikací). Multiprogramování, vícesmyčkový režim Některé systémy dovolují práci v určitém režimu multiprogramování nebo vícesmyčkové aktivace, případně práci v přerušovacím režimu. Na obr. 2 je příklad multiprogramové struktury PLC programu pro TECOMATy. Systém nabízí uživateli určitou "kostru", soubor procesů PO až P64, pro které jsou dána pevná pravidla aktivace. Proces PO se aktivuje vždy po otočce cyklu (úvodní proces), P64 naopak vždy před otočkou (závěrečný proces), procesy P1, P2, P3, P4 se v aktivaci cyklicky střídají (čtyřfázové procesy), P5 až P9 se aktivují v časových prioritách (každých 0,4 s; 3,2 s; 25,6 s; 3,4 min a 27,2 min). O aktivaci procesů P10 až P40 (uživatelské procesy) rozhoduje programátor tím, jak nastaví hodnoty aktivačních bitových proměnných v systémových registrech S25 až 529. Procesy P62 a P63 se aktivují jednorázově po zapnutí nebo po restartu systému (inicializace při teplém a studeném restartu). Procesy P41 až P44 jsou aktivovány jako odezva na přerušující událost (interval 10 ms, změna hodnoty na přerušujícím vstupu, při zjištění méně závažné chyby v programu, podle stavu čítače vnějších událostí). Je ponecháno na vůli programátora, jak dalece tuto strukturu aktivace procesů využije. Procesy, které nejsou vytvořeny, nebudou ani aktivovány. Pokud tedy všechny instrukce svého uživatelského programu zapíšeme do procesu PO mezi instrukce (závorky procesů) PO a E0, bude celý program aktivován v jediné nestrukturované programové smyčce. Nejsou-li vážné důvody pro složitější struktury, doporučujeme zůstat u tohoto nejjednoduššího způsobu aktivace.
Programovatelné automaty II
-3-
Obr2.: Schéma multiprogramové aktivace procesů
3. Programovací jazyky PLC K programování nabízejí PLC systémy specializované jazyky, původně navržené pro snadnou, názornou a účinnou realizaci logických funkcí. Jazyky systémů různých výrobců jsou podobné, nikoliv však stejné. Přenositelnost programů mezi PLC různých výrobců není možná, daří se to obvykle jen mezi systémy téhož výrobce. Mezinárodní norma IEC 1131-3 sjednocuje programovací jazyky pro PLC. Kodifikuje čtyři typy jazyků .
jazyk mnemokódů ("Instructions List", "IL", v německé terminologii "Anweisungslist", "AWL") je obdobou assembleru u počítačů, a je také strojově orientován. To znamená, že každé instrukci PLC systému odpovídá stejně pojmenovaný příkaz jazyka. Jazyky mnemokódů poskytují i obvyklý "assemblerský komfort", tj. aparát symbolického označení návěští pro cíle skoků a volání, symbolická jména pro číselné hodnoty, pro pojmenování vstupních, výstupních a vnitřních proměnných a jiných objektů programu (datových bloků a tabulek, struktur a
Programovatelné automaty II
-4-
jejich prvků), pro automatické přidělování paměti pro uživatelské registry a pro jiné datové objekty, pro jejich inicializaci (zadání počátečního obsahu), pro zadávání číselných hodnot v různých číselných soustavách. Tohoto typuje i jazyk xPRO.
jazyk kontaktních(reléových) schémat, ("Ladder Diagram", "LD", německy "Kontaktplan", "KOP" viz obr. 3.) je grafický. Program se základními logickými operacemi zobrazuje schéma ve formě obvyklé pro kreslení schémat při práci s reléovými a kontaktními prvky. Pouze symboly pro kontakty a cívky jsou zjednodušeny, aby mohly být vytvářeny semigraficky: spínací kontakty jako dvojice svislých čárek, rozpínací kontakt je navíc "přetržen" lomítkem, cívky jsou označovány dvojicí závorek. Funkční bloky (např. čítače, časovače) jsou kresleny jako obdélníkové značky. Instrukce, které nemají svou analogii v kontaktní symbolice (a těch bývá většina) se obvykle zobrazují jako dvojice závorek nebo obdélníková značka s vepsaným mnemokódem instrukce. Jazyk kontaktních schémat je výhodný při programování nejednodušších logických a v případech, kdy s ním pracuje Obr.: 3. personál, který nezná (a nechce znát) tradiční počítačové programování. Je Jazyk kontaktních nezastupitelný při požadavku rychlého servisu, obzvlášť, pokud ladicí (releových) schémat prostředky dovolují zvýraznit na schématu "vodivou cestu". Pak je nalezení závady na stroji (třeba vadného spínače) otázkou několika minut. Pokud v programu převažují složitější instrukce (třeba aritmetické instrukce nebo logické s vektorovými operandy, skoky a volání), pak je kontaktní schéma již násilné a postrádá svou názornost.
jazyk logických schémat (jazyk funkčních bloků, "Function Bla ck Diagram" německy "FUP") - obr. 4 je opět grafický. Základní logické operace popisuje obdélníkovými značkami. Výška značky Obr. 4.: jazyk je přizpůsobena počtu vstupů. Své značky mají i ucelené funkční logických schémat bloky, např. čítače, časovače, posuvné registry, paměťové členy, ale i aritmetické a paralelní logické instrukce. Vychází vstříc uživatelům zvyklým na kreslení logických schémat pro zařízení s integrovanými obvody. Obdobný, ale obecnější, jazyk se využívá při popisu a programování systémů, zpracovávajících analogové proměnné, při programování regulačních a měřicích úloh (například nový jazyk MERKUR pro regulátory TECOREG a výhledově i pro PLC TECOMAT).
jazyk strukturovaného textu je obdobou vyšších programovacích jazyků pro PC (např. Pascal nebo C). Umožňuje úsporný a názorný zápis algoritmů – obr.5. Nadstavbu nad popsanými jazyky tvoří grafický jazyk pro sekvenční programování (SFC, GRAFCET). Dovoluje stavový popis sekvenčních úloh v symbolice přechodového grafu konečných automatů a určité třídy Petriho sítí. K popisu struktury používá značky stavů, přechodů a větvení. Chování v jednotlivých stavech nebo definování podmínek přechodů lze obvykle popsat prostředky kteréhokoliv z dříve popsaných jazyků nebo dalším vnořeným sekvenčním grafem (podgrafem). Jazyk sekvenčního programování je velmi názorný a podporuje systémový přístup k programování. Programátor má Obr. 5.: Jazyk malý prostor k vytváření chaoticky neuspořádaných programů, je sekvenčního nucen zamyslet se nad podstatou problému, má možnost programování systematicky ji popsat a realizovat. Většina řízených technologií je svou podstatou sekvenční. Poměrně náročným sekvenčním problémem bývá i vyhodnocení posloupnosti tlačítek a zásahů obsluhy.
4. Programovací a vývojové prostředky K zadání a k ladění uživatelského programu slouží programovací přístroje. Tradičně byly řešeny jako specializované přístroje v kufříkovém nebo příručním provedení. V současné době se pro komfortní
Programovatelné automaty II
-5-
programování používají výhradně počítače standardu PC (stolní i přenosné) s potřebným programovým vybavením pro vývoj a ladění uživatelských programů (vývojovým systémem). Pouze pro malé systémy nebo pro skromnější podmínky v terénu se nabízejí příruční programovací přístroje ("kalkulačka", "hand held progiammer"). Programovací přístroje (vývojové systémy, vývojová prostředí) umožňují zápis programu, jeho opravy, překlad ze zdrojové formy do kódu PLC, jeho přenos do PLC a ladění programu s reálným PLC (on line), včetně monitorování proměnných programu a technologických proměnných, krokování a trasování programu, s možností zobrazovat a měnit stavy aktuálních proměnných. Některé vývojové systémy dovolují i přenos programu z PLC do programovacího přístroje a jeho zpětné přeložení. Bývá nabízena i možnost simulace PLC na počítači a ladění uživatelského programu na něm (ladění v režimu "off line"). Tato možnost je významná pro předběžné odladění programu a odstranění nejzávažnějších chyb bez rizika poškození technologie a s minimem ztrátových časů, dále pak ve fázi, kdy technologie ještě není připravena. Významnou funkcí je i možnost zpracování dokumentace programu, případně celého projektu. Programovací přístroje a vývojové systémy se kromě souboru funkcí liší i svou přívětivostí a logickou uceleností obsluhy, způsobem dialogu, ztrátovými časy a mírou stresů, kterými zatěžují programátora. Významnou vlastností je i přizpůsobení se jazyku uživatele (v našem případě míra ovládnutí češtiny).
5. Struktura paměti a registrů Řídící algoritmus programovatelného automatu (dále PLC - Programmable Logic Controller) je zapsán jako posloupnost instrukcí v paměti uživatelského programu. Centrální jednotka postupně čte z této paměti jednotlivé instrukce, provádí příslušné operace s daty v zápisníkové paměti a zásobníku, případně provádí přechody v posloupnosti instrukcí, je-li instrukce ze skupiny organizačních instrukcí. Jsou-li provedeny všechny instrukce požadovaného algoritmu, provádí centrální jednotka aktualizaci výstupních proměnných do výstupních periferních jednotek a aktualizuje stavy ze vstupních periferních jednotek do zápisníkové paměti. Tento děj se stále opakuje a nazýváme jej cyklem programu (obr.2, obr.6). Jednorázová aktualizace stavů vstupních proměnných během celého cyklu programu odstraňuje možnosti vzniku hazardních stavů při řešeni algoritmu řízení (během výpočtu nemůže dojít ke změně vstupních proměnných). READ X - přepis hodnot ze vstupních jednotek PLC do oblasti X v zápisníkové paměti WRITE Y - přepis hodnot vypočtených programem z oblasti Y do výstupních jednotek PLC režie - příprava centrální jednotky PLC k řešeni dalšího cyklu programu (komunikace po sériové lince probíhají během celého cyklu). Obr. 6: Cyklické řešení uživatelského programu
STRUKTURA ZÁPISNÍKOVÉ PAMĚTI Zápisníkem nebo též zápisníkovou pamětí rozumíme úsek paměťového prostoru PLC, který je přístupný jak pro čteni, tak i pro zápis uživatelských dat. Instrukce PLC umožňují přístup na libovolný bit, byte, resp. slovo zápisníku. Tato paměť je předem rozdělena do několika částí s vyhrazeným významem. Schematicky je uspořádání zápisníkové paměti zobrazeno na obr.7. Zápisníková paměť je rozdělena na tyto části: - obrazy vstupních signálů X - obrazy výstupních signálů Y - systémové registry S - uživatelské registry R
Obr. 7: Struktura zápisníkové paměti
Všeobecně je dodržována zásada, že přístup systémového programu k zápisníkové paměti se uskutečňuje výhradně ve fázi otáčky cyklu uživatelského programu. To se týká nejenom snímání fyzických vstupů do sekce X a nastavování hodnot ze sekce Y na fyzické výstupy, ale i změn hodnot systémových proměnných S. To znamená, že po dobu cyklu uživatelského programu jsou údaje zápisníku zmrazeny a aktualizují se až po nejbližší otočce cyklu. Tím je výrazně omezena možnost výskytu různých hazardních stavů v uživatelském programu v důsledku asynchronnosti okamžiků změn jednotlivých proměnných. V průběhu cyklu se mění pouze ty proměnné, které ovlivňuje uživatelský program (přímý zápis do
Programovatelné automaty II
-6-
zápisníku - WR, WRC, LET, SET, RES), nebo účinky některých funkcí (např. nastavení příznaků výsledků, aktualizace stavu čítačů, časovačů, posuvných registrů nebo stepperu, apod.). Upozornění: Je třeba si uvědomit, že okamžiky uživatelského přerušení bývají asynchronní vůči klidovému cyklu uživatelského programu a nesystematickým hospodařením nad proměnnými zápisníku si uživatel může vytvořit dostatek svých hazardních stavů. Je tedy třeba věnovat potřebnou péči přiřazení proměnných, vytvoření pravidel pro spolupráci mezi procesy klidového cyklu a mezi přerušujícími procesy. Při výpadku napájecího napěti je část obsahu zápisníku zálohována z náhradního zdroje (tzv. remanentní zóna v uživatelských registrech R). Při opětovném startu mohou být tyto zálohované hodnoty použity i pro další řízení záleží na způsobu rozběhu a na dalších okolnostech (neporušenost zápisníku, nezměněný obsah uživatelské kazety apod.). Při volbě konfigurace si může uživatel zvolit velikost remanentní zóny. OBRAZY VSTUPŮ X Před každým začátkem cyklu programu zajišťuje centrální jednotka aktualizaci této oblasti zápisníkové paměti ze vstupních periferních jednotek na základě deklarační tabulky zadané v uživatelském programu, která popisuje přiřazení mezi obrazy vstupů X a fyzickými adresami jednotlivých jednotek. OBRAZY VÝSTUPŮ Y Po každém ukončení cyklu programu zajišťuje centrální jednotka přesun výsledků z této oblasti zápisníkové paměti ze vstupních periferních jednotek na základě deklarační tabulky zadané v uživatelském programu, která popisuje přiřazení mezi obrazy vstupů X a fyzickými adresami jednotlivých jednotek. SYSTÉMOVÉ REGISTRY S Tato oblast zápisníkové paměti je vyhrazena pro specifické použití systémovým programem automatu a nedoporučuje se ji používat pro jiný účel. Některé bity a slova jsou pravidelně v otočce cyklu nastavovány systémovým programem a jsou vhodné pouze pro čtení. Některé bity naopak modifikují svým nastavením chování systémového programu. Například TECOMAT nastavuje po některých instrukcích příznaky v registrech SO a S1, v S2 jsou signalizovány stavy systému, v S3 je uložena doba trvání minulého cyklu a v S4 pořadové číslo cyklu. V registrech S5 až Sl2 je předáván systémový čas a datum (soubor údajů v "lidských"jednotkách: 0,01 s, 1 s, 1 min, 1 hod, den v týdnu a den v měsíci, měsíc, rok). Jednotlivé bity v registru S13 jsou souborem periodických signálů, využitelných jako časové jednotky (s periodou 100 ms, 500 ms, 1 s, 10 s, 1 min, 10 min, 1 hod, 1 den a se souměrnou střídou 1 : 1), v S20 a S2l jsou uloženy impulsy od náběžných a sestupných hran těchto proměnných. V registrovém páru S 14, 15 (slově SW 14) je nepřerušovaně aktivován systémový časovač s jednotkou 100 ms, a analogicky ve slovech SWl6 a SWl8 pracují časovače s jednotkami 1s a 10s. Další ze systémových registrů slouží pro ovládání komunikací, pro aktivaci uživatelských procesů, pro zobrazení kódu chyby a pro další údaje. Mezi systémové služby počítáme i systémovou podporu komunikací, obsluhu inteligentních modulů (systémových i periferních) realizaci a obsloužení čítačů a časovačů, multiprogramování a přerušení programu. UŽIVATELSKÉ REGISTRY R Paměťová oblast určená pro proměnné uživatelského programu, pro realizaci čítačů, časovačů, posuvných registrů, stepperů a dynamických tabulek. V zapínací sekvenci systémového programu po studeném restartu jsou všechny registry R vynulovány. Po teplém restartu je uchována remanentní část registrů R, ostatní jsou vynulovány. Je ponecháno zcela na uživateli, jak využije registry R, které využije pro své pracovní proměnné nebo tabulky a které vyhradí pro realizaci funkčních bloků. Systém neurčuje, kolik smí být použito čítačů, kolik časovačů apod. Jediným omezením je celkový počet registrů. O tom, zda objekt bude remanentní nebo neremanentní, rozhoduje též uživatel tím, do které oblasti objekt zařadí. Pokud uživatelský program používá časově omezené objekty, které se v čase vylučují, pak mohou být realizovány se stejnými registry R. Slovo vyhrazené čítači nebo posuvnému registru může být obsluhováno různými instrukcemi čítání a posuvů, aniž by došlo ke zhroucení (neplatí to pro časovače). Slovo R přiřazené některému objektu je volně přístupné pro ostatní instrukce, takže např. hodnotu čítače nebo časovače lze porovnávat s několika údaji, případně ji měnit.
Programovatelné automaty II
-7-
PŘÍMÉ VSTUPY A VÝSTUPY U Adresový prostor označený operandem U (unit - jednotka) není součástí zápisníkové paměti, ale je to přímý adresový prostor periferních jednotek. Operand U tak poskytuje alternativu k zónám X a Y v zápisníku, která umožňuje přímý styk s periferními jednotkami v daném okamžiku bez čekání na otočku cyklu. Operand U umožňuje pouze bytový a slovní přístup pomocí instrukcí LD a WR. Jeho využití je vhodné pro zabezpečení časově kritických reakcí. Nadbytečné využívání má však za následek zpomalení výkonu programu, protože přímý přístup k periferním jednotkám je časově náročnější než operace se zápisníkovou pamětí. Důležitá upozornění: Přímým zápisem/čtením do/z periferní jednotky nedojde k odpovídající změně hodnoty v obraze této jednotky v zápisníku v zóně Y/X! V případě přímého čtení dojde k opravě hodnoty v obraze během otočky cyklu a obvykle to není na závadu (je však třeba s tím počítat). V případě přímého zápisu je však nutné opravu v zápisníku zabezpečit uživatelským programem, jinak dojde v otočce cyklu k zápisu původní hodnoty ze zápisníku do jednotky. Pokud je nutné přímý zápis do jednotky používat, je lepší vypnout obsluhu výstupů jednotky v softwarové konfiguraci při překladu uživatelského programu v překladači (položka aktivace vstupů a výstupů) a obsluhovat výstupy výhradně přímými zápisy s operandem U. Je třeba si uvědomit, že práce s přímými vstupy a výstupy porušuje zásadu neměnnosti vstupních a výstupních údajů během cyklu a zvyšuje riziko hazardů. Použití operandů U by mělo být omezeno na případy, kdy je třeba zajistit okamžitou odezvu, např. při ošetření havarijních situací, v procesech obsluhy přerušení apod. DATA V UŽIVATELSKÉM PROGRAMU DATA D Data D mají význam konstant uživatelského programu. Jsou součástí uživatelského programu a jsou pro něj dostupná pouze pro čtení. Mohou se zadávat a měnit pouze v edičních režimech. Výhodně mohou být použity jako parametry, které modifikují uživatelský program. Pro určitou třídu řídících algoritmů může být například vytvořen a odladěn jediný uživatelský program, který je před konkrétním použitím přizpůsoben skutečným podmínkám zadáním odpovídajících parametrů v zóně D. Obdobně lze uživatelský program přizpůsobovat měnícím se požadavkům zadavatele, změnám technologie, měnícímu se sortimentu výrobků apod. Použiti dat D je výhodné i v případě, kdy různá místa programu používají stejnou číselnou logickou konstantu. Pokud ji pokaždé zadáme Jako bezprostřední operand, pak při potřebě její změny musíme vyhledat a opravit všechna místa v programu, kde se vyskytuje. Výhodnější je zadat tuto hodnotu jednou v datech D. Při jakékoliv změně stačí změnit pouze tuto jednu hodnotu a není třeba zasahovat do programu. V datech D mohou být uloženy i souvislé posloupnosti hodnot; například tabulky nebo vzory pro nastavení zápisníku a výstupů v klíčových situacích. TABULKY T Tabulky T jsou stejně jako data D součástí uživatelského programu a i jejich použití může být obdobné. Na rozdíl od dat D, která jsou dostupná většinou instrukcí pro čtení, jsou tabulky T dostupné pouze zvláštními instrukcemi, které se odvolávají na adresový prostor T (tabulkové instrukce, instrukce blokových přenosů). Data D mohou být nestrukturovaná nebo mohou mít libovolně složitou strukturu, lze přímo přečíst jejich libovolné místo. Naproti tomu mají tabulky T vždy předepsanou strukturu - je to vždy řada hodnot stejného formátu (bit, byte nebo slovo) s přídavným údajem o délce této řady. Každé položce (hodnotě z této řady) je přiřazeno pořadové číslo - index. Nejnižší položka má nulový index, index poslední položky nazýváme mezi (počet položek = mez + 1). Tabulky T tedy mohou být definovány bud' jako bitové, bytové nebo slovní (obr.7). S každou je uložena i její mez (jednotně měřená v počtu bytů). Bitové tabulky jsou z toho důvodu vždy doplněny nulami na celý byte. Nad tabulkami T lze provádět tyto operace: - výběr položky k zadanému indexu (LTB) - nalezení indexu k zadané hodnotě položky (FTB) - nalezení indexu k vybrané části položky (FTM) - nalezení indexu třídy - zařazení zadané hodnoty do jedné z tříd (skupin), které jsou určeny tabulkou mezi v uspořádané řadě hodnot (FfS)
Programovatelné automaty II
-8-
- okopírování obsahu tabulky do zápisníku (SRC, MOV) - okopírování zóny zápisníku do tabulky (SRC, MOV) - sekvenční čtení z tabulky (LMS) - sekvenční zápis do tabulky (WMS)
Obr. 8: Ukázka struktury tabulek
Pouze instrukce MOV a WMS dovolují zápis do tabulky, ostatní instrukce jen čtou. Aparát tabulkových instrukcí dovoluje realizovat jednoduchým způsobem i velmi složité funkce, přičemž řešení bývá úspornější a rychlejší oproti tradičnímu (někdy výrazně), vždy je však pružnější a přizpůsobivější. Program je názorný a přehledný. Velikost tabulek je omezena takto: - slovní tabulky mají max. 254 bytů, tj. 127 položek - bytové tabulky mají max. 255 bytů, tj. 255 položek - bitové tabulky mají max. 32 bytů, tj. 256 položek.
6. ZÁSOBNÍK VÝSLEDKŮ Při vykonávání uživatelského programu pracuje PLC se zásobníkem, který má 8 úrovní v šíři slova označených AO až A7 (akumulátor A, střádač výsledků). Jeho struktura je znázorněna na obr.7. Aktivní úroveň AO označovaná také jako vrchol zásobníku je využitá v naprosté většině instrukcí. Se zásobníkem pracují nejenom bitové operace, ale i bytové a slovní logické operace, aritmetické operace,
Obr. 7.: Schématické znázornění struktury zásobníku
Programovatelné automaty II
-9-
přenosové operace, předávají se v něm logické a číselné parametry složitějších instrukcí a podprogramů. Zásobník je cyklický a můžeme si jej představit jako bubnovou paměť podle obr.8. Těchto zásobníků máme k dispozici celkem 8. Aktivní je vždy jeden a můžeme mezi nimi přepínat. Tím jsou otevřeny velké možnosti v oblasti přenosu parametrů mezi funkcemi v uživatelském programu bez nutnosti časově náročného meziukládání parametrů do zápisníku..
6.1. STRUKTURA ZÁSOBNÍKU Vrchol A0 je aktivní vrstvou, která má význam střadače (akumulátoru A). Vrstvy A1, A2 až A7 obsahují postupně sled předchozích hodnot vrcholu zásobníku. Posun zásobníku vpřed způsobují instrukce LD, LDC a některé složitější instrukce. Při každém posunu zásobníku vpřed o jednu úroveň jsou hodnoty všech jeho úrovní AO až A6 přesunuty do úrovní s čísly o jedničku vyššími a vrchol zásobníku AO je obsazen nově ukládanou hodnotou dle schématického postupu: A0 < - nová data A1 < - původní obsah A0 A2 < - původní obsah A1 …….. A7<- původní obsah A6 Původní obsah A7 se nenávratně ztrácí (je přepsán novým obsahem AO). Posun zásobníku vzad provádí instrukce POP a bezoperandové instrukce aritmetických a logických operací. Zpětný posun probíhá dle schématického postupu: Po instrukci POP: AO < - původní obsah A1 A1 < - původní obsah A2 A2 < - původní obsah A3 ………… A7< - původní obsah A0 Po bezoperandové instrukci A0 < - výsledek operace mezi A0 a A1 A1 < - původní obsah A2 A2 < - původní obsah A3 ………. A7 < - původní obsah A0
Obr. 8.: Představa zásobníku jako bubnové paměti
Každá úroveň zásobníku má šíři 16 bitů (1 slovo nebo 2 byty). Při operaci se zásobníkem je účelné jednotlivé části symbolicky označit (obr.7). Dolní byte označujeme písmenem L (low) A0L, A1L, ... A7L Horní byte označujeme písmenem H (high) – A0H, A1H, ... A7H. Celé slovo pak můžeme označit jako dvojici: AO = (A0H, A0L) A1 = (A1H, A1L) …… A7 .=. (A7H, A7L) Podobně jako u zápisníku budeme jednotlivé bity úrovně číslovat za tečkou dle schématu např. pro A0: Pokud instrukce načítá bitový operand (např. LD X0.1), pak hodnota bitové proměnné (0 nebo 1 ) je na všech šestnácti bitech vrcholu A0 (A0 = 0 nebo A0 = 65 535). Pokud je načítán bytový operand, pak hodnota tohoto bytu je uložena na dolní části vrcholu A0L, horní část je vynulována A0H = 0. Pokud je načítán slovní operand, pák je tímto slovem zaplněn právě celý vrchol A0. Naopak pokud ukládáme (např. WR) data v šíři slova, pak je na cílovou adresu uložen celý obsah vrcholu A0. Při ukládání dat v šíři.byte je uložen pouze dolní byte vrcholu A0L. Horní byte A0H je ignorován. Pokud ukládáme data v šíři bitu, pak v případě nulové hodnoty A0 ukládáme nulovou hodnotu bitu, v případě nenulové hodnoty A0 ukládáme jedničku. Ukládáme tedy podélný logický součet (OR) všech šestnácti bitů vrcholu A0.
Programovatelné automaty II
- 10 -
Pokud uživatel určitou posloupnost bitových instrukcí provede s bytovým operandem, pak se předepsané operace provedou naráz se všemi stejnolehlými bity, takže počet vykonaných operací se zosminásobí (např. osmice členů AND, OR, XOR, osmice klopných obvodů R-S, D, impulsních obvodů apod.). Kombinování bitových, bytových a slovních operací navzájem, jejich kombinováním s instrukcí STK, FLG a podmíněnými instrukcemi a kombinováním aritmetických operací s logickými, získává uživatel velmi bohatý a výkonný aparát.
6.2. PŘEPÍNÁNÍ ZÁSOBNÍKŮ K dispozici máme 8 zásobníků značených A, B, C, D, E, F, G, H, z nichž každý má takovou strukturu, jak byla popsaná pro zásobník A. Aktivní je vždy jeden zásobník, ostatní jsou uchovány v tom stavu, v jakém se nacházely při jejich opuštění uživatelským programem, a nemá na ně vliv žádný stav uživatelského programu. Například při otevření nového uživatelského procesu je nulován pouze aktivní zásobník. Po zapnutí nebo restartu PLC jsou všechny zásobníky vynulovány a aktivní je vždy zásobník A. Po otočce cyklu je vždy vynulován zásobník A a je nastaven jako aktivní. Kdykoliv můžeme zásobníky přepnout, tzn. že dosud aktivní zásobník bude uživatelským programem opuštěn a nadále bude program pracovat s nově zvoleným zásobníkem. Přitom se zálohuje i stav příznakových registrů S0 a S1.