EVOK

Softwarová dokumentace

EVOK je základní volně dostupný software pro ovládání UniPi.

Co je to EVOK 2.0

Jako EVOK je označeno naše open-source aplikační programovací rozhraní (API), licencované pod Apache, které slouží ke vzdálenému přístupu k našim PLC jednotkám.  Jde o jednoduchý software, který uživateli umožňuje co možná nejlehčí přístup k hardwaru bez toho, aby se uživatel musel zaobírat složitým programováním. Ve výbavě má celkem šest unifikovaných metod, které uživateli slouží jako náhrada nutnosti psát vlastní kód - díky tomu je možné využívat prakticky libovolný programovací jazyk.  Samotné API funguje jako spojovací vrstva mezi samotným zařízením a webovou stránkou EVOKu, obsahující uživatelské rozhraní.  Výsledný software je pak natolik jednoduchý na užívání, že práci v něm zvládne i naprostý začátečník.

Jednoduché schéma funkce EVOKu

Užité protokoly

EVOK využívá celkem šest protokolů (unifikovaných metod). Jedná se o následující:

  • REST Web Forms
  • Bulk JSON
  • REST JSON
  • SOAP
  • WebSocket
  • JSON-RPC

REST  je označení pro způsob návrhu API, který odpovídá přirozené manipulaci s endpointy podle specifikace HTTP. Web Forms je pak označení pro nativní způsob přístupu k internetovým API, založený na způsobu komunikace užívaném HTML formuláři.

Bulk JSON protokol je určen pro odesílání většího množství příkazů při zachování krátké doby odezvy. Bez něj by např. odeslání 20 příkazů znamenalo při latenci 25 ms na příkaz odezvu téměř 0,5 vteřiny, což by znamenalo potíže např. při využití jednotky ke spínání osvětlení. S bulkovým protokolem je ale možné jednou zprávou vyslat téměř jakékoliv množství příkaz přičemž celková odezva nepřekročí 30 ms.

REST JSON je velmi podobný REST Web Forms, na rozdíl od něj ale používá ke komunikaci JSON objekty a umožňuje tak jednodušší zpracování JavaScriptu.

SOAP (Simple Object Access Protocol) je protokol založený na jazyku XML, který využívá předem specifikované rozhraní. To umožňuje snazší integraci EVOKu do již existujících informačních systém.

WebSocket je nezávislý komunikační protokol, který přes jedno TCP spojení umožňuje vytvořit obousměrný komunikační kanál. Lze jej užít skrze webové prohlížeče či servery, případně přes klientské či serverové aplikace.

JSON-RPC je označení pro technologii využívající JSON objektů pro vzdálené vyvolávání skriptovacích funkcí. To umožňuje integrování vzdálených funkcí do programu bez nutnosti vytvářet transportní objekty.

Funkcionalita

Co se funkcionality týče, EVOK umožňuje přímou kontrolu vstupů a výstupů a jejich nastavení. Přímo v API je obsaženo nastavení firmwarových funkcí řídících jednotek, jmenovitě nastavení typů analogových vstupů a výstupů, funkce DirectSwitch, funkce Counter, funkce PWM aj. Zahrnuta je i podpora startovací konfigurace, tj. možnost nastavení vstupů/výstupů tak, aby byl po spuštění zařízení jejich výchozí stav "zapnuto".

Přímo v EVOKu lze provádět základní úkony s komponenty systému, tj. spínat či vypínat vstupy/výstupy, monitorovat systém, provádět měření apod. Pro složitější operace (např. psaní chování systému) je ale nutné využít k tomu určený program. Ten následně EVOK využívá jako spojovací vrstvu mezi ním a vstupy/výstupy.

Zahrnuta je i podpora rozhraní TCP-Modbus bez podpory sběrnice 1-Wire. Uživateli zde postačuje pouze Modbus mapa, EVOK pak zde díky možnosti využít JavaScript nabízí výrazně komfortnější prostředí, ve kterém se bude snadno orientovat každý uživatel zdatnější v programování.

EVOK podporuje i základní wi-fi funkcionalitu řídící jednotky. Pomocí něj lze z jednotky učinit bezdrátový přístupový bod (výchozí jméno sítě UNIPICONFIG, heslo "UniPi.technology"), zahrnuta je i podpora přemostění mezi Ethernetem a internetem.

Uživatelské rozhraní

Následuje ukázka typického webového rozhraní EVOKu, které s EVOKem komunikuje a bylo napsáno v JavaScriptu. Podobnou stránku si lze díky uživatelské přívětivosti EVOKu snadno vytvořit dle vlastních požadavků a ve svém preferovaném programovacím jazyce. Oficiální dokumentace navíc nabízí možnost vygenerovat ukázkový kód a detailní popis vstupů a výstupů. Za zmínku stojí i fakt, že  dokumentace je strojně verifikovaná, tj. je zaručeno, že EVOK bude provádět pouze operace napsané v kódu.

Uživatelské rozhraní je ve výchozím stavu (tj. ve stavu získaném z SD karty) nastaveno pro port 88, uživatel má nicméně kdykoliv možnost port změnit dle potřeby. Po spuštění se zobrazí uživatelské rozhraní, které obsahuje záložky Vstupy, Výstupy, Systém a Konfigurace

Záložka Systém

Zde se uživatel dozví všechny důležité informace o jednotce. Viditelný je zde název zařízení a sériové číslo, lze také zobrazit nastavení sériových portů RS485. Na této záložce se nachází nastavení funkce WatchDog - ta monitoruje komunikaci mezi procesorem a počítačem Raspberry Pi a pokud po předem nastavený interval není zachycen žádný provoz, WatchDog automaticky provede restart zařízení a jeho přepnutí do továrního nastavení. Jde tak o zálohu pro případ, že by došlo k selhání Raspberry Pi, případně k chybě softwaru.

Záložka Konfigurace

Pokud uživatel provádí změny v nastavení, v případě potřeby jejich dlouhodobého uložení je třeba je uložit skrze tlačítko Save current state to flash - v opačném případě jsou data ztracena v okamžiku přepnutí na jinou záložku. Dále má zde uživatel možnost pojmenovat vstupy i výstupy, případně provádět jejich nastavení. U sériových portů je možné nastavit jejich rychlost a paritu (tj. zda je součet počtu přenesených bitů a paritního čísla sudý či lichý). Analogové vstupy pak umožňují nastavit měření napětí či proudu v rozmezí 5-20V, případně 4-20 mA, analogové výstupy 1. skupiny navíc podporují měření elektrického odporu.

Zobrazen je zde i počet zařízení, podle kterého lze zkontrolovat, zda všechny komponenty řídící jednotky jsou propojeny a funkční. Číslo vyjadřuje jednotlivé I/O skupiny jednotky a jejich počet se liší dle dané modelové řady, tj.  řada S má jednu skupinu, řada M dvě a řada L tři. 

Konfigurační menu umožňuje i nastavení uživatelských diod - každá jednotka Neuron je vybavena čtveřicí diod (označeny X1 - X4), kterou lze využít jako vlastní stavové indikátory.

Záložky Vstupy a Výstupy

V záložce Výstupy lze jednotlivé výstupy vypínat a zapínat, stejně jako LED indikátory. U analogových výstupů má navíc uživatel možnost nastavit napěťové či proudové rozpětí. Záložka Vstupy pak umožňuje zobrazení stavu vstupních modulů a stav čítače impulzů funkce Counter.

Kompletní technické schéma

Odkazy