Projekt

Obecné

Profil

AMMI v3 » Historie » Revize 6

Revize 5 (Jednatel J.H., 2017-12-07 15:21) → Revize 6/12 (Jednatel J.H., 2017-12-07 15:32)

{{>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). 1 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). 1.1 Struktura odchozího těla rámce (aplikace posílá do [[PAC-AT90]] bajty skrze předchozí vrstvy) 

 |=. *B0*                |=.       *B1*                |=. *B2*                 |=.     *B3 až B9*                      | 
 |suma posílaných bajtů|adresa volaného zařízení |sdělení nebo příkaz     |data patřící sdělení nebo příkazu    | 

 Jednotlivé příkazy a nebo sdělení jsou uvedeny v kapitole [[AMMI_v3#ammi_syntaxe|Syntaxe]]. 

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

  

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

 |=. *B0*                |=. |1. B       *B1*                  |=. *B2*                 |=. |    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     *B3 až B9*                      |      0xC3| Informace o aktivním nastavení výstupů [[IOPE]]| sekvence bitů (1=ON, 0=OFF)       |3| 
 |suma příchozích bajtů|adresa volajícího |/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í |sdělení nebo |2| 
                                                                     | UNKNOW_COM (0x0D) neznámý příkaz       |2| 
                                                                     | UNKNOW_VAL (0x0E) neplatná hodnota     |data patřící sdělení nebo |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| 

 Jednotlivé příkazy a sdělení jsou uvedeny v kapitole [[AMMI_v3#ammi_syntaxe|Syntaxe]]. 

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

 h3. 1.3 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. 1.4 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(#ammi_syntaxe). 2 h2(#funkce). Syntaxe a sémantika komunikačního protokolu [[AMMI_v3|AMMI]] 

 Následující kapitoly se věnují jednotlivým zařízením, modulům, funkčním celkům které lze skrze [[AMMI_v3|AMMI]] ovládat. Podrobné popisy chování a vlastností naleznete v dokumentaci jednotlivých modulů. 

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

 h3(#ammi_kernel). 2.1 

 h3(#kernel). Jádro ([[AMMI_v3#ammi_kernel|AMMI-KERNEL]]) 

 Jádro AMMI představuje hlavní proces, který řídí, ovládá a plánuje činnost celého PAC. Jádro má načteny všechny HW prostředky, všechna rozšiřující zařízení a ví co kdy a jak provede. Chování jádra AMMI se dá pomocí následujících příkazů upravit. Příkaz vrátí aktuální nastavení, pokud bude délka příkazu 2 B, nebo pokud změníte nastavení. 

 |=. B0     |=.       B1        |\2=.     B2                                              |=. B3                         | 
 |*ΣB*      |*adresa*         |*sdělení*       |hex|popis                               |*data B 1*                    | 
 |/8^.2:3 |/8^.00:FF        |^.AMMI_SILENT |00 |tichý režim bez sdělení             | ENABLE(0x01)/DISABLE(0x00) | 
                          |^.AMMI_ASCII    |01 |pro komunikaci používat ASCII       | ENABLE(0x01)/DISABLE(0x00) | 
                          |^.AMMI_REPEAT |02 |rezervováno                         | ENABLE(0x01)/DISABLE(0x00) | 
                          |^.AMMI_PING     |03 |posílat zpět přijaté B              | ENABLE(0x01)/DISABLE(0x00) | 
                          |^.AMMI_LINE     |04 |každé sdělení má svůj řádek         | ENABLE(0x01)/DISABLE(0x00) | 
                          |^.AMMI_HMI      |05 |rezervováno                         | ENABLE(0x01)/DISABLE(0x00) | 
                          |^.AMMI_BACK     |06 |posílat sdělení procesů na pozadí | ENABLE(0x01)/DISABLE(0x00) | 
                          |^.AMMI_ISR      |07 |zakázat nebo povolit přerušení      | ENABLE(0x01)/DISABLE(0x00) | 

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

 h3(#ammi_translator). 2.2. h3(#translator). Překladač ([[AMMI_v3#ammi_translator|AMMI-TRANSLATOR]]) 

 Překladač vytváří formu pro veškerou komunikaci jak mezi moduly DKE tak i mezi AHMI a PAC. Správné nastavení překladače je důležité pro veškeré komunikační funkce. Překladač umožňuje různé úrovně diagnostiky, volání, hlášení. 

 Nastavení překladače 
 |=. B0     |=.       B1        |\2=.     B2                                          |=. B3                   | 
 |*ΣB*      |*adresa*         |*sdělení*        |hex|popis                          |*data B 1*              | 
 |/10^.2:3|/10^.00:FF       |^.TRNSL_DISABLE|F0 |překladač vypnut               |                        | 
                          |^.TRNSL_ENABLE |F1 |překladač zapnut               |                        | 
                          |^.TRNSL_ERROR    |F8 |neznámá chyba překladače       |                        | 
                          |^.TRNSL_TEXP     |F9 |vypršel čas příjmu dalšího B | pozice nepřijatého B | 
                          |^.TRNSL_SHRT     |FA |přijato málo B                 |                        | 
                          |^.TRNSL_LONG     |FB |přijato mnoho B                |                        | 
                          |^.TRNSL_UCOM     |FC |neznámý příkaz                 |                        | 
                          |^.TRNSL_UVAL     |FD |neznámá nebo chybná hodnota    |                        | 
                          |^.TRNSL_UDEV     |FE |neznámé zařízení               |                        | 
                          |^.TRNSL_NOTME    |FF |příkaz není pro mne            |                        | 

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

 h3(#ammi_sequences). 2.3. Sekvenční řízení ([[AMMI_v3#ammi_sequences|AMMI-SEQUENCES]]) 

 [[AMMI_v3#ammi_sequences|AMMI-SEQUENCES]] 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 metodami [[AMMI_v3#ammi_sequences|AMMI-SEQUENCES]] jsou v [[AMMI_v3#tx|tabulce Struktura odchozího těla rámce]] a jsou to: 

 |=. B0     |=.       B1 |\3=.     B2                                                        |=. B3                                                                   | 
 |*ΣB*      |*adresa*    |*příkaz*             |hex|popis                                |*Vstupní a výstupní parametr*                                           | 
 |/9^.2:3 |/9^.00:FF | SEQUENCES_SET       |40| 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|41| Nastaví čas prvního volání.              | 0 až 65536 jednotek, viz [[AMMI_v3#tc|Hodiny]]                         | 
                     | SEQUENCES_SET_LOPS|42| Nastaví počet volání.                    | 0 až 255                                                               | 
                     | SEQUENCES_SET_PERD|43| Nastaví prodlevu mezi voláními.          | 0 až 255 jednotek, viz [[AMMI_v3#tc|Hodiny]]                           | 
                     | SEQUENCES_SET_STAT|44| Nastaví status volání.                   | Zap, Vyp, Zámek                                                        | 
                     | SEQUENCES_GET       |45| Vrátí všechny vlastnosti sekvence.       | Sled bajtů v posloupnosti seznamu z předchozího odstavce.              | 
                     | SEQUENCES_INIT      |46| Uvolní všechna nastavení sekvencí.       |                                                                        | 
                     | SEQUENCES_RUN       |47| Spustí konkrétní volání.                 | 0 až maximální počet volání                                            | 
                     | SEQUENCES_AUTORUN |48| Spustí automatický běh volání.           |                                                                        | 

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

 

 h3(#ammi_iope). 2.4 Syntaxe a sémantika pro ovládání [[IOPE_v3|IOPE]] modul modulu ([[AMMI_v3#ammi_iope|AMMI-IOPE]]) 

 [[AMMI_v3#ammi_iope|AMMI-IOPE]] je třída s metodami a proměnnými pro komunikaci, ovládání a nastevaení rozšiřujícího modulu [[IOPE_v3|IOPE]]. 

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

 |=. 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*| 
 |/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)|            |            | 


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

 h2(#dev). 3 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|3.x]] [[versions|2.x]] 
 # Developments Issues: #485 
 # "Components List":https://www.tme.eu/cz/Profile/Parking/740721.html 

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

 h2(#atch). 4 Přílohy