Projekt

Obecné

Profil

AMMI v3 » Historie » Verze 11

Jednatel J.H., 2019-11-21 08:40

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