Projekt

Obecné

Profil

AMMI v2 » Historie » Revize 8

Revize 7 (Jednatel J.H., 2016-09-18 16:32) → Revize 8/10 (Jednatel J.H., 2016-10-11 19:33)

{{>toc}} 

 h1(#top). Advance Machine Machine Interface ([[AMMI]]) 

 Firmware [[AMMI]] poskytuje komunikační protokol jednotlivých [[DKE#diagram|komponent DKE]]. [[AMMI]] je součástí libovolného [[PAC-AT90|DKE-PAC]]. Označení MMI představuje komunikaci mezi zařízeními, jako jsou například počítače, kontroléry, mobilní telefony, chytré senzory... a písmeno A (Advance) informuje o pokročilosti a komplexnosti této komunikace. Cílem AMMI je inteligentní kybernetické řízení. [[AMMI]] protokol je určený spíše pro zařízení, než pro uživatele a je optimalizovaný pro rychlost a spolehlivost. Pro přímou komunikaci uživatele a [[PAC-AT90|DKE-PAC]] je vhodné instalovat [[HMI]] software. Aktuální vývojová verze [[AMMI]] podporuje [[PAC-AT90]] a má implementovány protokoly: 
 * [[MMI|DKE-MMI-USB]] 
 ** Převodník, dekodér nebo kodér komunikačního rozhraní. Označení USB představuje komunikační standard Universal Serial Bus 2.0. 
 * [[MMI|DKE-MMI-BT]] 
 ** Převodník, dekodér nebo kodér komunikačního rozhraní. Označení BT představuje komunikační bezdrátový standard Bluetooth. 
 ** Aplikovaný komunikační protokol je závislý na použitém [[DKE-PAC]]. 
 * [[MMI|DKE-MMI-WIFI]] 
 ** Převodník, dekodér nebo kodér komunikačního rozhraní. Označení WIFI představuje komunikační bezdrátový standard IEEE 802.11. 
 ** Aplikovaný komunikační protokol je závislý na použitém [[DKE-PAC]]. 

 ------------------------------------------------------------- 

 h2(#spec). Specifikace protokolu 

 Fyzická, linková, síťová a transportní vrstvy vychází z níže uvedených protokolů. Uvádíme zde pouze konkrétní odlišnosti a informace potřebné pro snadnou implementaci. Sledy vodičů, napěťové úrovně, napájení a vodiče jsou specifikovány u [[PAC-AT90]]. 

 ## USART 
 *** TTL (5 V, 3,3 V) 
 *** RS232 
 *** RS485 
 *** USB 2.0 
 ## IEEE 802.11 (Wi-Fi) 
 *** 2,4 GHz 
 *** TCP/UDP 
 *** client/server 

 Relační, prezentační a aplikační vrstvy společně zajišťují přenos informací mezi zařízeními. Převážně se jedná o sériový přenos dat a je optimalizovaný pro minimální datový tok. Dále uvádíme pouze tělo rámce (rámec definován užitou linkou). Tělo rámce [[AMMI]] je v podobě sekvence bajtů. Prvním B je počet následujících B. Druhý B je adresa [[PAC-AT90|DKE-PAC]]. Třetí B je sdělení. 4. B až 5. B obsahuje hodnotu sdělení. Sdělení a jeho možné hodnoty jsou popsány níže uvedenou tabulkou (slovníkem [[AMMI]]).  

 h3(#tx). h3. Struktura odchozího těla rámce (aplikace posílá do [[PAC-AT90]] bajty skrze předchozí vrstvy) 

 |1. B       |    2. B    | 3. B      | 4.-5. B | 
 |*počet následujících B*|*adresa [[DKE-PAC]]*|*sdělení (příkaz)*|*hodnota (data)*| B*|*adresa*|*sdělení*|*hodnota*| 

 |B0     |         B1|\3=. B2                                                             |     B3                        | B4                 | B5         | B6         | 
 |*ΣB* |*adredsa*|*sdělení* |*sdělení*       |hex kód | popis                                      |*data B 1*                   |*data B 2*          |*data B 3*|*data B 4*|                                       |*hodnota*                |*počet B*| 
 |4      |1:255      |OUTPUT_OFF      |      0xC0| vypne výstup [[IOPE]] (vysoká impedance)    | číslo výstupu MSB           | číslo výstupu LSB|            |            | _číslo výstupu_                 |3| 
 |4      |1:255      |OUTPUT_ON       |      0xC1| sepne výstup [[IOPE]] (otevřený kolektor)| číslo výstupu MSB           kolektor) | číslo výstupu LSB|            |            | _číslo výstupu_                 |3| 
 |4      |1:255      |OUTPUT_BLK      |      0xC2| invertuje výstup [[IOPE]]                                    | číslo výstupu MSB           | číslo výstupu LSB|            |            | _číslo výstupu_                 |3| 
 |/6^.3|/6^.1:255|/6^.OUTPUTS |/6^.OUTPUTS     |/6^.0xC3|/6^.nastaví všechny výstupy [[IOPE]]                |                                   sekvence bitů (1=ON, 0=OFF)     |3| 
                                                                     |              |            |            | 
                                                                                    | 0x00 = vše vypnout                |              |2| 
                                                                     |            |            | 
                                                                                    | 0x01 = vše zapnout                |              |2| 
                                                                     |            |            | 
                                                                                    | 0x02 = vše invertovat                       |2| 
                                                                     |              |            |            | 
                                                                                    | 0x03 = náhodná kombinace                 |2| 
                                                                     |              |            |            | 
                                                                                    | 0xF0 = vrať stavy výstupů         |              |            |            |       |2| 
 |3      |1:255      |OUTPUTS_PWM     |      0xC4| nastaví PWM na všechny výstupy [[IOPE]]        | _hodnota_ střídy <0;100> %        |              |            |            |      |2| 
 |4      |1:255      |REPEAT          |      0xCF| opakuje poslední zadaný příkaz             |\2.              | perioda (_16bit-číslo_*10ms)                |            |            |    |3| 
 |/3^.4|/3^.1:255|/3^.TRANSLATOR|/3^.0x01|/3^.vlastnosti překladače                   | |/3^.TRANSLATOR|/3^.0x01|/3^.umožňuje nastavit vlastnosti překladače| 0x01 = zapne informaci o chybách|              chybách|2| 
                                                                     |            |            | 
                                                                                    | 0x02 = vypne informaci o chybách|              chybách|2| 
                                                                     |            |            | 
                                                                                    | 0x0E = posílat zpět přijaté B     |              |            |            | 
 |6     |1:255      |      IOPE        |      0xCC| umožňuje přístup na konkrétní [[IOPE]]      | sběrnice (1:3)                    |adresa (0:7)|PORTA(MSB)|PORTB(LSB)| 
 |3     |1:255      |      RELE1       |      0x41| ovládá relé 1                               | 0x01 = ON, 0x00 = OFF             |              |            |            | 
 |3     |1:255      |      RELE2       |      0x42| ovládá relé 2                               | 0x01 = ON, 0x00 = OFF             |              |            |            | 
 |3     |1:255      |      RELE3       |      0x43| ovládá relé 3                               | 0x01 = ON, 0x00 = OFF             |              |            |            | 
 |3     |1:255      |      RELE4       |      0x44| ovládá relé 4                               | 0x01 = ON, 0x00 = OFF             |              |            |            | přijatý příkaz|2| 

 h3. Struktura příchozího těla rámce ([[PAC-AT90]] posílá do aplikace bajty skrze předchozí vrstvy) 

 |1. B       |    2. B    | 3. B      | 4.-5. B | 
 |*počet B*|*adresa*|*sdělení*|*hodnota*| 

 |*sdělení*       |hex kód | popis                                       |*hodnota*                       |*počet B*| 
 |      OUTPUTS     |      0xC3| Informace o aktivním nastavení výstupů [[IOPE]]| sekvence bitů (1=ON, 0=OFF)       |3| 
 |/6^.TRANSLATOR|/6^.0x01|/6^. Informace z překladače. Aktivní pouze v případě, že je překladač zapnut.|UNKNOW_DEV (0x0C) neznámé zařízení |2| 
                                                                     | UNKNOW_COM (0x0D) neznámý příkaz       |2| 
                                                                     | UNKNOW_VAL (0x0E) neplatná hodnota     |2| 
                                                                     | TIMEEXPIRE (0x0A) vypršel čas komunikace |2| 
                                                                     | ERROR_PROCS (0x0B) chyba při provádění příkazu |2| 
                                                                     | ERROR_TRANS (0x0F) chyba překladače    |2| 

 h3. Příklad komunikace a) 

 # aplikace otevře TCP port 
 # aplikace pošle |0x03|0x01|0xC3|0x03| 
 # aplikace zavře TCP port 

 Aplikace přikázala skrze Wi-Fi aby [[PAC-AT90]] na adrese 1 náhodně nastavil výstupy [[IOPE]] na 1 a 0.  

 h3. Příklad komunikace b) 

 # aplikace otevře TCP port 
 # aplikace pošle |0x03|0x01|0x01|0x0E| 
 # [[PAC-AT90]] pošle |0x03|0x01|0x01|0x0E| 
 # aplikace pošle |0x04|0x01|0xC3|0x32E6| 
 # [[PAC-AT90]] pošle |0x04|0x01|0xC3|0x32E6| 
 # aplikace zavře TCP port 

 Aplikace skrze Wi-Fi zapnula echo na [[PAC-AT90]] a přikázala [[PAC-AT90]] zapnout a vypnout výstupy [[IOPE]] dle schématu 0011 0010 1110 0110. 

 ------------------------------------------------------------- 

 h2(#dev). Vývojové informace 

 Vývojové informace mohou procházet uživatelé s bezpečnostní prověrkou reportér a vyšší. 

 # Aktuální vývojová verze: [[versions|2.x]] 
 # Developments Issues: #485 
 # "Components List":https://www.tme.eu/cz/Profile/Parking/740721.html 

 ------------------------------------------------------------- 

 h2(#atch). Přílohy