Projekt

Obecné

Profil

AMMI v3 » Historie » Verze 5

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

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