Projekt

Obecné

Profil

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