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.