Projekt

Obecné

Profil

AMMI v3 » Historie » Verze 3

Jednatel J.H., 2017-11-14 13: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 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
h3(#ammi_sequences). Syntaxe a sémantika pro sekvenční řízení ([[AMMI_v3#ammi_sequences|AMMI-SEQUENCES]])
88
89
[[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:
90 1 Jednatel J.H.
# SEKVENCE, sled bajtů konkrétního příkazu viz [[AMMI_v3#tx|tabulka Struktura odchozího těla rámce]]
91
# STATUS, zapnuto, vypnuto
92
# LOOP, počet opakování příkazu
93
# TIMER, kdy bude příkaz poprvé volán
94
# PERIODE, doba mezi jednotlivými volání příkazu.
95
96 3 Jednatel J.H.
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:
97 1 Jednatel J.H.
98
| Píkaz             | Popis                                  | Vstupní a výstupní parametr                                       |
99
| SEQUENCES_SET     | Nastaví sled bajtů konkrétního volání. | Sled bajtů, viz [[AMMI_v3#tx|tabulka Struktura odchozího těla rámce]]|
100
| SEQUENCES_SET_TIME| Nastaví čas prvního volání.            | 0 až 65536 jednotek, viz [[AMMI_v3#tc|Hodiny]]                       |
101
| SEQUENCES_SET_LOPS| Nastaví počet volání.                  | 0 až 255                                                             |
102
| SEQUENCES_SET_PERD| Nastaví prodlevu mezi voláními.        | 0 až 255 jednotek, viz [[AMMI_v3#tc|Hodiny]]                         |
103
| SEQUENCES_SET_STAT| Nastaví status volání.                 | Zap, Vyp, Zámek                                                      |
104
| SEQUENCES_GET     | Vrátí všechny vlastnosti sekvence.     | Sled bajtů v posloupnosti seznamu z předchozího odstavce.            |
105
| SEQUENCES_INIT    | Uvolní všechna nastavení sekvencí.     |                                                                      |
106
| SEQUENCES_RUN     | Spustí konkrétní volání.               | 0 až maximální počet volání                                          |
107
| SEQUENCES_AUTORUN | Spustí automatický běh volání.         |                                                                      |
108 3 Jednatel J.H.
109
-------------------------------------------------------------
110
111
h3(#ammi_iope). Syntaxe a sémantika pro ovládání [[IOPE_v3|IOPE]] modulu ([[AMMI_v3#ammi_iope|AMMI-IOPE]])
112
113
[[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]].
114
115
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:
116
117
|=. B0 |=.     B1 |=. B2               |\2=.   B3                                                |=. B4                            |=. B5            |=. B6     |
118
|*ΣB*  |*adredsa* |*zařízení*          |*sdělení/příkaz*    |popis                               |*data B 1*                       |*data B 2*       |*data B 3*|*data B 4*|
119
|/28^.4|/28^.1:255|/28^.IOPE(0x01:0xFF)|/6^.COLLECTORS(0xC3)|/6^.nastaví všechny výstupy [[IOPE]]|                                 |                 |          |          |
120
                                                                                                 | 0x00 = vše vypnout              |                 |          |          |
121
                                                                                                 | 0x01 = vše zapnout              |                 |          |          |
122
                                                                                                 | 0x02 = vše invertovat           |                 |          |          |
123
                                                                                                 | 0x03 = náhodná kombinace        |                 |          |          |
124
                                                                                                 | 0xF0 = vrať stavy výstupů       |                 |          |          |
125
                                       |COFF(0xC0)     |vypne výstup [[IOPE]] (vysoká impedance) | 0x00:0x0F = číslo kolektoru     |                 |          |          |
126
                                       |CON(0xC1)      |sepne výstup [[IOPE]] (otevřený kolektor)| 0x00:0x0F = číslo kolektoru     |                 |          |          |
127
                                       |CTGL(0xC2)     |invertuje výstup [[IOPE]]                | 0x00:0x0F = číslo kolektoru     |                 |          |          |
128
                                       |/6^.PWM(0xD0:0xDF)  |/6^.správa PWM pro jednotlivé výst. | 0x00 = PWM vypnout              |                 |          |          |
129
                                                                                                 | 0x01 = PWM zapnout              |                 |          |          |
130
                                                                                                 | 0x02 = PWM perioda              |                 |          |          |
131
                                                                                                 | 0x03 = PWM střída               |                 |          |          |
132
                                                                                                 | 0x04 = efekt1                   |                 |          |          |
133
                                                                                                 | 0xF0 = vrať aktuální nastavení  |                 |          |          |
134
                                       |/4^.ADC(0xA0:0xAF)  |/4^.správa kanálů ADC               | 0x00 = ADC vypnout              |                 |          |          |
135
                                                                                                 | 0x01 = ADC zapnout              |                 |          |          |
136
                                                                                                 | 0x02 = vrať hodnotu ADC kanálu  |                 |          |          |
137
                                                                                                 | 0xF0 = vrať aktuální nastavení  |                 |          |          |
138
                                       |/9^.ENCODER(0x60)   |/9^.příkazy inkrementálního enkodéru| 0x01 = kontrola délky cyklů     |                 |          |          |
139
                                                                                                 | 0x02 = vrátí délka cyklů        |                 |          |          |
140
                                                                                                 | 0x03 = kontrola počtu cyklů     |                 |          |          |
141
                                                                                                 | 0x04 = vrátí počet cyklů        |                 |          |          |
142
                                                                                                 | 0x05 = vrátí směr rotace        |                 |          |          |
143
                                                                                                 | 0x06 = nastaví minimální délu   | DELKA           |          |          |
144
                                                                                                 | 0x07 = nastaví maximální délu   | DELKA(MSB)      |DELKA(LSB)|          |
145
                                                                                                 | 0x08 = vyčistí čítače a hodnoty |                 |          |          |
146
                                                                                                 | 0x09 = nastaví rozlišení čítače | ROZLISENI(0:255)|          |          |
147
148 1 Jednatel J.H.
149
-------------------------------------------------------------
150
151
h2(#dev). Vývojové informace
152
153
Vývojové informace mohou procházet uživatelé s bezpečnostní prověrkou reportér a vyšší.
154
155
# Aktuální vývojová verze: [[versions|2.x]]
156
# Developments Issues: #485
157
# "Components List":https://www.tme.eu/cz/Profile/Parking/740721.html
158
159
-------------------------------------------------------------
160
161
h2(#atch). Přílohy