AMMI v3 » Historie » Verze 6
Jednatel J.H., 2017-12-07 15:32
1 | 1 | Jednatel J.H. | {{>toc}} |
---|---|---|---|
2 | |||
3 | h1(#top). Advance Machine Machine Interface ([[AMMI_v3|AMMI]]) ver.3.x |
||
4 | |||
5 | 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: |
||
6 | * [[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. |
||
7 | * [[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. |
||
8 | * [[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. |
||
9 | |||
10 | ------------------------------------------------------------- |
||
11 | |||
12 | 6 | Jednatel J.H. | h2(#spec). 1 Specifikace komunikačního protokolu [[AMMI_v3|AMMI]] |
13 | 1 | Jednatel J.H. | |
14 | 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]]. |
||
15 | |||
16 | ## USART |
||
17 | *** TTL (5 V, 3,3 V) |
||
18 | *** RS232 |
||
19 | *** USB 2.0 |
||
20 | ## IEEE 802.11 (Wi-Fi) |
||
21 | *** 2,4 GHz |
||
22 | *** TCP/UDP |
||
23 | *** client/server |
||
24 | |||
25 | 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ů: |
||
26 | # B je počet následujících B těla rámce; |
||
27 | # B je adresa [[PAC-AT90|DKE-PAC]]; |
||
28 | # B je adresa zařízení; |
||
29 | # B je příkaz/sdělení; |
||
30 | # B až N. B jsou určeny pro data zařízení, data příkazu nebo data sdělení. |
||
31 | |||
32 | Zařízení, sdělení, příkazy a jejich možné hodnoty jsou popsány níže uvedenou tabulkou (slovníkem [[AMMI_v3|AMMI]]). |
||
33 | |||
34 | 6 | Jednatel J.H. | ------------------------------------------------------------- |
35 | 1 | Jednatel J.H. | |
36 | 6 | Jednatel J.H. | h3(#tx). 1.1 Struktura odchozího těla rámce (aplikace posílá do [[PAC-AT90]] bajty skrze předchozí vrstvy) |
37 | |||
38 | 1 | Jednatel J.H. | |=. *B0* |=. *B1* |=. *B2* |=. *B3 až B9* | |
39 | |suma posílaných bajtů|adresa volaného zařízení |sdělení nebo příkaz |data patřící sdělení nebo příkazu | |
||
40 | |||
41 | 6 | Jednatel J.H. | Jednotlivé příkazy a sdělení jsou uvedeny v kapitole [[AMMI_v3#ammi_syntaxe|Syntaxe]]. |
42 | 1 | Jednatel J.H. | |
43 | 6 | Jednatel J.H. | ------------------------------------------------------------- |
44 | 1 | Jednatel J.H. | |
45 | 6 | Jednatel J.H. | h3. 1.2 Struktura příchozího těla rámce ([[PAC-AT90]] posílá do aplikace bajty skrze předchozí vrstvy) |
46 | 1 | Jednatel J.H. | |
47 | 6 | Jednatel J.H. | |=. *B0* |=. *B1* |=. *B2* |=. *B3 až B9* | |
48 | |suma příchozích bajtů|adresa volajícího zařízení |sdělení nebo příkaz |data patřící sdělení nebo příkazu | |
||
49 | 1 | Jednatel J.H. | |
50 | 6 | Jednatel J.H. | Jednotlivé příkazy a sdělení jsou uvedeny v kapitole [[AMMI_v3#ammi_syntaxe|Syntaxe]]. |
51 | 1 | Jednatel J.H. | |
52 | 6 | Jednatel J.H. | ------------------------------------------------------------- |
53 | |||
54 | h3. 1.3 Příklad komunikace a) |
||
55 | |||
56 | 1 | Jednatel J.H. | # aplikace otevře TCP port |
57 | # aplikace pošle |0x03|0x01|0xC3|0x03| |
||
58 | # aplikace zavře TCP port |
||
59 | |||
60 | Aplikace přikázala skrze Wi-Fi aby [[PAC-AT90]] na adrese 1 náhodně nastavil výstupy [[IOPE]] na 1 a 0. |
||
61 | |||
62 | 6 | Jednatel J.H. | ------------------------------------------------------------- |
63 | 1 | Jednatel J.H. | |
64 | 6 | Jednatel J.H. | h3. 1.4 Příklad komunikace b) |
65 | |||
66 | 1 | Jednatel J.H. | # aplikace otevře TCP port |
67 | # aplikace pošle |0x03|0x01|0x01|0x0E| |
||
68 | # [[PAC-AT90]] pošle |0x03|0x01|0x01|0x0E| |
||
69 | # aplikace pošle |0x04|0x01|0xC3|0x32E6| |
||
70 | # [[PAC-AT90]] pošle |0x04|0x01|0xC3|0x32E6| |
||
71 | # aplikace zavře TCP port |
||
72 | |||
73 | 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. |
||
74 | |||
75 | ------------------------------------------------------------- |
||
76 | 3 | Jednatel J.H. | |
77 | 6 | Jednatel J.H. | h2(#ammi_syntaxe). 2 Syntaxe a sémantika komunikačního protokolu [[AMMI_v3|AMMI]] |
78 | 3 | Jednatel J.H. | |
79 | 1 | Jednatel J.H. | 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ů. |
80 | 3 | Jednatel J.H. | |
81 | 1 | Jednatel J.H. | ------------------------------------------------------------- |
82 | 4 | Jednatel J.H. | |
83 | 6 | Jednatel J.H. | h3(#ammi_kernel). 2.1 Jádro ([[AMMI_v3#ammi_kernel|AMMI-KERNEL]]) |
84 | 4 | Jednatel J.H. | |
85 | 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í. |
||
86 | |||
87 | |=. B0 |=. B1 |\2=. B2 |=. B3 | |
||
88 | |*ΣB* |*adresa* |*sdělení* |hex|popis |*data B 1* | |
||
89 | |/8^.2:3 |/8^.00:FF |^.AMMI_SILENT |00 |tichý režim bez sdělení | ENABLE(0x01)/DISABLE(0x00) | |
||
90 | |^.AMMI_ASCII |01 |pro komunikaci používat ASCII | ENABLE(0x01)/DISABLE(0x00) | |
||
91 | |^.AMMI_REPEAT |02 |rezervováno | ENABLE(0x01)/DISABLE(0x00) | |
||
92 | |^.AMMI_PING |03 |posílat zpět přijaté B | ENABLE(0x01)/DISABLE(0x00) | |
||
93 | |^.AMMI_LINE |04 |každé sdělení má svůj řádek | ENABLE(0x01)/DISABLE(0x00) | |
||
94 | |^.AMMI_HMI |05 |rezervováno | ENABLE(0x01)/DISABLE(0x00) | |
||
95 | |^.AMMI_BACK |06 |posílat sdělení procesů na pozadí | ENABLE(0x01)/DISABLE(0x00) | |
||
96 | |^.AMMI_ISR |07 |zakázat nebo povolit přerušení | ENABLE(0x01)/DISABLE(0x00) | |
||
97 | |||
98 | ------------------------------------------------------------- |
||
99 | |||
100 | 6 | Jednatel J.H. | h3(#ammi_translator). 2.2. Překladač ([[AMMI_v3#ammi_translator|AMMI-TRANSLATOR]]) |
101 | 4 | Jednatel J.H. | |
102 | 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í. |
||
103 | |||
104 | Nastavení překladače |
||
105 | |=. B0 |=. B1 |\2=. B2 |=. B3 | |
||
106 | |*ΣB* |*adresa* |*sdělení* |hex|popis |*data B 1* | |
||
107 | |/10^.2:3|/10^.00:FF |^.TRNSL_DISABLE|F0 |překladač vypnut | | |
||
108 | |^.TRNSL_ENABLE |F1 |překladač zapnut | | |
||
109 | |^.TRNSL_ERROR |F8 |neznámá chyba překladače | | |
||
110 | |^.TRNSL_TEXP |F9 |vypršel čas příjmu dalšího B | pozice nepřijatého B | |
||
111 | |^.TRNSL_SHRT |FA |přijato málo B | | |
||
112 | |^.TRNSL_LONG |FB |přijato mnoho B | | |
||
113 | |^.TRNSL_UCOM |FC |neznámý příkaz | | |
||
114 | |^.TRNSL_UVAL |FD |neznámá nebo chybná hodnota | | |
||
115 | |^.TRNSL_UDEV |FE |neznámé zařízení | | |
||
116 | |^.TRNSL_NOTME |FF |příkaz není pro mne | | |
||
117 | |||
118 | ------------------------------------------------------------- |
||
119 | |||
120 | 6 | Jednatel J.H. | h3(#ammi_sequences). 2.3. Sekvenční řízení ([[AMMI_v3#ammi_sequences|AMMI-SEQUENCES]]) |
121 | 1 | Jednatel J.H. | |
122 | [[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: |
||
123 | # SEKVENCE, sled bajtů konkrétního příkazu viz [[AMMI_v3#tx|tabulka Struktura odchozího těla rámce]] |
||
124 | # STATUS, zapnuto, vypnuto |
||
125 | # LOOP, počet opakování příkazu |
||
126 | # TIMER, kdy bude příkaz poprvé volán |
||
127 | # PERIODE, doba mezi jednotlivými volání příkazu. |
||
128 | |||
129 | 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: |
||
130 | 4 | Jednatel J.H. | |
131 | |=. B0 |=. B1 |\3=. B2 |=. B3 | |
||
132 | |*ΣB* |*adresa* |*příkaz* |hex|popis |*Vstupní a výstupní parametr* | |
||
133 | |/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]]| |
||
134 | | SEQUENCES_SET_TIME|41| Nastaví čas prvního volání. | 0 až 65536 jednotek, viz [[AMMI_v3#tc|Hodiny]] | |
||
135 | | SEQUENCES_SET_LOPS|42| Nastaví počet volání. | 0 až 255 | |
||
136 | | SEQUENCES_SET_PERD|43| Nastaví prodlevu mezi voláními. | 0 až 255 jednotek, viz [[AMMI_v3#tc|Hodiny]] | |
||
137 | | SEQUENCES_SET_STAT|44| Nastaví status volání. | Zap, Vyp, Zámek | |
||
138 | | SEQUENCES_GET |45| Vrátí všechny vlastnosti sekvence. | Sled bajtů v posloupnosti seznamu z předchozího odstavce. | |
||
139 | | SEQUENCES_INIT |46| Uvolní všechna nastavení sekvencí. | | |
||
140 | | SEQUENCES_RUN |47| Spustí konkrétní volání. | 0 až maximální počet volání | |
||
141 | 3 | Jednatel J.H. | | SEQUENCES_AUTORUN |48| Spustí automatický běh volání. | | |
142 | |||
143 | ------------------------------------------------------------- |
||
144 | |||
145 | 6 | Jednatel J.H. | h3(#ammi_iope). 2.4 [[IOPE_v3|IOPE]] modul ([[AMMI_v3#ammi_iope|AMMI-IOPE]]) |
146 | 3 | Jednatel J.H. | |
147 | [[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]]. |
||
148 | |||
149 | 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: |
||
150 | |||
151 | |=. B0 |=. B1 |=. B2 |\2=. B3 |=. B4 |=. B5 |=. B6 | |
||
152 | |*ΣB* |*adredsa* |*zařízení* |*sdělení/příkaz* |popis |*data B 1* |*data B 2* |*data B 3*|*data B 4*| |
||
153 | |/28^.4|/28^.1:255|/28^.IOPE(0x01:0xFF)|/6^.COLLECTORS(0xC3)|/6^.nastaví všechny výstupy [[IOPE]]| | | | | |
||
154 | | 0x00 = vše vypnout | | | | |
||
155 | | 0x01 = vše zapnout | | | | |
||
156 | | 0x02 = vše invertovat | | | | |
||
157 | | 0x03 = náhodná kombinace | | | | |
||
158 | | 0xF0 = vrať stavy výstupů | | | | |
||
159 | |COFF(0xC0) |vypne výstup [[IOPE]] (vysoká impedance) | 0x00:0x0F = číslo kolektoru | | | | |
||
160 | |CON(0xC1) |sepne výstup [[IOPE]] (otevřený kolektor)| 0x00:0x0F = číslo kolektoru | | | | |
||
161 | |CTGL(0xC2) |invertuje výstup [[IOPE]] | 0x00:0x0F = číslo kolektoru | | | | |
||
162 | |/6^.PWM(0xD0:0xDF) |/6^.správa PWM pro jednotlivé výst. | 0x00 = PWM vypnout | | | | |
||
163 | 1 | Jednatel J.H. | | 0x01 = PWM zapnout | | | | |
164 | 3 | Jednatel J.H. | | 0x02 = PWM perioda | | | | |
165 | | 0x03 = PWM střída | | | | |
||
166 | 1 | Jednatel J.H. | | 0x04 = efekt1 | | | | |
167 | 3 | Jednatel J.H. | | 0xF0 = vrať aktuální nastavení | | | | |
168 | |/4^.ADC(0xA0:0xAF) |/4^.správa kanálů ADC | 0x00 = ADC vypnout | | | | |
||
169 | | 0x01 = ADC zapnout | | | | |
||
170 | | 0x02 = vrať hodnotu ADC kanálu | | | | |
||
171 | 1 | Jednatel J.H. | | 0xF0 = vrať aktuální nastavení | | | | |
172 | 3 | Jednatel J.H. | |/9^.ENCODER(0x60) |/9^.příkazy inkrementálního enkodéru| 0x01 = kontrola délky cyklů | | | | |
173 | | 0x02 = vrátí délka cyklů | | | | |
||
174 | | 0x03 = kontrola počtu cyklů | | | | |
||
175 | | 0x04 = vrátí počet cyklů | | | | |
||
176 | | 0x05 = vrátí směr rotace | | | | |
||
177 | | 0x06 = nastaví minimální délu | DELKA | | | |
||
178 | | 0x07 = nastaví maximální délu | DELKA(MSB) |DELKA(LSB)| | |
||
179 | | 0x08 = vyčistí čítače a hodnoty | | | | |
||
180 | 1 | Jednatel J.H. | | 0x09 = nastaví rozlišení čítače | ROZLISENI(0:255)| | | |
181 | |||
182 | |||
183 | ------------------------------------------------------------- |
||
184 | |||
185 | 6 | Jednatel J.H. | h2(#dev). 3 Vývojové informace |
186 | 1 | Jednatel J.H. | |
187 | Vývojové informace mohou procházet uživatelé s bezpečnostní prověrkou reportér a vyšší. |
||
188 | |||
189 | 6 | Jednatel J.H. | # Aktuální vývojová verze: [[versions|3.x]] |
190 | 1 | Jednatel J.H. | # Developments Issues: #485 |
191 | # "Components List":https://www.tme.eu/cz/Profile/Parking/740721.html |
||
192 | |||
193 | ------------------------------------------------------------- |
||
194 | |||
195 | 6 | Jednatel J.H. | h2(#atch). 4 Přílohy |