Dokončení HMI pro automatizaci bazénu
Toto je návod pro zastaralou verzi systému REX. Pro seznámení s aktuální verzí postupujte podle příruček "Začínáme se systémem REXYGEN" uvedených níže:
Co je to řídicí systém REX?
Chci vědět více!
Tento článek je psán jako pokračování k úvodnímu článku o rozšíření RexHMI pro Inkscape. Začneme přesně tam, kde jsme naposledy skončili. Pokud jste tedy předchozí článek propásli, doporučujeme se k němu vrátit.
Na konci tohoto dílu budete schopni generovat grafické HMI přístupné z jakéhokoliv zařízení ve vaší domácí síti (chytrý telefon, tablet, notebook).
Rozšíření RexHMI pro Inkscape
Rozšíření RexHMI pro Inkscape je odpovědí na otázku, 'Mohu vyvíjet profesionální HMI bez nutnosti ručního psaní kódu?' Ano, můžete!
Díky RexHMI pro Inkscape můžete generovat plně funkční HMI založené na webových technologiích pro algoritmy řídicího systému REX. Předchozí článek představil různé typy animací v kresbách v programu Inkscape. Tento článek se zaměří na vkládání grafických elementů z knihovny RexHMI do Vašeho uživatelského rozhraní.
Než začneme
Před tím, než budeme pokračovat, ujistěte se, že:
- Máte na Vašem PC nainstalovaný Inkscape s rozšířením RexHMI.
- Na Vašem Raspberry Pi běží RexCore, Lighttpd a RexWSTcp.
ps -A | grep RexCore
ps -A | grep lighttpd
ps -A | grep RexWSTcp - Na Vašem Raspberry Pi běží algoritmus automatizace bazénu.
- Pokud potřebujete pomoci s jakýmkoli z předchozích předpokladů, koukněte prosím na předchozí článek o rozšíření RexHMI pro Inkscape.
Tvorba HMI s využitím prvků z knihovny RexHMI
Spusťte Inkscape s rozšířením RexHMI a otevřete soubor 02_pool_daynight.svg z adresáře HMI_sourceSVG, který je součástí ukázkového projektu. Tato kresba je konečným výsledkem předchozího článku a my ji nyní použijeme jako výchozí bod pro tento článek.
Do HMI přidáme filtrační pumpu a prvky pro její ovládání. K tomu se nám výborně hodí nevyužité místo v pravém dolním rohu kresby. Nejdříve si ale musíme připravit několik dalších signálů z řídicího algoritmu, které budeme potřebovat. Označte prvek HMI Config a vyberte v horním menu Edit Element nebo stiskněte Ctrl+E. V objektu HMI Config jsou uloženy veškeré informace o Vašem HMI projektu. Vždy, když budete potřebovat změnit něco v nastavení projektu, označte objekt HMI Config a vyberte nástroj Edit Element. Tento objekt je viditelný pouze v Inkscape. Při exportu je z HMI odstraněn.
Přepněte se do panelu Options a do řádku ws_ip zadejte IP adresu Vašeho Raspberry Pi s příponou /rex. Tím dovolíte Inkscape se připojit k RexWSTcp serveru, který běží na Raspberry Pi, a budete moci procházet stromem signálů Vašeho řídicího algoritmu.
Klikněte na tlačítko Browse a přepnete se do panelu Connections. Všimněte si stromu signálů, který se objeví v pravé části. Přidejte nové aliasy, které budou mít názvy: BUTTON_FILT, FILTRATION a FILTRATION_MODE. Tyto signály budou použity pro animaci prvků z knihovny RexHMI v závislosti na stavu řídicího algoritmu.
Klikněte na políčko CString (Connection String - Přípojný bod), které je vedle aliasu BUTTON_FILT, rozbalte strom řídicího algoritmu a najděte funkční blok MP_BUTTON. Rozbalte strom tohoto bloku a uvidíte parametr BSTATE. Dvakrát na něj klikněte. V definici aliasu se Vám objeví plná cesta k tomuto parametru. Tento signál bude ovládat blok MP_BUTTON. Z toho důvodu mu musíme přidělit zápisová práva. To provedeme tak, že ve sloupci Type vybereme možnost 'W' (Write).
Nyní připojte alias FILTRATION na vstup U bloku NOT_PUMP a alias FILTRATION_MODE na vstup SW bloku ISSW_FMODE. Tyto signály budou využity ke sledování aktuálního režimu filtrace a stavu filtrační pumpy.
Dále vyberte z horního menu Browse Elements Library nebo stiskněte Ctrl+L. Otevře se Vám složka prvků z knihovny RexHMI.
Jednoduše přetáhněte nějakou připravenou komponentu do Vašeho budoucího HMI v Inkscape. V současné době se knihovna skládá ze tří skupin: skupina GENERAL obsahuje základní vstupy a měřidla, ve skupině HOME můžete nalézt užitečné prvky pro domácí automatizaci, skupina HVAC je pak zaměřena na HMI pro topení, ventilaci a klimatizaci. Nezapomeňte, že si vždy můžete vytvořit a animovat Váš vlastní objekt pomocí základních animačních prvků popsaných v úvodním článku o používání rozšíření RexHMI pro Inkscape.
Přetáhněte z knihovny GENERAL soubor ‘Led.svg’ do Vaší kresby. Jelikož ho budeme potřebovat dvakrát, zkopírujte ho pomocí kláves Ctrl+D nebo Ctrl+C a Ctrl+V. První LEDka bude indikovat naplánovanou filtraci a druhá bude svítit, když bude filtrace zakázána.
Přidejte nápisy pomocí nástroje Text v Inkscape. Najdete ho v levém menu nebo stačí zmáčknout klávesu F8. Klikněte do kresby a můžete vkládat různé nápisy.
Dále do kresby vložte tlačítko Button z knihovny GENERAL.
Další prvky, které budeme potřebovat k vizualizaci filtračního systému, jsou umístěny v knihovně HOME. Jsou to Pipe (trubka), Pipe ending (zakončení trubky), Filter a Motor. Přetáhněte tyto komponenty a umístěte je do pravého dolního rohu kresby.
Jakmile jsou komponenty na svém místě, je na čase je propojit s příslušnými aliasy a nastavit animace. Vyberte LED, která signalizuje naplánovanou filtraci a otevřete okno Edit Element. Klikněte na tlačítko Browse Aliases, vyberte políčko vedle nápisu POWER a dvakrát klikněte na alias FILTRATION_MODE. Filtrace je naplánována, když hodnota signálu FILTRATION_MODE je 0 (jedná se o vstup SW funkčního bloku ISSW_FMODE, jak bylo vysvětleno v jednom z předchozích článků). To je důvod, proč barvu 'runColor' vybereme jako šedivou a barvu 'stopColor' jako zelenou. To znamená, že LED bude šedivá pro FILTRATION_MODE=1 a zelená pro FILTRATION_MODE=0. Jak je vidět, význam signálů je obrácený. Dejte si tedy pozor, ať neprohodíte hodnoty.
Druhá LED bude signalizovat, je-li filtrace zakázána. Dokud bude FILTRATION_MODE=0, bude LED šedá. Proměnnou 'stopColor' tedy nastavíme na šedou. Dioda se rozsvítí červeně, jakmile FILTRATION_MODE=1. Z toho důvodu bude mít 'runColor' hodnotu odpovídající červené barvě. Všimněte si, že tentokrát je logika významů signálů zachována.
Nyní změníme vlastnosti filtračního systému, který se skládá z motoru, trubek a filtru. Všechny tyto prvky by měly značit, zda filtrace běží nebo je vypnutá. Otevřete dialog Edit Element a přidejte alias FILTRATION do panelu Connections pro každý prvek filtračního systému.
Změňte barvy všech trubek podle následující tabulky. Výsledkem bude to, že se trubky obarví modře, když filtrace poběží. Pokud bude vypnutá, trubky budou šedé.
Abychom získali podobné chování u vodního filtru, změníme opět proměnnou 'onColor' na modrou a 'offColor' na šedivou.
Nastavení barev motoru bude odlišné. Když bude filtrace aktivní, motor by měl být zelený.
Poslední komponenta, která nám zbývá nastavit, je tlačítko Button. Otevřeme opět dialog Edit Element a spojíme prvek s aliasem BUTTON_FILT. Přepněte se do panelu Options a změňte parametr text na Filtration Mode. Tím jste nastavili popisek tlačítka.
Nyní z kresby vygenerujeme HTML5 stránku, abychom ověřili funkčnost HMI. Označte prvek HMI Configuration a vyberte Edit Element. Přepněte se na panel HTML export a vložte jméno hlavního HTML souboru Vašeho HMI. Exportujte HMI do prázdné složky, pokud je to možné, protože při generování vznikne velké množství souborů. Mít všechny soubory v samostatném adresáři je také nutné kvůli přesunu HMI do Vašeho Raspberry Pi.
Stiskněte v menu Export HMI nebo použijte zkratku Ctrl+H. Kresba z Inkscape se přegeneruje do HTML podoby a ve vybrané složce vzniknou všechny potřebné soubory.
Najděte a otevřete vygenerovaný HTML soubor ve vašem prohlížeči. Tlačítko přepíná režim filtrace. Aktuální režim je indikován příslušnou LED. Jakmile začne běžet filtrace, trubky zmodrají a motor zezelená. Níže je k prohlédnutí několik možných stavů uživatelského rozhraní pro automatizaci bazénu:
Přesun HMI do Vašeho Raspberry Pi
Jakmile máte HMI uložené ve Vašem počítači a HTML5 stránka komunikuje s Vaším Raspberry Pi pomocí websocket protokolu, můžeme se pustit k přesunu HMI do Raspberry Pi. Díky tomu budete moci přistupovat k HMI z jakéhokoliv zařízení ve Vaší domácí síti.
Vraťte se do Inkscape, otevřete dialog HMI Configuration a přepněte se na panel Options. Na řádku ws_ip smažte adresu websocket serveru. Řídicí algoritmus, websocket server a webový server odteď poběží na stejném zařízení a není tedy potřeba určovat konkrétní IP adresu.
Opět vygenerujte HMI pomocí Export HMI. Poté již bude vše připravené ke zkopírování HMI do Vašeho Raspberry Pi.
- V této chvíli byste měli mít to samé HMI, které je součástí našeho GitHub repozitáře. Pro kontrolu si můžete zkusit vygenerovat HMI ze zdrojového SVG souboru 03_pool_final.svg v adresáři HMIsource.
Zkopírujte HMI do Raspberry Pi pomocí programu RexView.
Otevřete webový prohlížeč a zadejte IP adresu Vašeho Raspberry Pi. Mělo by se objevit HMI. Stejného výsledku byste měli dosáhnout na Vašem notebooku, tabletu i chytrém telefonu!
Řešení problémů
Zasekli jste se v některém bodě? Našli jste chybu? Chybí Vám nějaká vlastnost? Chceme o tom vědět, určitě nám napište.
Dodatečné informace
Můžete také:
- Projít si další grafické prvky knihovny RexHMI.
- Prostudovat naši příručku Začínáme s řídicím systémem REX na Raspberry Pi a pustit si video pro začátečníky. Příručka i video popisují jednoduchou PID regulační smyčku.
- Prozkoumat bohatou knihovnu funkčních bloků řídicího systému REX.
- Navštívit stránky nadace Raspberry Pi, kde můžete nalézt více informací o minipočítači Raspberry Pi.
Raspberry Pi je registrovaná obchodní známka Raspberry Pi Foundation.
aktualizováno: 19. 5. 2017