Projekt

Obecné

Profil

AMMI v3 » Historie » Verze 2

Jednatel J.H., 2017-09-29 19:46

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
|/28^.4|/28^.1:255|/28^.IOPE(0x01:0xFF)|/6^.COLLECTORS(0xC3)|/6^.nastaví všechny výstupy [[IOPE]]|                                 |                 |          |          |
45
                                                                                                 | 0x00 = vše vypnout              |                 |          |          |
46
                                                                                                 | 0x01 = vše zapnout              |                 |          |          |
47
                                                                                                 | 0x02 = vše invertovat           |                 |          |          |
48
                                                                                                 | 0x03 = náhodná kombinace        |                 |          |          |
49
                                                                                                 | 0xF0 = vrať stavy výstupů       |                 |          |          |
50
                                       |COFF(0xC0)     |vypne výstup [[IOPE]] (vysoká impedance) | 0x00:0x0F = číslo kolektoru     |                 |          |          |
51
                                       |CON(0xC1)      |sepne výstup [[IOPE]] (otevřený kolektor)| 0x00:0x0F = číslo kolektoru     |                 |          |          |
52
                                       |CTGL(0xC2)     |invertuje výstup [[IOPE]]                | 0x00:0x0F = číslo kolektoru     |                 |          |          |
53
                                       |/6^.PWM(0xD0:0xDF)  |/6^.správa PWM pro jednotlivé výst. | 0x00 = PWM vypnout              |                 |          |          |
54
                                                                                                 | 0x01 = PWM zapnout              |                 |          |          |
55
                                                                                                 | 0x02 = PWM perioda              |                 |          |          |
56
                                                                                                 | 0x03 = PWM střída               |                 |          |          |
57
                                                                                                 | 0x04 = efekt1                   |                 |          |          |
58
                                                                                                 | 0xF0 = vrať aktuální nastavení  |                 |          |          |
59
                                       |/4^.ADC(0xA0:0xAF)  |/4^.správa kanálů ADC               | 0x00 = ADC vypnout              |                 |          |          |
60
                                                                                                 | 0x01 = ADC zapnout              |                 |          |          |
61
                                                                                                 | 0x02 = vrať hodnotu ADC kanálu  |                 |          |          |
62
                                                                                                 | 0xF0 = vrať aktuální nastavení  |                 |          |          |
63
                                       |/9^.ENCODER(0x60)   |/9^.příkazy inkrementálního enkodéru| 0x01 = kontrola délky cyklů     |                 |          |          |
64
                                                                                                 | 0x02 = vrátí délka cyklů        |                 |          |          |
65
                                                                                                 | 0x03 = kontrola počtu cyklů     |                 |          |          |
66
                                                                                                 | 0x04 = vrátí počet cyklů        |                 |          |          |
67
                                                                                                 | 0x05 = vrátí směr rotace        |                 |          |          |
68
                                                                                                 | 0x06 = nastaví minimální délu   | DELKA           |          |          |
69
                                                                                                 | 0x07 = nastaví maximální délu   | DELKA(MSB)      |DELKA(LSB)|          |
70
                                                                                                 | 0x08 = vyčistí čítače a hodnoty |                 |          |          |
71
                                                                                                 | 0x09 = nastaví rozlišení čítače | ROZLISENI(0:255)|          |          |
72
73
74
h3. Struktura příchozího těla rámce ([[PAC-AT90]] posílá do aplikace bajty skrze předchozí vrstvy)
75
76
|1. B     |  2. B  | 3. B    | 4.-5. B |
77
|*počet B*|*adresa*|*sdělení*|*hodnota*|
78
79
|*sdělení*     |hex kód | popis                                     |*hodnota*                     |*počet B*|
80
|    OUTPUTS   |    0xC3| Informace o aktivním nastavení výstupů [[IOPE]]| sekvence bitů (1=ON, 0=OFF)     |3|
81
|/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|
82
                                                                    | UNKNOW_COM (0x0D) neznámý příkaz     |2|
83
                                                                    | UNKNOW_VAL (0x0E) neplatná hodnota   |2|
84
                                                                    | TIMEEXPIRE (0x0A) vypršel čas komunikace |2|
85
                                                                    | ERROR_PROCS (0x0B) chyba při provádění příkazu |2|
86
                                                                    | ERROR_TRANS (0x0F) chyba překladače  |2|
87
88
h3. Příklad komunikace a)
89
90
# aplikace otevře TCP port
91
# aplikace pošle |0x03|0x01|0xC3|0x03|
92
# aplikace zavře TCP port
93
94
Aplikace přikázala skrze Wi-Fi aby [[PAC-AT90]] na adrese 1 náhodně nastavil výstupy [[IOPE]] na 1 a 0. 
95
96
h3. Příklad komunikace b)
97
98
# aplikace otevře TCP port
99
# aplikace pošle |0x03|0x01|0x01|0x0E|
100
# [[PAC-AT90]] pošle |0x03|0x01|0x01|0x0E|
101
# aplikace pošle |0x04|0x01|0xC3|0x32E6|
102
# [[PAC-AT90]] pošle |0x04|0x01|0xC3|0x32E6|
103
# aplikace zavře TCP port
104
105
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.
106 2 Jednatel J.H.
107
-------------------------------------------------------------
108
109
h2(#funkce). Vlastnosti (knihovny) základního balíčku [[AMMI_v3|AMMI]]
110
111
h3(#ammi_sequences). Sekvence (AMMI-SEQUENCES)
112
113
Sekvence 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:
114
# SEKVENCE, sled bajtů konkrétního příkazu viz [[AMMI_v3#tx|tabulka Struktura odchozího těla rámce]]
115
# STATUS, zapnuto, vypnuto
116
# LOOP, počet opakování příkazu
117
# TIMER, kdy bude příkaz poprvé volán
118
# PERIODE, doba mezi jednotlivými volání příkazu.
119
120
Příkazy pro práci s balíkem AMMI-SEQUENCES jsou v [[AMMI_v3#tx|tabulce Struktura odchozího těla rámce]] a jsou to:
121
122
| Píkaz             | Popis                                  | Vstupní a výstupní parametr                                       |
123
| SEQUENCES_SET     | Nastaví sled bajtů konkrétního volání. | Sled bajtů, viz [[AMMI_v3#tx|tabulka Struktura odchozího těla rámce]]|
124
| SEQUENCES_SET_TIME| Nastaví čas prvního volání.            | 0 až 65536 jednotek, viz [[AMMI_v3#tc|Hodiny]]                       |
125
| SEQUENCES_SET_LOPS| Nastaví počet volání.                  | 0 až 255                                                             |
126
| SEQUENCES_SET_PERD| Nastaví prodlevu mezi voláními.        | 0 až 255 jednotek, viz [[AMMI_v3#tc|Hodiny]]                         |
127
| SEQUENCES_SET_STAT| Nastaví status volání.                 | Zap, Vyp, Zámek                                                      |
128
| SEQUENCES_GET     | Vrátí všechny vlastnosti sekvence.     | Sled bajtů v posloupnosti seznamu z předchozího odstavce.            |
129
| SEQUENCES_INIT    | Uvolní všechna nastavení sekvencí.     |                                                                      |
130
| SEQUENCES_RUN     | Spustí konkrétní volání.               | 0 až maximální počet volání                                          |
131
| SEQUENCES_AUTORUN | Spustí automatický běh volání.         |                                                                      |
132 1 Jednatel J.H.
133
-------------------------------------------------------------
134
135
h2(#dev). Vývojové informace
136
137
Vývojové informace mohou procházet uživatelé s bezpečnostní prověrkou reportér a vyšší.
138
139
# Aktuální vývojová verze: [[versions|2.x]]
140
# Developments Issues: #485
141
# "Components List":https://www.tme.eu/cz/Profile/Parking/740721.html
142
143
-------------------------------------------------------------
144
145
h2(#atch). Přílohy