MODBUS 657 příklady

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.

©  2024 RACOM s.r.o. All Rights Reserved.