Project

General

Profile

Advance Machine Machine Interface (AMMI) ver.3.x

Pokročilé rozhraní zařízení-zařízení ve zkratce (AMMI) poskytuje komunikační protokol jednotlivých komponent DKE. AMMI je součástí libovolného 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 DKE-PAC je vhodné instalovat AHMI software. Aktuální vývojová verze AMMI_v3 podporuje PAC-AT90_v3 a má implementovány protokoly:
  • 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.
  • 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.
  • 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.

1. Specifikace komunikačního protokolu 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.

  1. USART
    • TTL (5 V, 3,3 V)
    • RS232
    • USB 2.0
  2. 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ů:
  • 0.B je počet následujících B těla rámce;
  • 1.B je adresa DKE-PAC;
  • 2.B je příkaz/sdělení;
  • 3.BN.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 uvedeny v kapitole 2. Syntaxe.

Komunikace reaguje po přerušení na lince a to tak, že AMMI přijme nultý bajt v kterém je uvedeno kolik následujících bajtů bude posláno. Toto číslo nesmí být menší nebo větší než jsou minima a maxima definovaná použitým slovníkem. Pro aktuální platnou verzi je minimální délka přijaté sekvence 2 B a maximální délka této sekvence je 9 B. Do této délky se nepočítá nultý bajt. Doba mezi přijatými bajty nesmí být delší než nastavená maximální hodnota prodlevy. Tato hodnota je pro aktuální platnou verzi ve výchozím nastavení cca 900 ms.


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 sdělení jsou uvedeny v kapitole Syntaxe.


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

B0 B1 B2 B3 až B9
suma příchozích bajtů adresa volajícího zařízení sdělení nebo příkaz data patřící sdělení nebo příkazu

Jednotlivé příkazy a sdělení jsou uvedeny v kapitole Syntaxe.


1.3 Příklad komunikace a)

  1. aplikace otevře TCP port
  2. aplikace pošle |0x03|0x01|0xC3|0x03|
  3. 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.


1.4 Příklad komunikace b)

  1. aplikace otevře TCP port
  2. aplikace pošle |0x03|0x01|0x01|0x0E|
  3. PAC-AT90 pošle |0x03|0x01|0x01|0x0E|
  4. aplikace pošle |0x04|0x01|0xC3|0x32E6|
  5. PAC-AT90 pošle |0x04|0x01|0xC3|0x32E6|
  6. 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.


2 Syntaxe a sémantika komunikačního protokolu AMMI

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


2.1 Jádro (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 B2 B3
ΣB adresa sdělení hex popis data B 1
2:3 00:FF AMMI_SILENT 00 tichý režim bez sdělení ENABLE/DISABLE
AMMI_ASCII 01 pro komunikaci používat ASCII ENABLE/DISABLE
AMMI_REPEAT 02 rezervováno ENABLE/DISABLE
AMMI_PING 03 posílat zpět přijatou sekvenci B ENABLE/DISABLE
AMMI_LINE 04 každé sdělení má svůj řádek ENABLE/DISABLE
AMMI_HMI 05 rezervováno ENABLE/DISABLE
AMMI_BACK 06 posílat sdělení procesů na pozadí ENABLE/DISABLE
AMMI_ISR 07 zakázat nebo povolit přerušení ENABLE/DISABLE

Pokud je zapnuto AMMI_ASCII bude před a za sekvenci přidán symbol '|'


2.2 Sériová komunikace UART (AMMI-UART)

UART je jednou z několika sériových komunikací aplikace AMMI. UART má následující volby:

B0 B1 B2 B3 B4
ΣB adresa sdělení hex popis data B 1 data B 2
2:4 00:FF UART_BAUD 90 nastaví/vrátí komunikační rychlost BAUD_B1 BAUD_B2
UART_PUTC 95 pro komunikaci používat ASCII DATA
UART_PUTH 96 rezervováno DATA
UART_VALUE 97 posílat zpět přijatou sekvenci B DATA
UART_VALUES 98 každé sdělení má svůj řádek DATA
Baud Rate (bps) Zkratka BAUD_B1 BAUD_B2
2400 24 00 18
4800 48 00 30
9600 96 00 60
14400 144 00 90
19200 192 00 C0
28800 288 01 20
38400 384 01 80
Příklady:
  • 04 01 90 00 C0 nastaví komunikační rychlost UARTu zařízení na adrese 01 na 19200 bps
  • 02 01 90 vrátí nastavenou komunikační rychlost UARTu zařízení připojeného na adrese 01

2.2. Překladač (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 B2 B3
ΣB adresa sdělení hex popis data B 1
2:3 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

2.3. Sekvenční řízení (AMMI-SEQUENCES)

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

Příkazy pro práci s metodami AMMI-SEQUENCES jsou v tabulce Struktura odchozího těla rámce a jsou to:

B0 B1 B2 B3
ΣB adresa příkaz hex popis Vstupní a výstupní parametr
2:3 00:FF SEQUENCES_SET 40 Nastaví sled bajtů konkrétního volání. Sled bajtů, viz tabulka Struktura odchozího těla rámce
SEQUENCES_SET_TIME 41 Nastaví čas prvního volání. 0 až 65536 jednotek, viz 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 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í.

2.4 IOPE modul (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.

Příkazy pro práci s metodami AMMI-IOPE jsou v tabulce Struktura odchozího těla rámce a jsou to:

B0 B1 B2 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
4 1:255 IOPE COLLECTORS 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 vypne výstup IOPE (vysoká impedance) 0x00:0x0F = číslo kolektoru
CON sepne výstup IOPE (otevřený kolektor) 0x00:0x0F = číslo kolektoru
CTGL invertuje výstup IOPE 0x00:0x0F = číslo kolektoru
PWM 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í
ADC správa kanálů ADC 0x00 = ADC vypnout
0x01 = ADC zapnout
0x02 = vrať hodnotu ADC kanálu
0xF0 = vrať aktuální nastavení
ENCODER 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 DELKA
0x08 = vyčistí čítače a hodnoty
0x09 = nastaví rozlišení čítače ROZLISENI

3 Vývojové informace

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

  1. Aktuální vývojová verze: 3.x
  2. Developments Issues: #485
  3. Components List

4 Přílohy