The RDS (Radio data network) protocol was designed by Conel for radio modems manufactured by Racom before the Morse system. For reasons of compatibility it was also implemented in the Morse system. It is 8-bit oriented in Intel processor format.
The RDS protocol does not have individual layers fully separated. They blend together and interact.
2. Data format
2.1. Physical layer of the RDS protocol
The physical layer suggests asynchronous communication DTE – DCE over the RS232 duplex interface. By default they use only RXD and TXD data signals (so-called 3-wire communication + earth). For controlling the flow of data it is of course possible to make use of the HW handshake RTS-CTS, or Xon-Xoff.
It is also possible to use the RS422 (RS485) interface, which enables communication at higher speeds and over a greater distance.
2.2. Data link layer of the RDS protocol
The Data link layer is not totally separate from the network layer and basically it blends with it, i.e. the data packet does not consist of the signal, block of data and check byte, but even on the layer it contains a header, data and check byte. This structure is not maintained for all packet types (see further). It is therefore not possible to use other line protocols for the RDS protocol.
The state diagram of the transmitting side of the MOLE protocol has only two states: idle state and waiting for ACK state. It shifts from the idle state to the waiting state immediately after receiving a request for transmitting the data packet. It shifts back to the idle state after receiving an ACK or after timeout after the latest repeat. In the waiting for ACK state the protocol refuses all requests for sending a data packet.
The receiving side reacts to the correct received packet (except 2.3.2.) by immediately sending an ACK. In the case that another packet is being transmitted it sends the ACK immediately afterwards (therefore the ACK timeout must be minimally equal to the length of transmission of the longest packet). For any incorrect packet (except 2.3.2.), i.e. with incorrect signal, length or check byte a NAK is transmitted.
The link layer on the MORSE system side is able to process any “glued” packets handed over at one instant to the receiving buffer, whose size is set in the configuration of the relevant port (max 1626 byte).
Between characters in the packet there cannot be larger spaces than set in the parameter [idle] of the relevant port. A burst packet is evaluated as incorrect even if it was caused by the effect of a hardware handshake, and it is answered NAK.
2.3. Network layer of RDS protocol
2.3.1. Packets with header and check byte
Most RDS packets are composed of a header, block of data and check byte.
| Header | Data | Checksum/8 |
RDS contains altogether 3 types of packets differing in structure and size of header:
- standard – 4 bytes (44, 49)
- no address – 3 bytes (45, 4B)
- 1 byte – 1 byte (48, 59, 66)
Checksum – One byte for checking correct handover of packets. Sum is a supplement to the total over the bytes of the whole packet.
2.3.2. Packets with standard header (44, 49)
| Packet type /8 | Adr/8 | L/8 | H/8 | packet types: 44 - user data 49 - stat. report Adr during transmission of DTE-DCE destination during transmission DCE-DTE source length L - lower byte determining length of packet data H - higher byte determining length of packet data Data structure 44 - USER DATA - defined by user 49 - STATISTIC REPORT - statistic report has this structure: | Destination level/8 | AdConst/8| MultConst/8 | No. of records/8 | | No. of active record/8 | Record1/8*25 | . . . | RecordN/8*25 | | No. of station2 /8 | Level2/8 | AdConst2/8 | MultConst2/8 | where: Destination level - signal level measured by the destination address when receiving a request for statistics AdConst - additive correction constant of measurement. For MR25 =level MultiConst - Multiplicative correction constant of measurement. For MR25 = 0 No. of records - No. of statistical records, which are in the packet. No. of active record - No. of the record, which is currently active. Record1 ... N - Individual statistical records. No. of station2 - If it receives first the statistics report RD300FS appends its member number, the relay station MR25 does not add anything, address (and level) are added by the MR25, from which the statistics were requested Level2 - signal level, which device 2 measured AdConst2 - Additive correction constant of measurement. For MR25 = level2 MultiConst2 - Multiplicative correction constant of measurement. For MR25 = 0
(In case that it requests statistics via relaying and the relay station is the MR25, device number 2 (ditto level 2) is supplemented up to the MR25 from which the statistics were requested)
Meaning of Record characters >
| VyslZpráv/32 | NeúspVyslZpráv/32 | PočetŘád/32 | PočetOpak/32 | MaxŘád/32 | | Reset/32 | Validity/8 | where: VyslZpráv - number of transmitted packets (only acknowledged non-zero data packets) NeúspVyslZpráv - number of unsuccessfully transmitted packets (lost packets for the reason of overstepping the number of repeats or overrunning timeout store) PočetŘád - number of all channel requests (even those not accepted) (for RD300FS unused?) PočetOpak - number of all repeats of packets (not channel requests) MaxŘád - 0 (for RD300FS number of cases where it requested the channel, or unused) Reset - 0 (for RD300FS number of modem resets) Validity - 1 if record after whole period 0 if record not after whole period
Calculation of signal level at RD300FS
Signal level [dBm] = AdConst – MultiConst × Level / 64H
For MR25 the level is provided directly in dBm,
i.e. MultiConst.=0 and AdConst=level.
The period for storing statistics in the MR25 is adjustable (menu unit). For reasons of compatibility with the RD300FS we recommend setting 86400 sec. Three periods back and the current running period are at disposal (same as with the RD300FS).
2.3.3. Packets with header without address (45, 4B)
| packet type/8 | L/8 | H/8 | types of packets: 45 - ERROR 4B - PATH PACKET Data structure: 4B - PATH PACKET
Path packet serves for communication between different networks for measuring and diagnostic purposes.
The structure of path packet of protocol RDS comes from strict orientation to the HW of RD300FS radio modems. For RD300FS there are 3 bytes for storing network numbers and the member number is strictly divided into 2 (network) + 1 (member number in the network). For communication via path packets so-called unique production numbers of size three bytes are used. Both of these numbers are assigned to the same port, or RD300FS has only one RS232 port.
In the case of the MR25 for the unique number all three bytes are set up from the address at adrNo, which is assigned to the port from which we are communicating.
| PočMAdr/8 | AktivMAdr/8 | MAdr1/24 | . . . | MadrN/24 | Zpráva /8*X |
PočMAdr - total number of modem addresses AktivMAdr - Active modem address. It is the serial number of the modem address in the MAdr series to which the packet is delivered. When generating packets standardly 02 (it shifts as the packet steps over individual addresses in the MAdr series). Madr - series of modem addresses of the device, which define the way the packet should be transmitted. MAdr1 is a modem address, from which this packet is sent, MAdrN is the final receiver. Zpráva - is the actual transmitted packet. In path packet the packet is always transmitted whole, i.e. including its header and checksum. Attention, the address in the packet header in this case is 3 bytes. When replying the original packet is replaced with the reply to this packet. A series of modem addresses are reversed and addresses are replaced step by step from the back with information about the measured level of the signal from the previous station in the series. The station which generates the reply sends the signal level from the station from which it received the original message (i.e. last but one in the original series).
Structure of information about signal level:
| level/8 | AdConst/8 | MultConst/8 | where: Level - signal level measured by the given station. AdConst - Additive correction constant of measurement. For MR25 = level MultiConst - Multiplicative correction constant of measurement. For MR25 = 0 45 - ERROR | Addressee/8 | Not acknowledged/8 | Error/8 | Transmitted/8 | where: Addressee - No. of network station for which the packet is determined. Not acknowledged- No. of network station which did not acknowledge receiving. Error - 0 ...Packet was not passed between two stations. - 2 ...Error of MORSE system - for all errors which the system generates - 3 ...DTE addressee did not acknowledge receipt of packet. Transmitted - No. of network station which last transmitted a packet and sent back this error message.
2.3.4. Packet with 1 byte header 48, 59
These packets are used for definite messages (requests). The data is of only 1 byte and contains the device address, from which the service is requested. The header is of only 1 byte and contains only the type of packet.
Structure of whole packet:
| Header/8 | Adr=data/8 | checksum/8 | where: Header - type of packet Adr - device address, from which the service is requested Checksum - one checksum byte for checking the correct handover of the packet. Sum is a supplement to the total over the bytes of the whole packet. Types of packets: 48 - request for statistics 59 - soft reset
Soft reset is mode C92 (modem, edit, mode) transmitted in the air compatible with RD300FS, i.e. station MR25 generates it, transmission however not accepted. For more see chapter 4 – RDS differences between Morse and RD300FS.
2.3.5. Packets without header and check byte (51, 4C)
These packets are only used at the link layer level.
1.communication DTE-DCE: | packet type/8 | type of packet: 51 - request for status 4C - request for strength of signal of last received packet 2. communication DCE-DTE: reply to 51: | 0x54/8 | Adr/8 | Status/8 | where: Adr - address of station which is sending the packet (configured to the relevant port) Meaning of individual bits STATUS: Bit 0 - Receipt from HOST (RTS) ON/OFF. MR25 does not use it, always 0. Bit 1 - CNC sends data from TPC yes/no. MR25 does not use it, always 0. Bit 2 - sends yes/no. Bit 3 - receives yes/no. Bit 5 - received memory from HF channel empty no/yes. MR25 does not use it, always 0. Reply to 4C: | 0x55/8 | Adr/8 | Level/8 | AdConst/8 | MultConst/8 | where: Adr - address of station which is sending the packet (configured to the relevant port) Level - level of signal of last received packet AdConst - Additive correction constant of measurement. For MR25 = level MultiConst - Multiplicative correction constant of measurement. For MR25 = 0
3. Example of implementation into the MORSE system
external device ---> MCU 1 4422 0200 AABB 00 MCU 1 ---> MCU 2 AABB MCU 2 ---> external device 4433 0200 AABB 00
4. Configuration parameters
Adjustable link parameters:
- ACK timeout is the time after completion of transmission of a data packet, for which the transmitting side waits for packet acknowledgement ACK. If ACK is not received the packet is resent.
- No. of repeats. If the number of repeats has been used up and the final ACK timeout runs out, the network layer is passed information about packet loss.
- acknowledgement yes/no. when setting yes/no all packets except 2.3.2. are acknowledged/not acknowledged with a 1 byte packet of type ACK/NAK (0x06/0x15)
- Checksum 0xFFFF/const.. Most packets have a check byte at the end – checksum (supplement to the total over the bytes of the whole packet) – setting 0xFFFF. In case other constants are set than 0xFFFF the set constant is supplemented into the checksum space (lower byte).
- ACK timeout – 1.5 times the time for transmitting the longest possible packet at the set speed (max timeout 65535 ms)
- Number of repeats – 10 (max 65535)
5. Differences in RDS between MORSE and RD300FS
Certain differences have already been described in earlier chapters. The other differences are described below:
5.1 Differences in RDS in the network layer
- RD300FS cannot reply to packet 48H to its own adr, MORSE can
- With the RD300FS certain versions of SW return to the end of packet 45 even data which was transmitted (without header and checksum), i.e. packet is not of size 4 bytes. MORSE presents packet 45 exactly according to the above description.
- For the statistic report (packet 49) at the RD300FS a signal level packet is delivered, as obeyed by the first station of packet 49 from the station which sent it. In this case during relay one has to “reach” into the data of the relayed packet – send it to the RDS protocol layer. Relaying in Morse is solved at a different SW level than protocols and therefore it is not possible to reasonably register this information to packets. If it comes to the MR25, which requested statistics, packet 49, which does not have the level supplemented at its end, supplements the MR25 with the signal level with which it received the packet from the last station.
- Packet type 59 – soft reset. Special service of mode C92 (modem, edit, access, mode) designed for RD300FS station. In Morse mode this service has no meaning (soft reset in the MR25 executes a different service – see Morse – communication in air). In mode C92 this MR25 packet is transmitted. If however it is determined for the MR25, the MR25 does not accept it. RDS in Morse mode always returns NAK for packet type 59.
- RD300FS cannot transmit a packet with zero data length, MR25 can.
- Certain versions of SW in the RD300FS for packet 49 (statistics) do not supplement on relay of the measured level (behaves the same as the MR25) – e.g. network VaK ??ár.
5.2 Differences in RDS on the RF channel
- Communication on the RF channel for RD300FS always runs safely, i.e. RD300FS does not know packet type 48 in air. It only knows C8. With the MR25 it can be configured in modem params.
- For the RD300FS during relaying it overrides the size in the header of the packet in air. After relaying the size randomly changes – probably the protocol does not take it into consideration at all.
5.3 Differences in RdsInst
- Program RdsInst (version 11) before each communication with the devices transmits a request for status (packet 51). With RD300FS packets are always “glued” i.e.. 54+06+4B and from the side of the PC also 51+4B. The MR25 is able to read the “glued” packets step by step and immediately reply, i.e. communication runs 51-54, 4B-06. RdsInst does not understand this and packet 4B from the station is received the second time. Therefore it is necessary to set in port configuration 1x repeating.
- When communicating over modem numbers RdsInst strictly takes from the database the modem number belonging to the member number in the network. i.e. address (all 3 bytes), which are configured in the MR25 to the relevant port have to conform to the following limitation:
- a) the number has to be in the range 0100|XXXX|XXXX
- b) the last byte must agree with the member number listed in the database and cannot be larger than 7F.