MMI rozhraní (Man-Machine Interface)

Základními požadavky při návrhu elektronických zařízení zajisté jsou spolehlivost, elektromagnetická kompatibilita, a především bezpečnost. Pro úspěšnou konstrukci elektronického zařízení na profesionální úrovni je však nutné brát v úvahu i technologickou a ekonomickou vyrobitelnost a testovatelnost, ale hlavně požadavky zákazníka, který na přední místo jejich seznamu klade nízkou cenu, líbivý design a především snadnou a praktickou ovladatelnost výsledného zařízení.

Většina elektronických zařízení dnes totiž vyžaduje uživatelské rozhraní (MMI, Man-Machine Interface), které slouží k jejich příjemnému ovládání a prezentaci stavů. Uživatelské rozhraní může být jednoduše realizováno pomocí ovládacích tlačítek a indikačních LED diod. Složitějších systémy a zařízení už obvykle vyžadují použití dotykových grafických displejů. Ve většině případů realizace uživatelského rozhraní je plně dostačující použití například maticové klávesnice v kombinaci se znakovým LCD displejem.

Uživatelské rozhraní se však často stává „popelkou“ vývojářského úsilí, protože na řadu přichází až naposled nebo na ně zbydou poslední síly. Poučeni předchozími zkušenostmi jsme se pokusili vytvořit vícekrát použitelné, a proto inteligentní rozhraní střední kategorie, pro něž jsme zvolili relativně laciný znakový LED displej a malou maticovou klávesnici.

LCD znakové displeje nemají pevně stanovené a standardizované rozhraní, nicméně většina LCD znakových displejů je v dnešní době založena na integrovaném obvodu HD44780 či jeho ekvivalentu, který využívá k řízení displeje paralelní rozhraní. Pro komunikaci s displejem je tedy nutné použít paralelní datovou sběrnici (4bitovou nebo 8bitovou) nebo port společně s dalšími řídícími signály, napájením a zemí. Takový počet vývodů je nutné propojit z displeje do řídící části navrhovaného zařízení, což může v některých aplikacích výrazně zvýšit nároky na počet vývodů řídícího procesoru. Navíc ovládání displeje a snímání tlačítek může ovlivnit jeho výpočetní výkon, protože se procesor musí starat o obíhání pomalého rozhraní, a to poměrně často. Tak se paralelní rozhraní displeje stává spíše nevýhodou.

Hlavním řídícím prvkem elektronických zařízení jsou procesory, počínaje jednočipovými mikroprocesory (MCU), přes digitální signálové procesory (DSP) až po nejvýkonnější vícejádrové procesory. Nezávisle na typu použitého procesoru, je jedním ze základních rozhraní, které mají procesory integrované, sériové komunikační rozhraní typu UART (Universal Asynchronous Receiver and Transmitter). Ke komunikaci prostřednictvím rozhraní UART uvnitř zařízení zpravidla postačují dva signály (TX a RX), které obvykle používají běžné logické úrovně (typicky 5V TTL nebo 3,3V LVTTL). Toto rozhraní v MCU je zpravidla podporováno mechanismy přerušení, bufferů na znaky aj., které výrazně šetří čas procesoru. Rozhraní UART je navíc možné jednoduše přizpůsobit standardům RS-232 nebo USB pomocí specializovaných obvodů, které jsou k tomu určeny.

foto02.jpg

Obr. 1 Provedení terminálu s fóliovou klávesnicí po straně displeje – aplikace v routeru

Ideálním rozhraním k připojení relativně samostatného, inteligentního uživatelského rozhraní na krátkou vzdálenost uvnitř navrhovaného zařízení je tedy UART/TTL nebo jeho ekvivalenty (RS232, USB). Indikační a ovládací prvky je možné sdružit, řídit a připojit prostřednictvím komunikačního rozhraní, za cenu přidaného malého procesoru do této jednotky. Když začínáte od nuly, musíte takový MMI terminál navrhnout, vyrobit, otestovat a ověřit jeho funkčnost. Nabízíme jednodušší variantu - použít již v Rystonu vyvinutý a otestovaný typ MMI terminálu.

Blokové schéma terminálu

Terminál MMI je vhodný k instalaci do panelů průmyslových zařízení, které vyžadují náročnější indikaci stavů (než jen několik LED), případně interaktivní zásah obsluhy nebo dohled či monitoring stavových veličin. Typickým příkladem takových přístrojů mohou být technologická zařízení všeho druhu, zabezpečovací, přístupové a informační terminály, switche a routery aj.

Komunikační terminál je mechanicky navržen ze dvou panelových jednotek tak, aby bylo možné číst standardní znakový LCD displej (16x2 znaků), a ovládat dění v zařízení pomocí klávesnice s max. 10 tlačítky (zakázkové fóliové nebo prosvětlovací tlačítkové 2x5), a to buď pod displejem anebo na jeho straně. Rozměry terminálu jsou koncipovány tak, aby ho bylo možné umístit i do předního panelu průmyslového zařízení 1U.

 

Obr. 2 Blokové schéma terminálu

Terminál MMI kromě panelových jednotek displeje a klávesnice tvořen ještě deskou procesoru ATMEGA16 (16kB FLASH, 1kB RAM) stejných rozměrů a polohy konektorů jako panelové jednotky, takže je možno snadno ho zamontovat k nim pomocí distančních sloupků a jednoduchých kablíků. Procesor umožňuje připojení znakových i grafických displejů, externího SPI LED panelu a maticové klávesnice. K hlavnímu procesoru nebo PC je možné MMI terminál připojit pomocí rozhraní UART, které je možné na desce osadit v několika variantách: USB, RS-232 nebo LVTTL fyzické rozhraní.

Na desce procesoru je dále paměť EEPROM, obsahující potřebné kódy a tabulky protokolu. Její obsah je v širokém rozmezí programovatelný uživatelsky.

Terminál MMI je možné napájet několika možnými způsoby. Nejjednodušším řešením z pohledu propojení s „embedded“ PC je varianta napájení přímo z USB. Varianty UART/TTL a RS-232 musí být doplněny o napájecí konektor +5V, případně vyššího napájecího napětí 9V, 12V nebo 24V, které upravuje integrovaný stabilizátor na potřebných +5V. Spotřeba je zanedbatelná, největší položkou je podsvícení LCD, které je cca 200 mA z 5V. Další spotřebu generují případně připojené LED matice (jedna LED má typickou spotřebu 10-20 mA)

foto01a-upraveno.jpg

Obr. 2 Pohled na části terminálu na podložce pro ladění

Software a komunikační protokol      

Terminál umožňuje připojení a komunikaci s externím CPU pomocí UART rozhraní ve dvou režimech (transparentní a příkazový). Oba režimy využívají ke komunikaci standardní komunikační sériové rozhraní s rychlostí 115 kbps ve variantách USB, RS-232 nebo LVTTL. Následující popis je zjednodušen, snažili jsme se o přiblížení typického použití.

 

Po restartu je MMI terminál nastaven do transparentního „dumb“ režimu, kdy po sériovém rozhraní vysílá jednotlivé ASCII kódy kláves z terminálu do hlavního procesoru. V opačném směru MMI zobrazuje na připojeném LCD displeji přijímaná data z hlavního procesoru. Stisk klávesy na MMI terminálu vyvolá odeslání příslušného ASCII znaku a uvolnění klávesy na vyvolá odeslání ASCII netisknutelného znaku (00)H .

 

Terminál MMI je možné přepnout do režimu příkazů. Tento typ přenosu je určen pro vzájemnou komunikaci mezi terminálem a připojeným CPU. Komunikační protokol je založen na zabezpečené výměně zpráv v přesně definovaném tvaru a počet a typ zpráv lze libovolně rozšiřovat.

 

 

FLAG

LENGTH

CMD

DATA

CS

1B

1B

1B

1-32B

1B

Tab. 1: Formát zpráv.     B znamená Byte (znak).

Nespornou výhodou MMI terminálu je jeho možnost použití i jako autonomního nebo rozšiřovatelného řídícího prvku, který může prostřednictvím dalších rozhraní (I2C, SPI, …) ovládat další periferie (matici LED, dokonce i výkonové prvky, AD převodníky atd.). K terminálu MMI je totiž dostupná i předkompilovaná knihovna, která má implementovány již všechny funkce pro ovládání LED, displeje a tlačítek a je možné ji tedy použít jako knihovnu do vlastní aplikace, která bude spuštěna na MMI terminálu.

Stejně tak je dostupná aplikace pro CPU, který řídí MMI terminál. Realizace menu na displeji je například jednoduše konfigurovatelná pomocí XML souboru, který se přeloží do EEPROM:

<?xml version="1.0" standalone="no" ?>

<!-- xml file for Terminal Ryston -->

<MenuDataSet>

 

<MenuItem>

   <menulevel>0</menulevel>               <!-- 1: menu level 1-->

   <menuorder>0</menuorder>               <!-- 0: table header, menu top -->

   <situation>File Display</situation>     <!-- text na displee -->

   <var_name>?</var_name>                 <!-- jmeno globalni promenne v aplikaci -->

   <var_file>text_disp.txt</var_file>     <!-- v tomto souboru text pro displej -->  

</MenuItem>

 

<MenuItem>

   <menulevel>1</menulevel>               <!-- 1: menu level 1-->

   <menuorder>0</menuorder>               <!-- 0: table header, menu top -->

   <situation>Router Info</situation>   <!-- text v hornim radku, popis situace -->

</MenuItem>

 

<MenuItem>

   <menulevel>1</menulevel>               <!-- root -->

   <menuorder>1</menuorder>               <!-- 1: finished ok -->

   <situation>Type Board:</situation>     <!-- text v hornim radku, popis situace -->

 <var_name>?</var_name>                 <!-- jmeno globalni promenne v aplikaci -->

</MenuItem>

 

<MenuItem>

   <menulevel>1</menulevel>               <!-- root -->

   <menuorder>2</menuorder>               <!-- 1: finished ok -->

   <situation>FW Version:</situation>     <!-- text v hornim radku, popis situace -->

   <var_name>?</var_name>                 <!-- jmeno globalni promenne v aplikaci -->

</MenuItem>

 

.

.

.

Tab. 2 Příklad definice položek menu v XML

Tuto XML strukturu, popisující dvour

 

ozměrné menu, je možno dále rozvíjet. Základní myšlenkou je však to, že řídicí systém zařízení se nezdržuje formátováním výstupu, pouze v určité své situaci (stavu, kauze) po sériové lince do MMI rozhraní pošle číslo kauzy a čeká na odpověď z dohodnuté množiny povolených odpovědí, s možným time-outem. Dá se definovat například to, že na horní řádek displeje se napíše popis situace a do dolního se zapíší pseudografické symboly (šipky nebo plus/minus) patřící k tlačítkům pod nimi (klávesnice je pod displejem), a podsvítí se právě ta tlačítka, která má smysl stisknout (například sada šipek a dvojšipek typu joystick nebo přehrávač, anebo jen Enter).

 

foto03-mensi.jpg

Obr. 3: Pohled zevnitř na uspořádání částí terminálu

Shrnutí

MMI terminál je tak ideálním řešením pro jednoduché i poměrně složité průmyslové aplikace, které vyžadují interakci s uživatelem. Při použití MMI terminálu se implementace klávesnice a displeje stává jednoduchou záležitostí, která usnadní a výrazně zkracuje čas vývoje. MMI terminál má poměrně skromné mechanické požadavky na montážní otvory a hloubku zástavby i kabeláž, jak ukazují Obr. 2 a 3. Vyvinuté desky je navíc možné použít i k připojení víceřádkových nebo grafických displejů, anebo k testování a ladění téměř libovolného znakového displeje. Protistranou inteligentního terminálu může být téměř libovolný procesor se sériovou linkou: od jednoduchého řadiče kategorie PIC, přes Atmegy, V-čka, členy rodiny ARM9, Cortex, až k vestavným PC.