Radar Control Protocol
The interface to the Radar Control Protocol (RCP) is either over:
- Network UDP multi-cast packet
- Serial line
- UNIX FIFO
When using the network, transmissions to both directions are sent to the same address and port number. This allows the seamless merging of data from multiple clients. It also means that there is not a separate wire for transmit and receive as with a serial cable. The data format consists of the serial format with a 16-byte prefix.
The prefix consists of the packet size in ASCII (8-bytes), followed by a ASCII code for the type of packet. The first letter of the type is either T (transmit) or R (receive). This is relative to the main controlling host. When coding, you must filter on the direction.
For examples, see the base/ant_utils/antx.C program, as well as the base/antenna_lib/ant_netrcv.c and base/user_lib/UdpSupport.c files.
Specifying the Interface
To code multicast packets over broadcast packets, you must specify which interface to use,
and issue the IP_ADD_MEMBERSHIP call. Vaisala recommends using
site-local addresses.
When using a 2-way asynchronous RS-232 data line, the baud rate is typically 9600 (19200+ for shipboard systems). IRIS uses this link to control the servo and antenna and receive feedback status.
Information is transferred in packets of 2
or more bytes. Each packet begins with a SYNC byte and ends with an
END byte of FF(Hex). All SYNC bytes
have the MSB set, and the particular value indicates the type of packet to follow. Types
include, for example, 80(hex) for antenna, C0(hex) for
BITE, AF(hex) for Q-BITE, and B0(hex) for time.
Each of packet type has a specific direction of travel (to or from IRIS), but packets can arrive in any order within the serial stream.
Antenna Communication Formats
Older systems use the RCV01 and XMT01 formats. Newer systems can use the RCV02 and the XMT02 formats.
The RCV03 format is intended for systems on moving platforms, such as ships or airplanes. To correct the radar's measured radial velocity for the motion of the platform, the 3-D velocity and orientation of the platform must be recorded. Typically, the information comes from an inertial navigation system. For shipboard system, an update rate of approximately 20 reports per second can satisfy the velocity correction requirements at 19200 baud.
Angles
The latitude and longitude are transmitted as 21-bit binary angles. The following angles are transmitted as 14-bit binary angles:
- azimuth and elevation
- train order
- pitch, roll, and heading
In the XMT01 format, the angular speed is a signed number in units of 0.55º/sec. In all other formats, the angular rates are in signed 14-bit binary angles per second. The largest possible value is 180º/sec (30 rpm) and the step is 0.022º/sec. All velocities are in signed cm/sec with the altitude in signed meters. If some of the information is unavailable at the full resolution of the data format, the low bits are filled with zeros.
The azimuth and the elevation angles are corrected angles relative to the north and are the angles that the antenna is pointed relative to the deck of the platform. These calculations are derivable from the other angles but are also reported to assist in the data analysis, especially if one of the sensors or the stabilization fails.
The pitch is the angle between the fore-and-aft axis of the platform and the horizontal is measured in the vertical plane. The pitch is positive when the bow is down and the roll is the rotation angle about the fore-and-aft axis in its pitched position. The pitch is measured in the plane perpendicular to the fore-and-aft axis, which is generally not the vertical plane, and the roll is positive when the deck is down on the port side.
| Note: The pitch can be directly measured by a level on the fore-and-aft axis but the roll cannot be directly measured by a one-axis tilt meter. |
The heading is referred to as the direction the platform is pointed but is not the same as direction of motion. The platform could be pointed one way and drifting backwards.
The time stamp is a 14-bit counter incremented by the RCP once per millisecond. The RCP must latch all the data for a packet at the same time. This counter allows the host computer to accurately judge the time between samples without the serial line latencies and fluctuations due to the time sharing operating system.
The position of the platform is reported by the latitude, the longitude, and the altitude. Since the altitude may not be implemented for systems on ships, the setting is 0.
Status and Command Packets
| Char | Function |
|---|---|
| 1 | SYNC Byte (80 Hex) |
| 2 | Azimuth Low 7 bits |
| 3 | Azimuth High 7 bits |
| 4 | Elevation Low 7 bits |
| 5 | Elevation High 7 bits |
| 6 |
Status #1 D6 = Low air flow D5 = Low Waveguide pressure D4 = Servo power D3 = Antenna Local mode D2 = Interlock D1 = Standby D0 = Radiate On |
| 7 |
Status #2 D6 = RCP02 is shutdown D5 = LSB pulse width D4 = T/R power On D3 = T/R Local mode D2 = Encoders calibrated D1 = MSB pulse width D0 = Magnetron current normal |
| 8 | End Of Message (FF Hex) |
| Char | Function |
|---|---|
| 1 | SYNC Byte (80 Hex) |
| 2 | Azimuth Low 7 bits |
| 3 | Azimuth High 7 bits |
| 4 | Elevation Low 7 bits |
| 5 | Elevation High 7 bits |
| 6 |
Control Word #1 D6 = MSB of Pulse Width D5 = Leave Pulse width unchanged D4 = Spare D3 = Signal Generator On D2 = Signal Generator CW D1 = EL (1 = Scan, 0 = Position) D0 = AZ (1 = Scan, 0 = Position) |
| 7 |
Control Word #2 D6 = Reset RCP02 on edge D5 = Noise Source On D4 = LSB of Pulse width D3 = Radiate On complemented D2 = Radiate On D1 = Servo Power On D0 = T/R Power On |
| 8 | Control Word #3 (all spare) |
| 9 | Signal generator level (unsigned 0 ...127dB attenuation) |
| 10 | AZ/EL Antenna speed (signed 7 bit, 0.55° resolution) |
| 11 | End Of Message (FF Hex) |
| Char | Function |
|---|---|
| 1 | SYNC Byte (80 Hex) |
| 2 | Azimuth Low 7 bits |
| 3 | Azimuth High 7 bits |
| 4 | Elevation Low 7 bits |
| 5 | Elevation High 7 bits |
| 6 | Azimuth Rate Low 7 bits |
| 7 | Azimuth Rate High 7 bits |
| 8 | Elevation Rate Low 7 bits |
| 9 | Elevation Rate High 7 bits |
| 10 |
Status #1 D6 = Low air flow D5 = Low Waveguide pressure D4 = Servo Power D3 = Antenna Local mode D2 = Interlock Open D1 = Standby D0 = Radiate On |
| 11 |
Status #2 D6 = RCP02 is shutdown D5 = LSB pulse width D4 = T/R Power On D3 = T/R Local mode D2 = Azimuth encoder calibrated D1 = MSB pulse width D0 = Magnetron current normal |
| 12 |
Status #3 D6 = IRIS Mode 2 D5 = IRIS Mode 1 D4 = IRIS Mode 0 D3 = Elevation encoder calibrated D2 = Signal Generator fault D1 = Signal Generator On D0 = Signal Generator CW |
| 13 | Signal generator level (0=max power) |
| 14 | Time Stamp Low 7 bits |
| 15 | Time Stamp High 7 bits |
| 16 | End Of Message (FF Hex) |
| Char | Function |
|---|---|
| 1 | SYNC Byte (80 Hex) |
| 2 | Azimuth Low 7 bits |
| 3 | Azimuth High 7 bits |
| 4 | Elevation Low 7 bits |
| 5 | Elevation High 7 bits |
| 6 |
Control Word #1 D6 = MSB of Pulse Width D5 = Leave Pulse Width unchanged D4 = Spare D3 = Signal Generator On D2 = Signal Generator CW D1 = EL (1 = Scan 0 = Position) D0 = AZ (1 = Scan 0 = Position) If EL in position mode, maximum positive velocity is sent in the velocity field, if EL in scan mode, maximum or minimum elevation position is sent in the position field. If AZ in position mode, maximum positive velocity is sent in the velocity field, if AZ in scan mode, 0 is sent in the position field. |
| 7 |
Control Word #2 D6 = Reset RCP02 on rising edge D5 = Noise Source On D4 = LSB of Pulse width D3 = Radiate On complemented D2 = Radiate On D1 = Servo Power On D0 = T/R Power On |
| 8 |
Control Word #3 D6 = IRIS Mode 2 D5 = IRIS Mode 1 D4 = IRIS Mode 0 D3 = Radar Workstation A okay D2 = Radar Workstation B okay D1 = Data Processor A okay D0 = Data Processor B okay |
| 9 | Signal Generator level (0 ... 127 dB attenuation) |
| 10 | AZ Antenna Speed Low 7 bits |
| 11 | AZ Antenna Speed High 7 bits |
| 12 | EL Antenna Speed Low 7 bits |
| 13 | EL Antenna Speed High 7 bits |
| 14 | End Of Message (FF Hex) |
| Char | Function |
|---|---|
| 1 | SYNC Byte (80 Hex) |
| 2 | Identification byte |
| 3 | Azimuth Low 7 bits (Earth relative) |
| 4 | Azimuth High 7 bits |
| 5 | Elevation Low 7 bits (Earth relative) |
| 6 | Elevation High 7 bits |
| 7 | Train Order Low 7 bits (azimuth of pedestal relative to the ship) |
| 8 | Train Order High 7 bits |
| 9 | Elevation Order Low 7 bits (elevation of pedestal relative to the ship) |
| 10 | Elevation Order High 7 bits |
| 11 | Pitch Low 7 bits |
| 12 | Pitch High 7 bits |
| 13 | Roll Low 7 bits |
| 14 | Roll High 7 bits |
| 15 | Heading Low 7 bits |
| 16 | Heading High 7 bits |
| 17 | Azimuth Rate Low 7 bits |
| 18 | Azimuth Rate High 7 bits |
| 19 | Elevation Rate Low 7 bits |
| 20 | Elevation Rate High 7 bits |
| 21 | Pitch Rate Low 7 bits (LSB = Zero) |
| 22 | Pitch Rate High 7 bits |
| 23 | Roll Rate Low 7 bits (LSB = Invalid Roll) |
| 24 | Roll Rate High 7 bits |
| 25 | Heading Rate Low 7 bits (LSB = Invalid Heading) |
| 26 | Heading Rate High 7 bits |
| 27 |
Status #1 D6 = Low air flow D5 = Low Waveguide pressure D4 = Servo power D3 = Antenna Local mode D2 = Interlock open D1 = Standby D0 = Radiate ON |
| 28 |
Status #2 D6 = RCP02 is shutdown D5 = LSB pulse width D4 = T/R Power on D3 = T/R Local mode D2 = Azimuth encoder calibrated D1 = MSB pulse width D0 = Magnetron current normal |
| 29 |
Status #3 D6 = Reserved D5 = Reserved D4 = Reserved D3 = Elevation encoder calibrated D2 = Signal Generator fault D1 = Signal Generator On D0 = Signal Generator CW |
| 30 | Signal generator value (0=full signal) |
| 31 | Time Stamp Low 7 bits |
| 32 | Time Stamp High 7 bits |
| 33 | Latitude Low 7 bits |
| 34 | Latitude Middle 7 bits |
| 35 | Latitude High 7 bits |
| 36 | Longitude Low 7 bits |
| 37 | Longitude Middle 7 bits |
| 38 | Longitude High 7 bits |
| 39 | Altitude Low 7 bits |
| 40 | Altitude High 7 bits |
| 41 | Velocity East Low 7 bits (LSB = Invalid Lat/Lon) |
| 42 | Velocity East High 7 bits |
| 43 | Velocity North Low 7 bits (LSB = Zero) |
| 44 | Velocity North High 7 bits |
| 45 | Velocity Up Low 7 bits (LSB = Invalid Altitude) |
| 46 | Velocity Up High 7 bits |
| 47 | End Of Message (FF Hex) |
| Char | Function |
|---|---|
| 1–15 | Bytes match the RCV02 / RCV04 format |
| 16 |
Dual-System Status D6 = RCP02 is configured as a Dual-System D5 = Dual-System Mode MSB D4 = Dual-System Mode LSB D3 = This packet was sent from Unit "A"D2 = Information is known about the "Other" unit D1 = Unit "A" is the preferred system D0 = Unit "B" is disabled Note: The 2-bit Dual-System Mode codes are:
|
| 17 |
Dual-System Status D6 = Unit "B" is okay D5 = Unit "B" Activity Code MSB D4 = Unit "B" Activity Code LSB D3 = Unit "A" is disabled D2 = Unit "A" is okay D1 = Unit "A" Activity Code MSB D0 = Unit "A" Activity Code LSB Note: The 2-bit Dual-System Activity codes are:
|
| 18 |
Dual-System Status D6 = RCP02 is configured for voluntary flipping D5 = Unit "B" is offering to give up control D4 = Unit "A" is offering to give up control D3 = Unit "B" would be used if it were available D2 = Unit "A" would be used if it were available |
| 19 |
D0:2 = Current Polarization XMT control
D3 = Polarization switch is OK to run |
| 20 | Spare |
| 21 | Spare |
| 22 | Spare |
| 23 | Spare |
| 24 | End Of Message (FF Hex) |
| Char | Function |
|---|---|
| 1–13 | Bytes exactly match the XMT02 / XMT04 format |
| 14 |
Control Word #4 D6 = Dual-System: Mode MSB D5 = Dual-System: Mode LSB D4 = Dual-System: Offer to relinquish control D3 = Dual-System: Unit would be used if available D2 = SpareD1 = Spare D0 = Spare Note: The 2-bit Dual-System Mode codes are:
|
| 15 |
D0: 2 = Requested Polarization XMT control 0=Horizontal 1=Vertical 2=Alternating 3=Simultaneous 7=Unchanged |
| 16 | Spare |
| 17 | Spare |
| 18 | End Of Message (FF Hex) |
| Char | Function |
|---|---|
| 1 | SYNC Byte (B0 Hex) |
| 2 | Year Low 7 bits |
| 3 | Year High 7 bits |
| 4 | Month |
| 5 | Day |
| 6 | Hour |
| 7 | Minute |
| 8 | Second |
| 9 | 1/100 of Second |
| 10 | Status |
| 11 | End Of Message (FF Hex) |
| Char | Function |
|---|---|
| 1 | SYNC Byte (C0 Hex) |
| 2 | BITE Unit ID byte (selectable in the range 00–7F Hex) |
| 3 | Status byte #1 |
| 4 | Status byte #2 |
| . | |
| . | |
| . | |
| N–1 | Status byte #N–3 |
| N | End Of Message (FF Hex) |
The BITE status packet consists of 3 ...20 bytes.
The first 2 and the last bytes are used for identification purposes.
The middle bytes must have the MSB set to 0 and can contain arbitrary status in the lower 7 bits.
Typically this is used to report back individual bits containing the results of tests such as cabinet interlocks, airflow sensors, and power supply checks.
This report must be sent by the BITE every time the status changes. It must also send a report in response to the interrogate command. IRIS sends the interrogate command every 60 seconds.
| Char | Function |
|---|---|
| 1 | SYNC Byte (C0 Hex) |
| 2 | Command (0x4D = Interrogate, 0x44=Sample Data, 0x43=Reset) |
| 3 | End Of Message (FF Hex) |
Auxiliary Control BITE Packets
This example BITE packet is supported by the RCP02 and RCP8 Radar Control Processors, and is an example of a mapping of arbitrary control and status bits into a BITE packet.
These RCPs contains 64 auxiliary status and control variables, labeled S[0:63] and C[0:63]. These bits may be sent to and from the host computer in the form of 13-byte BITE packets holding the full set of 64 bits. The format of these packets is the same in both directions, and the identification byte is selectable so that conflicts with other BITE packets can be avoided.
| Char | Function | |||||||
|---|---|---|---|---|---|---|---|---|
| 1 | SYNC Byte (C0 Hex) | |||||||
| 2 | BITE Unit ID byte (User Choice) | |||||||
| 3 | Control/Status Bits | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 4 | Control/Status Bits | 13 | 12 | 11 | 10 | 9 | 8 | 7 |
| 5 | Control/Status Bits | 20 | 19 | 18 | 17 | 16 | 15 | 14 |
| 6 | Control/Status Bits | 27 | 26 | 25 | 24 | 23 | 22 | 21 |
| 7 | Control/Status Bits | 34 | 33 | 32 | 31 | 30 | 29 | 28 |
| 8 | Control/Status Bits | 41 | 40 | 39 | 38 | 37 | 36 | 35 |
| 9 | Control/Status Bits | 48 | 47 | 46 | 45 | 44 | 43 | 42 |
| 10 | Control/Status Bits | 55 | 54 | 53 | 52 | 51 | 50 | 49 |
| 11 | Control/Status Bits | 62 | 61 | 60 | 59 | 58 | 57 | 56 |
| 12 | Control/Status Bit | 63 | ||||||
| 13 | End Of Message (FF Hex) | |||||||
Q-BITE Status
The Q-BITE (quantitative byte) status packets consists of 3 ... 128 bytes.
The first 2 and last bytes are for identification.
The middle bytes must have the MSB set to 0 and can contain an arbitrary value in the lower 7 bits. Typically this is used to report back voltage/power levels. Do not send this report by the BITE every time the status changes. Send this report in response to the Q-bite interrogate command. IRIS sends the interrogate command every 60 seconds.
The Q-BITE data stream consists of a series of integer values. Each value is packed into a series of 7-bit characters, using 1 ... 5 depending on the desired resolution. The low bits come first, and IRIS supports up to 32 bits per value. IRIS can be configured to display any such values with appropriate units and scaling.
| Char | Function |
|---|---|
| 1 | SYNC Byte (AF Hex) |
| 2 | BITE Unit ID byte (selectable in the range 00-7F Hex) |
| 3 | Status byte #1 |
| 4 | Status byte #2 |
| . | |
| . | |
| . | |
| N–1 | Status byte #N–3 |
| N | End Of Message (FF Hex) |
| Char | Function |
|---|---|
| 1 | SYNC Byte (AF Hex) |
| 2 | BITE Unit ID byte (Selectable in range 00–7F) |
| 3 | V1 Trigger frequency (Hz) (low bits) |
| 4 | V1 Trigger frequency (Hz) (high bits) |
| 5 | V2 Thyratron voltage (0.1 V) (low bits) |
| 6 | V2 Thyratron voltage (0.1 V) (high bits) |
| 7 | End Of Message (FF Hex) |
Q-BITE Interrogate Packet
| Char | Function |
|---|---|
| 1 | SYNC Byte (90 Hex) |
| 2 | Command (0x01 or 0x4D=Interrogate, 0x44=Sample Data, 0x43=Reset) |
| 3 | End Of Message (FF Hex) |
BITE Individual Command Packet
The BITE individual command packet is used to request information about a single BITE unit, separate from all the others.
The RCP should respond to an Interrogate packet by sending the current version of the specified BITE status packet. The RCP should respond to a Sample Data packet by sending requests out the remote device to get information, then responding to the host computer with the new BITE status packet when the information arrives. The RCP should responds to the Reset packet by sending a reset command to the remote device.
| Char | Function |
|---|---|
| 1 | SYNC Byte (C1 Hex) |
| 2 | ID of the BITE unit for which the command will be applied |
| 3 | Command: 0x4D=Interrogate, 0x44=Sample Data, 0x43=Reset |
| 4 | End Of Message (FF Hex) |
Chat Mode
These packets are sent in both directions to
convey serial TTY communication. Up to 6 7-bit characters can be sent in each packet with
two characters of overhead for SYNC and END. This allows up to 75% of the available serial bandwidth to be
used for chatting. If a chat mode packet contains fewer than 6 characters,
then a NULL (0 byte) is inserted after the last packet.
| Char | Function |
|---|---|
| 1 | SYNC Byte (F1 Hex) |
| 2...7 | 7-Bit ASCII characters (possibly NULL terminated) |
| 8 | End Of Message (FF Hex) |
