https//www.racom.eu/cz/support/protocols_docum/bc262__modex.html
TRANSPARENTNÍ REŽIM
- příklad komunikace Radioslave - Radiomaster.
Radioslave \|/ ....... \|/ Radiomaster
| |
S00 - 691122FF -RFC RFC- 69112205 - SCC0
SPe0t SPe0t
(m)RS (t)ON (m)RM (t)ON
(S)(a)FF (M)(f)691122FF
(T)(a)OFF (0)5
(f)ON (p)200*10
(d)OFF (t)200*100
(C)ON (T)(a)ON
(f)ON
(d)ON
(C)ON
Funkcí "its" vyšleme z Radioslave data 0503AAAA na adresu 69112205. Data splňují
podmínky pro kontrolu formátu funkce a adresy. Protokol v Radiomasterovi má
zapnutou funkci "CRC (a)uto" a doplní proto CRC:
>>
Monitoring: source 691122FF|5.
09:44:36.877|69112205 691122FF|69112205 691122FF|R01I IN 4N09 2dat
0503 AAAA
Monitoring: source 69112205|5.
09:44:03.497| |00000005 000000FF|S00I IN 4|09 2user
0503 AAAA
09:44:04.044 tx 6 | S00
0503 AAAA 0E37
Nyní vypneme v Radiomasterovi funkci "CRC (a)uto" a z Radioslave odešleme funkcí
"in" data 0503 AAAA 0E37. Pak s prodlevou kratší než timeout "SPe0tMt" vložíme
funkcí "in" odpověď 0503 AAAA 0E37 do Radiomastera:
>>
Monitoring: source 691122FF|1.
09:51:20.837 rxsim 6 | S00
0503 AAAA 0E37
09:51:20.852|69112205 691122FF|69112205 691122FF|R01I IN 6N89 0dat
0503 AAAA 0E37
Monitoring: source 69112205|4.
09:50:47.517| |00000005 000000FF|S00I IN 6|89 0user
0503 AAAA 0E37
09:50:49.266 tx 6 | S00
0503 AAAA 0E37
09:50:52.929 rxsim 6 | S00
0503 AAAA 0E37
09:50:52.944| |000000FF 00000005|S00I OUT 6| 89 0user
0503 AAAA 0E37
Monitoring: source 691122FF|2.
09:51:28.272|691122FF 69112205|691122FF 69112205|R01I OUT 6nC9r2dat
0503 AAAA 0E37
09:51:28.273 tx 6 | S00
0503 AAAA 0E37
Data, která vyhovují podmínkám kontroly funkce, adresy a CRC jsou přenášena
protokolem Modbus beze změny.
PAKETOVÝ REŽIM
- příklad komunikace Radiomaster - Slave.
Radioslave \|/....\|/ Radiomaster Slave simulator
| |
691122FF -RFC RFC- 69112205 - SCC ==== SCC - 00000001
SPe0t SPe0t
(m)RM (p)ON (m)RS (p)ON
(M)(f)691122FF (S)(a)5
(a)FF
(0)5
(p)200*10
(t)200*100
(P)(A)0 (P)(A)0
(N)2000 (N)2000
(H)1000 (H)1000
(s)(d)1
Adresa Slave simulatoru 00000001 je libovolná nenulová, adresa Slave je určena
parametrem "SPe0tSa".
Radiomaster se s periodou "Spe0tMp" ptá Slave na obsah jeho deskriptoru na adrese
"SPe0tPH", to je 1000.
Funkcí "its" vyšleme z Radiomastera na vlastní adresu (tedy do SCC0) data AAAA.
Data jsou vložena do bufferu N2H a pak jsou dále zachyceným postupem přenesena do
bufferu N2H ve Slave:
Monitoring: source 69112205|1.
07:44:06.834 tx 8 | S00
0503 1000 0001 814E = Slave 5, máš pro mne data ?
07:44:06.851 rx;i 7 | S00
0503 0200 0049 84 = nemám
Send packet: (N):1 (d):69112205h
(t)ype:0009h
s(o)urce:691122FFh = simulace adresy Radioslave
d(a)ta:.. = data AAAA hexadecimálně
random data (l)ength:0byte
(r)epeat period:0ms + (j)itter:0ms
IP (P)ing
(s)tart r(e)port sto(p)
(q)uit
>>s
07:44:08.835 tx 8 | S00
0503 1000 0001 814E
07:44:08.851 rx;i 7 | S00
0503 0200 0049 84
07:44:09.198| |69112205 691122FF|S00I IN 2|09 6user
AAAA = prot. Radiomaster dostal data pro Slave 5
07:44:10.836 tx 8 | S00
0503 2000 0001 8E4E = Slave 5, máš volný buffer H2N ?
07:44:10.852 rx;i 7 | S00
0503 0200 0049 84 = ano
07:44:10.853 tx 19 | S00
0510 2000 0005 0A10 0809 0769 1122 FFAA AA82 73 = zapiš si zprávu
07:44:10.877 rx;i 8 | S00
0510 2000 0005 0A4E = zapsal jsem
07:44:12.837 tx 8 | S00
0503 1000 0001 814E = Slave 5, máš pro mne data ?
07:44:12.853 rx;i 7 | S00
0503 0200 0049 84 = nemám ... pokračují dotazy
07:44:14.838 tx 8 | S00
0503 1000 0001 814E
07:44:14.854 rx;i 7 | S00
0503 0200 0049 84
CU ve svojí normální funkci RM zapisuje data do bufferu N2H, čte z H2N. Parametr
"SPe0tsd1" (= libovolná nenulová adresa) přehodí tyto směry, tedy Slave simulator
bude zapisovat do bufferu H2N na adresu 1000:
Slave >
13:24:51.176 rx;i 8 | S00
0503 1000 0001 814E = Slave 5, máš pro mne data ?
13:24:51.177 tx 7 | S00
0503 0200 0049 84 = nemám
13:24:51.725| |00000001 691122FF|S00I IN 2|09 6user
BBBB = prot. Slave sim. dostal data pro Mastera
13:24:53.177 rx;i 8 | S00
0503 1000 0001 814E = Slave 5, máš pro mne data ?
13:24:53.178 tx 7 | S00
0503 0220 0851 82 = mám 08 byte
13:24:53.194 rx;i 8 | S00
0503 1000 0005 808D = pošli 5 wordů od adresy 1000,
13:24:53.195 tx 15 | S00 to je včetně deskriptoru 10byte
0503 0A20 0809 8669 1122 FFBB BB96 CB = posílám 10 byte
13:24:53.221 rx;i 11 | S00
0510 1000 0001 0200 0085 51 = smaž deskriptor
13:24:53.222 tx 8 | S00
0510 1000 0001 048D = smazal jsem deskriptor
13:24:55.178 rx;i 8 | S00
0503 1000 0001 814E = ... pokračují dotazy na Slave
13:24:55.179 tx 7 | S00
0503 0200 0049 84
13:24:57.179 rx;i 8 | S00
0503 1000 0001 814E
Radiomaster:
Monitoring: source 69112205|3.
13:24:53.295| |691122FF 69112205|S00I OUT 2| 89 6user
BBBB
13:24:53.296|691122FF 69112205|691122FF 69112205|R01I IN 2N89 6dat
BBBB
13:24:53.298|691122FF 69112205|691122FF 69112205|036 RFTX 2*89 6dat
BBBB
13:24:53.340|69112205 691122FF|0005F7FF 1FB20031|036*29~ 45 0|06 ack
Radiomaster přijme z Modbusu data BBBB i adresu dst 691122FF. Data odešle paketem
MORSE na tuto adresu destination. Adresa může směřovat na Radioslave (a dále na
Mastera Modbusu) nebo na jiného Radiomastera.
Připojení dvou (až čtyř) Slave k Radiomasterovi:
Radioslave \|/....\|/ Radiomaster Slave simulator
| | RS458
691122FF -RFC RFC- 69112205 - SCC ===== SCC - 00000005
== SCC - 00000006
Ne1MLn = Multiaddressing
1l1
Tl1 p6
n5 Slave simulator 00000005:
SPe0t SPe0t
(m)RM (p)ON (m)RS (p)ON
(M)(f)691122FF (S)(a)5
(a)FF (P)(A)0
(0)5 (N)2000
(1)6 (H)1000
(p)200*10 (s)(d)1
(t)200*100 Slave simulator 00000006:
(P)(A)0 SPe0t
(N)2000 (m)RS (p)ON
(H)1000 (S)(a)6
(P)(A)0
(N)2000
(H)1000
(s)(d)1
Následující monitoring zachycuje situaci, kdy je připojen pouze Slave 6, proto
nepřicházejí odpovědi od Slave 5 a po prodlevě "SPe0tMt" pokračuje Radiomaster v
obvolávání svých Slave:
Monitoring: source 69112205|3.
11:22:04.079| |69112206 691122FF|S00I IN 2|09 0user
AAAA
Monitoring: source 00000001|1.
11:21:45.673 rx;i 8 | S00
0603 1000 0001 817D = dotaz na Slave 6
11:21:45.674 tx 7 | S00
0603 0200 000D 84 = odpověď od Slave 6
11:21:47.673 rx;i 8 | S00
0503 1000 0001 814E = dotaz na Slave 5, čekání
11:22:07.684 rx;i 8 | S00
0603 2000 0001 8E7D = dialog se Slave 6
11:22:07.685 tx 7 | S00
0603 0200 000D 84
11:22:07.707 rx;i 19 | S00
0610 2000 0005 0A00 0809 0069 1122 FFAA AA05 D6
11:22:07.709 tx 8 | S00
0610 2000 0005 0A7D
11:22:09.684 rx;i 8 | S00
0503 1000 0001 814E = dotaz na Slave 5, čekání
11:22:31.695 rx;i 8 | S00
0603 1000 0001 817D = dotaz na Slave 6 ...
11:22:31.696 tx 7 | S00
0603 0200 000D 84
11:22:33.696 rx;i 8 | S00
0503 1000 0001 814E
CACHE REŽIM
- odeslání paketu Slave -> Radiomaster -> Radioslave
Radioslave \|/....\|/ Radiomaster Slave simulator
| |
691122FF -RFC RFC- 69112205 - SCC ==== SCC - 00000001
SPe0t SPe0t SPe0t
(m)RS (c)ON (m)RM (c)ON (m)RS (p)ON
(S)(a)FF (M)(f)691122FF (S)(a)5
(0)5
(a)FF
(p)200*10
(t)200*100
(C)(c)1 (C)(c)1 (P)(A)0
(r)40 (t)30 (N)0010
(f)0 (H)0000
(u)10 A =Art table
(N)1
(d)00000003 (w)00150010
(u)
Slave simulator je v režimu Packet a data z "its" zapisuje na adresu (N)2H zde
0010. Radiomaster čte data z adres 0010 až 0015 (podle Art, w) a při jejich změně a
také s periodou "SPe0tCt" (=30s) je odesílá do Radioslave.
Slave simulator 00000001:
Send packet: (N):1 (d):00000001h = paket půjde user výstupem do Modbusu
(t)ype:0009h
s(o)urce:691122FFh = tato adresa je použita simulátorem jako dst
d(a)ta:.. = data BBBB hex
random data (l)ength:0byte
(r)epeat period:0ms + (j)itter:0ms
IP (P)ing
(s)tart r(e)port sto(p)
(q)uit
>>
09:48:19.734 rx;i 8 | S00
0503 0010 0005 8588 = dotaz na obsah cache, adresy 0010 - 0015
09:48:19.735 tx 15 | S00
0503 0A00 0000 0000 0000 0000 002A 32s = cache je prázdná
>>O.K.
>>
09:48:21.404| |00000001 691122FF|S00I IN 2|09 6user
BBBB
09:48:21.731 rx;i 8 | S00
0503 0010 0005 8588 = dotaz na obsah cache, adresy 0010 - 0015
09:48:21.732 tx 15 | S00
0503 0A10 0809 0669 1122 FFBB BB17 FC = záznam vytvořený paketovým režimem
09:48:23.736 rx;i 8 | S00
0503 0010 0005 8588
09:48:23.737 tx 15 | S00
0503 0A10 0809 0669 1122 FFBB BB17 FC
Radioslave 691122FF:
09:48:05.811|691122FF 69112205|691122FF 69112205|R01I OUT 15n89 6dat
0503 0A00 0000 0000 0000 0000 002A 32 = obraz prázdné cache
09:48:21.910|691122FF 69112205|691122FF 69112205|R01I OUT 15n89 7dat
0503 0A10 0809 0669 1122 FFBB BB17 FC = změna v cache je přenesena do RS
Zde použitá náhrada Slave simulátoru nezajistí samočinné smazání bufferu (N)2H.
Před novým zápisem "its" je třeba smazat buffer inicializací protokolu "SPeI". Pak
nový zápis "its" vyvolá opět okamžitý přenos dat. Pokud nenastávají změny, je stav
cache aktualizován s periodou "SPe0tCt".
Pro přenos povelů MASTER -> RS -> RM -> SLAVE se navíc konfiguruje v RS a RM
transparentní režim.
Stav cache můžeme sledovat funkcí "mp0M"
- příklad z Radioslave:
Modbus monitor:
St(a)tion cache (d)ump
(q)uit
>>a
>>
Station activity in Modbus cache:
/1 /2 /3 /4 /5 /6 /7 /8 /9 /A /B /C /D /E /F /10
0 0 0 0 0 36 0 0 0 0 0
>>d5
Cache obsahuje 10 pozic pro 10 Slave podle parametru "SPe0tCu". Pro aktivní Slave
je zde uveden zbývající čas platnosti (max."SPe0tCr"). Dotazem "d5" zobrazíme obsah
vybrané cache. Délka záznamu 10byte je určena v tabulce Art, položka "w", adresy
0010 až 0015:
>>
cache data at position 5:
/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /A /B /C /D /E /F ASCII:
00000000 20 08 09 06 69 11 22 FF BB BB ...i."...
>>
Využitím parametrů pro posun adres a jejich počet lze upravit uspořádání cache a
lépe využít paměťový prostor, například volbou v "SPe0tC":
adr o(f)fset:5 n(u)mber:6 net addresses
vynecháme nevyužité pozice 1 až 4 a snížíme počet pozic na šest:
>>
Station activity in Modbus cache:
/1 /2 /3 /4 /5 /6 /7 /8 /9 /A /B /C /D /E /F /10
0 32 0 0 0 0 0
>>d1
>>
cache data at position 1:
/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /A /B /C /D /E /F ASCII:
00000000 20 08 09 07 69 11 22 FF BB BB ....i."...
>>
Platí pro verzi sw 657 z 4.3.2004.