Příprava aplikačního programu pro zařízení VVK by měla být efektivní nejen proto, abychom minimalizovali čas na ni potřebný. Jde i o to, maximálně využít možností hardwarových platforem, ale na druhou stranu nechat si určitou rezervu pro případné rozšiřování systému. Zdroje v PLC nejsou neomezené a u některých platforem je musíme alokovat s rozmyslem. V následujícím textu najdete několik tipů, jak se k této úloze postavit.
Již při zakládání projektu a jeho rozvrhování si musíme uvědomit rozdíl mezi projektem (Project) a sestavou (Solution). Projektem se rozumí soubor programů, funkcí a funkčních bloků. Asi nejdůležitější je uvědomit si, že každý projekt má své globální proměnné (které jdou mapovat - připojovat - na hardwarové vstupy a výstupy PLC). Projekt je vlastně něco jako "kontejner", do něhož přiřazujeme vlastní programy i odkazy (reference) na knihovny atd. Sestava je pak něco, co zahrnuje:
Je to především kvůli tomu, že jeden program může běžet na více PLC. Jak je to možné a proč bychom to měli chtít? Za normálních okolností vystačíme s tradiční představou, že v sestavě je jedno nebo více PLC a v každém z nich běží jiný program (nebo více programů).
Všechny programy mohou být založeny v jediném projektu. V nastavení PLC v definici tasků se pak pro každé PLC definuje, které programy dané PLC zpracovává. Představme si nyní, že nějaký program popisuje řízení určité technologie, která je obsažena v několika různých PLC - například v budově je více stejných VZT jednotek nebo ekvitermních větví. Může být výhodné spravovat program pro řízení VZT jednotky nebo ekvitermy pouze na jednom místě (v nějakém projektu) a v jednotlivých PLC ho "volat", samozřejmě vždy s jinými přiřazenými fyzickými vstupy a výstupy. Vstupy a výstupy programu jsou přiřazeny k příslušným fyzickým vstupům a výstupům v I/O modulech každého PLC. Když v programu upravíme nějakou funkci, stačí nahrát sestavu do regulátorů a změny se projeví ve všech PLC, do nichž je program přiřazen.
Rozdělení programů do několika projektů (v rámci jedné sestavy) má smysl tehdy, chceme-li některé programy spravovat pohromadě. Je například možné založit zvlášť projekt pro klimatizaci a zvlášť projekt pro řízení osvětlení, vždy s příslušnými knihovnami a programy, které využívají bloky a funkce z těchto knihoven. Celý projekt osvětlení pak můžeme například použít v jiné sestavě, samostatně zálohovat, poslat mailem atd. Další případ nastane v situaci, kdy v sestavě je několik PLC, které nemají žádné společné programy. Každé PLC by potom mělo mít svůj samostatný projekt, neboť to dosti zásadním způsobem zpřehlední strukturu sestavy. Je to výhodnější pro správu jednotlivých programů - zrychlí se následné vyčítání hodnot proměnných z PLC do IDE a místo jednoho velkého definičního souboru s proměnnými vznikne několik menších souborů, pro každé PLC samostatný.
Je to vhodné proto, že PLC se spravují a konfigurují společně. Při změně v programech lze všechna PLC přehrát najednou jediným stiskem tlačítka. Dále je možné posílat hodnoty z jednoho PLC do jiného pomocí SSCP komunikace mezi podstanicemi. (V dalších verzích Domat IDE bude možné komunikovat i s PLC z jiné sestavy, stejně jak je tomu u SoftPLC IDE.) Maximální počet PLC v sestavě je dán tím, jak jsou rozsáhlé projekty v PLC. Doporučený počet s dostatečnou rezervou je 5 PLC. V jedné sestavě obvykle zakládáme PLC umístěná v jedné budově nebo technologickém celku, kde spolu mají vzájemné funkční vazby.
Pokud přecházíme ze SoftPLC IDE na Domat IDE, zjistíme, že Domat IDE obsahuje několik rozdílů. Ty nejvýznamnější jsou:
Tato dlouho poptávaná funkce na jednu stranu umožňuje výrazné zpřehlednění softwaru, protože algoritmy lze dobře segmentovat a opakující se kusy kódu použít v podobě instancí zákaznických bloků. Pokud se ale vnořování přežene, jednak se čitelnost programu naopak sníží, jednak se neúměrně zvýší zatížení PLC. Doporučujeme proto s ohledem na méně výkonné platformy (mark100, mark150,...) používat maximálně dvě úrovně vnořování, tedy složený blok se může skládat z dalších složených bloků, ale tyto vnitřní bloky už by měly být složeny jen ze základních bloků z knihoven.
Strukturovaný text přináší na rozdíl od funkčních bloků elegantní řešení cyklů, podmínek a zápisů do proměnných z více procesů. Na druhou stranu je program psaný v ST méně přehledný a tedy obtížněji udržovatelný – pokud není důkladně komentován, ani sám autor se v něm po nějaké době nevyzná. V typickém programu pro řízení technologických zařízení budov je doporučovaným postupem používat pro přehlednost funkční bloky, pokud možno standardní, které ale mohou být doplněny „zákaznickými“ funkčními bloky, vytvořenými na míru – buď z jiných funkčních bloků, nebo právě pomocí strukturovaného textu.
Jak již bylo popsáno výše, v jedné sestavě (Solution) můžeme definovat více PLC. Výhodou je mj. to, že PLC mohou sdílet společné programy: při úpravě programu se změna po nahrání projeví ve všech PLC, které program obsahují. Nahrávání projektů do všech PLC je možné spustit najednou. To pomáhá udržet celý systém konzistentní i při úpravách v různých PLC, která mají vzájemné komunikační vazby.
V SoftPLC IDE, především u platforem založených na Windows (IPCT.1) a Linuxu (IPLC510), uživatelé oceňují několik desítek komunikačních driverů pro nejrůznější protokoly, používané v řízení budov, včetně proprietárních protokolů pro cizí nebo starší řídicí systémy. Domat naproti tomu nyní obsahuje pouze Modbus, M-Bus, BACnet, SoftPLC Link a protokol pro odečet elektroměrů podle IEC62056-21. Je to proto, že Domat runtime musí fungovat i na malých platformách s omezenou kapacitou paměti. Integrace cizích systémů lze realizovat přes SoftPLC (IPLC510) ve funkci převodníku s následným čtením do prostředí Domat pomocí driveru SoftPLC Link. Na druhou stranu Domat IDE umožňuje psát vlastní drivery v jazyce ST - viz dále.
Programy nejsou spouštěny neměnným způsobem jeden za druhým, ale jsou přiřazeny do tzv. tasků. Task, neboli skupina programů spouštěných najednou, obsahuje jeden nebo více programů a je spouštěn periodicky, na základě změny stavu proměnné, nebo je „volně běžící“ – provede se, když PLC má čas. Je tak možné méně důležité úlohy (např. odečet měřičů, statistické funkce) provádět méně často nebo s nižší prioritou, aby se optimalizoval výkon PLC.
Drivery pro jednodušší komunikační protokoly je možné psát i zákaznicky, jako funkce v jazyce ST. Tato možnost je otevřená pro zkušenější programátory, je nutné počítat s tím, že odlaďování může zabrat více času, než se původně plánovalo. Někdy je nutná podpora ze strany dodavatele cizího zařízení. Vývoj lze v některých případech i objednat u firmy Domat Control System – záleží na momentálních kapacitách vývojového oddělení. ST neobsahuje funkce pro parsování textových řetězců, takže protokoly založené na XML dotazech nejsou dobře zpracovatelné. Naopak binární nebo znakové přenosy dat s pevnou strukturou telegramu by měly jít implementovat poměrně snadno. Obraťte se na oddělení technické podpory s popisem protokolu, který plánujete zaintegrovat.
Při rozhodování obecně platí, že program v jazyce FUPLA je přehlednější, ale náročnější na výpočetní výkon. Programování je jednodušší a názornější, řada procedur se děje automaticky na pozadí. Naproti tomu nelze ovlivňovat pořadí vykonávání bloků (při kompilaci IDE vytvoří program, kde je určeno pořadí bloků. Je zaručeno, že při zpracování funkce nebo funkčního bloku jsou vypočteny všechny příslušné vstupy. Není ale zaručeno nějaké konkrétní pořadí bloků). Vždy se vykonává celý program - v jazyce FUPLA se používají bloky, které mohou být poměrně komplikované, a využívá se z nich jen malá část funkce. Naproti tomu v strukturovaném textu by si uživatel pro stejnou funkci netvořil novou instanci FB, ale napsal jednoduchý konstrukt v ST. Strukturovaný text poskytuje maximální kontrolu nad programem, dobře řeší cykly a podmínky, práci s poli, vektory, strukturami. Umožňuje důkladnější debugging. Na druhou stranu je ST méně přehledný a složitější na používání, není to „klikací“ software, byť obsahuje IntelliSense – automatické návrhy na doplňování klíčových slov. Autor programu si musí hlídat veškeré deklarace, jmenné prostory atd.