https//www.racom.eu/eng/support/protocols_docum/bc262a_modex.html
TRANSPARENT MODE
- Radioslave - Radiomaster communication example.
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
The data 0503AAAA is sent from the Radioslave to the address 69112205 with the
"its" function. The data fulfils the conditions for checking of the function
number and the address. The Radiomaster's protocol has switched on the "CRC (a)
uto" function and so appends 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
Now switch off the "CRC (a)uto" function in the Radiomaster. Send the data 0503
AAAA 0E37 from the Radioslave with the "in" function. Then put the reply in the
Radiomaster with the "in" function no later than the timeout "SPe0tMt":
>>
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
The data which fits the conditions of the function, address and CRC checking
is transferred through the Modbus protocol without changing.
PACKET MODE
- Radiomaster - Slave communication example
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
The Slave simulator address 00000001 is an arbitrary nonzero value. The Slave
address is designated with parameter "SPe0tSa".
Radiomaster asks the Slave with period "Spe0tMp" for the content of its descriptor
"SPe0tPH" on address 1000.
We can send the data AAAA with the "its" function from the Radiomaster to its own
address (so in SCC0). The data is sent into bufferN2H and then is transferred to
the N2H buffer in the Slave by the following steps:
Monitoring: source 69112205|1.
07:44:06.834 tx 8 | S00
0503 1000 0001 814E = Slave 5, do you have any data for me ?
07:44:06.851 rx;i 7 | S00
0503 0200 0049 84 = I don't
Send packet: (N):1 (d):69112205h
(t)ype:0009h
s(o)urce:691122FFh = the Radioslave's address simulation
d(a)ta:.. = the data AAAA in hexadecimal form
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 received data for Slave 5
07:44:10.836 tx 8 | S00
0503 2000 0001 8E4E = Slave 5, do you have an empty H2N buffer?
07:44:10.852 rx;i 7 | S00
0503 0200 0049 84 = yes
07:44:10.853 tx 19 | S00
0510 2000 0005 0A10 0809 0769 1122 FFAA AA82 73 = write the message
07:44:10.877 rx;i 8 | S00
0510 2000 0005 0A4E = I have written the message
07:44:12.837 tx 8 | S00
0503 1000 0001 814E = Slave 5, do you have any data for me ?
07:44:12.853 rx;i 7 | S00
0503 0200 0049 84 = no ... the questions continue
07:44:14.838 tx 8 | S00
0503 1000 0001 814E
07:44:14.854 rx;i 7 | S00
0503 0200 0049 84
The CU writes data in the N2H buffer and reads from H2N in its normal state. The
parameter "SPe0tsd1" (= an arbitrary nonzero value) exchanges these directions, so
the Slave simulator will write to address 1000 in the H2N buffer:
Radioslave >
13:24:51.176 rx;i 8 | S00
0503 1000 0001 814E = Slave 5, do you have any data for me ?
13:24:51.177 tx 7 | S00
0503 0200 0049 84 = I don't
13:24:51.725| |00000001 691122FF|S00I IN 2|09 6user
BBBB = prot. Slave sim. received data for the Master
13:24:53.177 rx;i 8 | S00
0503 1000 0001 814E = Slave 5, do you have any data for me ?
13:24:53.178 tx 7 | S00
0503 0220 0851 82 = I have 08 byte
13:24:53.194 rx;i 8 | S00
0503 1000 0005 808D = send me 5 words from address 1000,
13:24:53.195 tx 15 | S00 it includes a 10byte descriptor
0503 0A20 0809 8669 1122 FFBB BB96 CB = I am sending 10 bytes
13:24:53.221 rx;i 11 | S00
0510 1000 0001 0200 0085 51 = clear the descriptor
13:24:53.222 tx 8 | S00
0510 1000 0001 048D = I have cleared the descriptor
13:24:55.178 rx;i 8 | S00
0503 1000 0001 814E = ... the questions to the Slave continue
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
The Radiomaster obtains the data BBBB and the dst address 691122FF from Modbus.
Radiomaster sends the data to the dst address with a MORSE packet. The address can
be directed to the Radioslave (and then to the Modbus Master) or to another
Radiomaster.
Connecting two (up to four) Slaves to a Radiomaster:
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
The following monitoring examples shows the situation when only Slave 6 is
connected. This is why the answers do not come from Slave 5 and the Radiomaster
continues calling his Slave after time-out "SPe0tMt":
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 = question to Slave 6
11:21:45.674 tx 7 | S00
0603 0200 000D 84 = response from Slave 6
11:21:47.673 rx;i 8 | S00
0503 1000 0001 814E = question to Slave 5, waiting
11:22:07.684 rx;i 8 | S00
0603 2000 0001 8E7D = dialogue with 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 = question to Slave 5, waiting
11:22:31.695 rx;i 8 | S00
0603 1000 0001 817D = question to 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 MODE
- packet sending 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)12 A =Art table
(N)1
(d)00000003 (w)00150010
(u)
The Slave simulator runs in the Packet mode and writes the data inputted with "its"
to the address (N)2H, here 0010. The Radiomaster reads the data from addresses
0010 to 0015 (according to Art, w) and, in the case of changing, sends it to the
Radioslave. The data is also sent with a period of "SPe0tCt" (=30s).
Slave simulator 00000001:
Send packet: (N):1 (d):00000001h = packet is sent with user output to the Modbus
(t)ype:0009h
s(o)urce:691122FFh = this address is used by the simulator as 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 = query about content of cache, addresses 0010 - 0015
09:48:19.735 tx 15 | S00
0503 0A00 0000 0000 0000 0000 002A 32s = cache is empty
>>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 = query about content of cache, addresses 0010 - 0015
09:48:21.732 tx 15 | S00
0503 0A10 0809 0669 1122 FFBB BB17 FC = the record written with packet mode
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 = picture of empty cache
09:48:21.910|691122FF 69112205|691122FF 69112205|R01I OUT 15n89 7dat
0503 0A10 0809 0669 1122 FFBB BB17 FC = the change in cache is transferred to RS
Here the Slave substitute used does not clear the (N)2H buffer automatically. It is
necessary to clear the buffer using the initialisation protocol "SPeI" before
repeating command "its". Then the newly written "its" causes new data transfer
immediately. If no changes happen, then the cache is updated with time period
"SPe0tCt".
The transparent mode is also configured in the RS and RM for command transfer in
the direction MASTER -> RS -> RM -> SLAVE.
The cache state can be followed with the "mp0M" function:
- an example from 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 0 0
>>d5
The cache contains 12 positions for 12 Slaves according to the "SPe0tCu" parameter.
The active Slaves have the remaining validity time (max."SPe0tCr") written here.
The content of chosen cache can be read using the "d5" command. The length of the
written record 10byte is defined in the Art table, item "w", from addresses 0010
to 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."...
>>
The cache arrangement can be changed and the memory space saved using the
parameters for address shift and for the number of addresses in "SPe0tC", e.g.:
adr o(f)fset:5 n(u)mber:6 net addresses
The unused positions 1 to 4 are omitted and the number of positions is reduced
to 6:
>>
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."...
>>
Valid for sw version 657 from 4.3.2004.