Projekt

Obecné

Profil

AMMI v3 » Historie » Revize 2

Revize 1 (Jednatel J.H., 2017-05-10 22:47) → Revize 2/12 (Jednatel J.H., 2017-09-29 19:46)

{{>toc}} 

 h1(#top). Advance Machine Machine Interface ([[AMMI_v3|AMMI]]) ver.3.x 

 Pokročilé rozhraní zařízení-zařízení ve zkratce ([[AMMI_v3|AMMI]]) poskytuje komunikační protokol jednotlivých [[DKE#diagram|komponent DKE]]. [[AMMI_v3|AMMI]] je součástí libovolného [[PAC|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_v3|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 [[AHMI]] software. Aktuální vývojová verze [[AMMI_v3]] podporuje [[PAC-AT90_v3]] a má implementovány protokoly: 
 * [[MMI#usb|DKE-MMI-USB]] je převodník, dekodér nebo kodér komunikačního rozhraní. Označení USB představuje metalický komunikační standard Universal Serial Bus 2.0. 
 * [[MMI#wifi|DKE-MMI-WIFI]] je převodník, dekodér nebo kodér komunikačního rozhraní. Označení WIFI představuje bezdrátový komunikační standard IEEE 802.11. 
 * [[MMI#uart|DKE-MMI-UART]] je převodník, dekodér nebo kodér komunikačního rozhraní. Označení UART představuje metalický komunikační standard ANSI EIA/TIA-232. 

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

 h2(#spec). Specifikace komunikačního protokolu [[AMMI_v3|AMMI]] 

 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 v [[PAC-AT90]]. 

 ## USART 
 *** TTL (5 V, 3,3 V) 
 *** RS232 
 *** 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_v3|AMMI]] je v podobě sekvence bajtů: 
 # B je počet následujících B těla rámce; 
 # B je adresa [[PAC-AT90|DKE-PAC]]; 
 # B je adresa zařízení; 
 # B je příkaz/sdělení; 
 # B až N. B jsou určeny pro data zařízení, data příkazu nebo data sdělení. 

 Zařízení, sdělení, příkazy a jejich možné hodnoty jsou popsány níže uvedenou tabulkou (slovníkem [[AMMI_v3|AMMI]]). 

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

 |=. B0 |=.       B1 |=. B2                 |\2=.     B3                                                  |=. B4                              |=. B5              |=. B6       | 
 |*ΣB*    |*adredsa* |*zařízení*            |*sdělení/příkaz*      |popis                                 |*data B 1*                         |*data B 2*         |*data B 3*|*data B 4*| 
 |/6^.4 |/6^.1:255 |/6^.KERNEL(0x00)      |/3^.TRANSLATOR(0x01)|/3^.vlastnosti překladače             | 0x01 = zapne informaci o chybách|                   |            |            | 
                                                                                                  | 0x02 = vypne informaci o chybách|                   |            |            | 
                                                                                                  | 0x0E = posílat zpět přijaté B     |                   |            |            | 
                                        |/3^.DEVICES           |/3^.správa zařízení                   | 0x01 = zapne informaci o chybách|                   |            |            | 
                                                                                                  | 0x02 = vypne informaci o chybách|                   |            |            | 
                                                                                                  | 0x0E = posílat zpět přijaté B     |                   |            |            | 
 |/28^.4|/28^.1:255|/28^.IOPE(0x01:0xFF)|/6^.COLLECTORS(0xC3)|/6^.nastaví všechny výstupy [[IOPE]]|                                   |                   |            |            | 
                                                                                                  | 0x00 = vše vypnout                |                   |            |            | 
                                                                                                  | 0x01 = vše zapnout                |                   |            |            | 
                                                                                                  | 0x02 = vše invertovat             |                   |            |            | 
                                                                                                  | 0x03 = náhodná kombinace          |                   |            |            | 
                                                                                                  | 0xF0 = vrať stavy výstupů         |                   |            |            | 
                                        |COFF(0xC0)       |vypne výstup [[IOPE]] (vysoká impedance) | 0x00:0x0F = číslo kolektoru       |                   |            |            | 
                                        |CON(0xC1)        |sepne výstup [[IOPE]] (otevřený kolektor)| 0x00:0x0F = číslo kolektoru       |                   |            |            | 
                                        |CTGL(0xC2)       |invertuje výstup [[IOPE]]                  | 0x00:0x0F = číslo kolektoru       |                   |            |            | 
                                        |/6^.PWM(0xD0:0xDF)    |/6^.správa PWM pro jednotlivé výst. | 0x00 = PWM vypnout                |                   |            |            | 
                                                                                                  | 0x01 = PWM zapnout                |                   |            |            | 
                                                                                                  | 0x02 = PWM perioda                |                   |            |            | 
                                                                                                  | 0x03 = PWM střída                 |                   |            |            | 
                                                                                                  | 0x04 = efekt1                     |                   |            |            | 
                                                                                                  | 0xF0 = vrať aktuální nastavení    |                   |            |            | 
                                        |/4^.ADC(0xA0:0xAF)    |/4^.správa kanálů ADC                 | 0x00 = ADC vypnout                |                   |            |            | 
                                                                                                  | 0x01 = ADC zapnout                |                   |            |            | 
                                                                                                  | 0x02 = vrať hodnotu ADC kanálu    |                   |            |            | 
                                                                                                  | 0xF0 = vrať aktuální nastavení    |                   |            |            | 
                                        |/9^.ENCODER(0x60)     |/9^.příkazy inkrementálního enkodéru| 0x01 = kontrola délky cyklů       |                   |            |            | 
                                                                                                  | 0x02 = vrátí délka cyklů          |                   |            |            | 
                                                                                                  | 0x03 = kontrola počtu cyklů       |                   |            |            | 
                                                                                                  | 0x04 = vrátí počet cyklů          |                   |            |            | 
                                                                                                  | 0x05 = vrátí směr rotace          |                   |            |            | 
                                                                                                  | 0x06 = nastaví minimální délu     | DELKA             |            |            | 
                                                                                                  | 0x07 = nastaví maximální délu     | DELKA(MSB)        |DELKA(LSB)|            | 
                                                                                                  | 0x08 = vyčistí čítače a hodnoty |                   |            |            | 
                                                                                                  | 0x09 = nastaví rozlišení čítače | ROZLISENI(0:255)|            |            | 


 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(#funkce). Vlastnosti (knihovny) základního balíčku [[AMMI_v3|AMMI]] 

 h3(#ammi_sequences). Sekvence (AMMI-SEQUENCES) 

 Sekvence představuje třídu s metodami a proměnnými pro odložené, opakované a cyklické řízení [[AMMI_v3|AMMI]]. Každý uložený příkaz má následující vlastnosti: 
 # SEKVENCE, sled bajtů konkrétního příkazu viz [[AMMI_v3#tx|tabulka Struktura odchozího těla rámce]] 
 # STATUS, zapnuto, vypnuto 
 # LOOP, počet opakování příkazu 
 # TIMER, kdy bude příkaz poprvé volán 
 # PERIODE, doba mezi jednotlivými volání příkazu. 

 Příkazy pro práci s balíkem AMMI-SEQUENCES jsou v [[AMMI_v3#tx|tabulce Struktura odchozího těla rámce]] a jsou to: 

 | Píkaz               | Popis                                    | Vstupní a výstupní parametr                                         | 
 | SEQUENCES_SET       | Nastaví sled bajtů konkrétního volání. | Sled bajtů, viz [[AMMI_v3#tx|tabulka Struktura odchozího těla rámce]]| 
 | SEQUENCES_SET_TIME| Nastaví čas prvního volání.              | 0 až 65536 jednotek, viz [[AMMI_v3#tc|Hodiny]]                         | 
 | SEQUENCES_SET_LOPS| Nastaví počet volání.                    | 0 až 255                                                               | 
 | SEQUENCES_SET_PERD| Nastaví prodlevu mezi voláními.          | 0 až 255 jednotek, viz [[AMMI_v3#tc|Hodiny]]                           | 
 | SEQUENCES_SET_STAT| Nastaví status volání.                   | Zap, Vyp, Zámek                                                        | 
 | SEQUENCES_GET       | Vrátí všechny vlastnosti sekvence.       | Sled bajtů v posloupnosti seznamu z předchozího odstavce.              | 
 | SEQUENCES_INIT      | Uvolní všechna nastavení sekvencí.       |                                                                        | 
 | SEQUENCES_RUN       | Spustí konkrétní volání.                 | 0 až maximální počet volání                                            | 
 | SEQUENCES_AUTORUN | Spustí automatický běh volání.           |                                                                        | 

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

 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