Jak psát efektivně software v Merbon IDE – 2. část

Velikost programu a metodika měření

U méně výkonných platforem je klíčovou otázkou, zda se aplikace „vejde“ do PLC. Systém Merbon je velmi flexibilní, umožňuje mnoho kombinací funkcí v PLC a nemá nastaveny „ostré limity“, které by způsobily, že nebude možné plně využít zdroje platforem (zejména paměť). Nároky na paměť běžícího runtimu bohužel nelze jednoduchým algoritmem ze zdrojového textu určit. Jsme schopni stanovit, kolik paměti zabere zkompilovaný program v PLC, tj. zda vůbec půjde nahrát do paměti. Není ale možné stoprocentně odhadnout, kolik paměti RAM bude kompilát vyžadovat po spuštění: každý definovaný komunikační kanál zabere část paměti a různé kombinace kanálů a bloků zabírají u některých platforem různě velké sektory paměti. Přesný stav využití zdrojů je vidět ve statistikách PLC v záložce System status, viz dále.

Na druhou stranu jsme schopni určit, kolik místa zbývá v NVRAM paměti pro proměnné RETAIN (uchovávají se i po výpadku napájení). (Hodnoty zůstanou po výpadku napájení uloženy i v klasické paměti Flash, jen je třeba počítat s tříhodinovým intervalem zápisu, který prodlužuje životnost paměti, nebo ukládání spouštět manuálně.)

Výkonnostní třídy PLC

PLC, která lze programovat pomocí programovacího prostředí Merbon IDE, lze rozdělit do tří výkonnostních kategorií. Kategorie se liší jak výkonem a pamětí pro SW a pro web, tak také počtem klientů, které jsou schopny obsloužit, a rychlostí reakcí například na webovém serveru.

1. Základní PLC

Mezi tato základní PLC patři podstanice mark100, mark150, mark150/485, mark120, IMIO100 a ICIO200.

Typický aplikační program pro nejslabší platformy obsahuje funkce pro řízení VVK pro cca. 50 fyzických datových bodů. Nejvíce místa v paměti zabírají časové programy, zejména ty s výjimkami. Proto doporučujeme jejich počet omezit na 2-3 a zejména používat typy schedulerů …Basic, které mají pouze týdenní tabulku s max. 42 změnami a neobsahují výjimkové programy. Pokud by podstanice sloužila pouze pro sběr dat a jejich následné odeslání do jiného systému, hranice počtu datových bodů se zásadním způsobem posouvá. V tomto režimu fungování např. PLC mark100 zvládne zkomunikovat cca. 150 fyzických datových bodů.

PLC z této kategorie dokáží obsloužit maximálně 5 klientů na kanálu SSCP (jde např. o komunikaci mezi PLC navzájem, o vizualizaci – SCADA, OPC server, případně další programy jako Merbon Menu Reader, tedy o „serverové“ kanály). Vždy je ale potřebovat nechat si jeden kanál rezervu pro komunikaci se samotným Merbon IDE. Reálný limit je tedy na hodnotě 4 klientů na kanálu SSCP.

Kapacita paměti pro webový server je cca. 1,1 MB – toto je nutné respektovat zvláště při přípravě obrázků – volte úsporné formáty, jako .png!

2. Základní PLC se zvýšenou kapacitou RAM

Mezi tato PLC patří podstanice mark125, IMIO105 a ICIO205.

U podstanic se zvýšenou kapacitou RAM (IMIO105, ICIO205, mark125) se limit počtu datových bodů posouvá cca. na trojnásobek, tedy 150 pro regulaci a 400-450 pro sběr dat.

PLC z této kategorie dokáží také obsloužit maximálně 5 klientů na kanálu SSCP. Kapacita paměti pro webový server je stejná jako u předchozí kategorie, tedy cca. 1,1 MB.

3. PLC nejvýkonnější třídy

Mezi tyto podstanice se řadí mark220, mark320 a markMX. Zde počet časových programů již není kritický. Musíme spíše dbát na to, aby bloky nebyly vnořovány ve více než cca. 3 úrovních – viz dále. Limit počtu datových bodů je tu opět cca. trojnásobný oproti základním PLC se zvýšenou kapacitou RAM a pohybuje se tedy na cca. 450 fyzických datových bodech. PLC z této kategorie mají také větší kapacitu paměti pro proměnné typu “retain”.

Podstanice z tého kategorie dokáží naráz komunikovat až s 20 klienty na kanálu SSCP, což je hodnota, kterou lze v praxi překročit jen velmi obtížně.

Kapacita paměti pro webový server je minimálně 8,3 MB.

Zatížení PLC, neboli počet fyzických datových bodů, které PLC zvládne ovládat, a rychlost odezvy celého systému, je ale závislá především na složitosti, komplexnosti a způsobu tvorby regulačního softwaru. Omezení počtem fyzických datových bodů je tedy spíše orientační, vždy záleží na způsobu práce konkrétního autora programu.

Ukazatele míry zatížení PLC

Při tvorbě softwaru je možné se orientovat jak podle počtu fyzických datových bodů, tak podle informací, které jsou v Merbon IDE viditelné po každé kompilaci sestavy. V okně “Výstup” se po kompilaci vypíšou informace o zaplnění paměti PLC. Hodnoty zaplnění paměti by tedy měly být pod hranicí 100%, ideálně by neměly přesáhnout hodnotu 90%.

Dalším ukazatelem, který lze použít k určení míry zatížení PLC, je délka jednoho výpočetního cyklu. Pokud je již sestava na podstanici nahrána a je spuštěno ladění, délku cyklu nalezneme v okně “Stav systému”. Maximální délka jednoho cyklu by se měla bez ohledu na platformu pohybovat ideálně pod hranicí 0,5 s, v případech větších projektů pak pod hranicí 0,7 s. Delší trvání jednoho cyklu zapříčiní například pomalejší odezvy systému pro vnější klienty (webserver, Merbon Menu Reader, terminály HT102/HT200, komunikace s Merbon IDE atd.), systém bude hůře reagovat na krátkodobé změny na vstupech a v extrémních případech může nepřiměřeně dlouhý cyklus snižovat stabilitu běhu celého systému.

Zákaznické bloky a vnořování

Zákaznické bloky jsou skvělým nástrojem pro zefektivnění práce programátora. Jsou ideální pro standardizaci softwaru napříč firmou, dají se napsat univerzální varianty pro použití na většině projektů. Použití vysoce komplexních funkčních bloků (velké desítky až stovky bloků uvnitř) a vícenásobné vnoření bloků ale zvyšuje zátěž PLC. Pro nejslabší platformy (ICIO, IMIO, mark100, 120, 150) doporučujeme maximálně dvojnásobné vnoření.

Uživatelské FB by neměly obsahovat schémata celé technologie, obecně vzato měly by obsahovat spíše jednodušší věci: ideální blok je např. řízení čerpadla, kotle, směšovací větve atd., ne však blok “Kotelna”, “Vzduchotechnika”, nebo v extrémním případě např “budova 1”, kdy by byly v sestavě čtyři totožné budovy a každý FB poté obsahoval 80 vstupů a 80 výstupů a uvnitř ukrýval kompletní regulaci.

Ideální je použít kompromis mezi FB a programy – rozdělit projekt do více programů, které obsahují jednodušší FB. Komplexní funkční bloky sice ulehčí práci tvůrci SW, ale přitíží PLC regulátoru.

Nejvýkonnější typy PLC lze zatížit více, pokud je však potřeba například rychlá reakce na sběrnicích nebo celkově rychlá odezva, je potřeba přizpůsobit styl programování i zde. U základních PLC je vždy potřeba pamatovat, že se jedná o slabší platformu, komplexnost FB tomu tedy musí být přizpůsobena.

Tasky a jak s jejich pomocí optimalizovat výkon PLC

U periodických tasků nemívá smysl volat task častěji, než je perioda freewheeling tasku a než je PLC schopno občerstvovat vstupy a výstupy na sběrnici – častější volání u běžných algoritmů stejně nezrychlí reakci a zbytečně zatěžuje procesor, který obsluhuje ještě další procesy, jako je např. webový server. Výhodnější je ale použít volně běžící task, při němž si PLC plánuje optimální využití samo – task je spouštěn, „když má PLC čas“. Je tak zaručena nejkratší možná perioda zpracování při dostatečné rezervě pro ostatní procesy (web, komunikace…). Viz také výše.

V PLC vždy musí být definovaný minimálně jeden task jakéhokoli typu. Dalších tasků poté může být více, ale je potřeba vědět, že nemá smysl nastavovat u periodických tasků periodu kratší, než byla původní změřená doba cyklu. Task se tak rychle stejně spouštět nebude. Periodický task tedy má smysl pro algoritmy, které se mají pouštět pouze jednou za určitý (delší) čas. Neslouží pro věci, které mají být spouštěny častěji. K tomu slouží typ “freewheeling”, který je spouštěn, co nejrychleji to jde. (Je ovšem možné nastavit pauzu, která se provede vždy po ukončení jednoho cyklu.)

Obecně se u většiny aplikací doporučuje používat pouze jeden task. Velmi lehce bychom se totiž mohli dostat do situace, kdy se pro střídání netriviálních výpočetních tasků nedostane na další úlohy, jako je komunikace, webový server atd. Druhý a další task by měly být s co nejkratší dobou výpočtu.

U Jednoduchého módu je definován jen jeden task, a to volně běžící (freewheeling), a všechny programy jsou spouštěny v něm. Funkce tak odpovídá konceptu SoftPLC IDE.