Projekt

Obecné

Profil

AMMI v3 » Historie » Verze 4

Jednatel J.H., 2017-12-07 15:16

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