|
RT-IGS Message Protocol
All real-time IGS messages are transmitted using the User Datagram Protocol (UDP). The UDP protocol was adopted following the IGS "Towards Real-time" workshop and has proven to be a very reliable means of transmitting GNSS data in real-time over the open internet.
The RT-IGS protocol is designed to allow for any message type to be defined both in terms of the message content and the frequency at which the message type is sent out. The following message types have been defined.
| Message |
Frequency |
Comment |
| Station Description |
Twice per hour |
IGS station name and link to essential processing information |
| GNSS Observations |
Once per second - recommended |
Data pertaining to a GNSS constellation |
| Ephemeris |
On issue by receiver |
|
| Meteorological data |
At least once per 5-minute |
|
RT-IGS Message Structure
Each RT-IGS message contains a common message header followed by message specific content including the data.
Message Header
Every RT-IGS message has a common 11 byte header. The header contains the following information:
| Bytes |
Name |
Type |
Description |
| 2 |
rec_id |
unsigned short |
Message Type ID |
| 2 |
sta_id |
unsigned short |
Unique RT-IGS number assigned to each station. |
| 4 |
GPSTime |
unsigned long |
GPS time message issued, GPS time is seconds from the beginning of GPS (6 Jan. 1980) |
| 2 |
num_bytes |
unsigned short |
Total number of bytes in the message including the header |
| 1 |
IODS |
unsigned char |
Issue of Data Station. This number will change in order to alert real-time users of a service affecting change at a station. |
Message Types
Each RT-IGS message type is assigned an identification number. The following message type IDs have been reserved.
| ID Number |
Message Type |
| 100 |
Station |
| 200-219 |
GPS Observations |
| 220-239 |
Glonass Observations |
| 240-259 |
Galileo Observations |
| 300 |
GPS Ephemeris |
| 400 |
Surface meteorological data |
RT-IGS Message Content
The following message types have been defined and are present in today's RT-IGS data streams.
100: RT-IGS Station Message
Content: Station information that enables real-time users to link data to a specific station configuration. This information is to be valid for the real-time data stream content and may be more current than site log information immediatley following a configuration change at a station.
| Bytes |
Name |
Type |
Description |
| 2 |
rec_id |
unsigned short |
Station type message issued at least twice per hour |
| 2 |
sta_id |
unsigned short |
Unique RT-IGS number assigned to each station. |
| 4 |
GPSTime |
unsigned long |
GPS time message issued, GPS time is seconds from the beginning of GPS (6 Jan. 1980) |
| 2 |
num_bytes |
unsigned short |
Total number of bytes in the message including the header |
| 1 |
IODS |
unsigned char |
Issue of data station. This number will change in order to alert real-time users of a service affecting change at a station. |
| 1 |
sta_rec_type |
unsigned char |
Various station data formats are possible: 0 indicates that there is no additional station data |
| 1 |
IGS_UniqueID[8] |
char |
IGS ID eg. "NRC1", this variable will use the IGS 4 character standard but c requires a \0 to terminate the string |
|
*data |
unsigned char |
Default sta_rec_type 0 does not contain data. The pointer is shown only to illustrate options |
200: RT-IGS Observation Message
The GPS Observation Message can be in any format. Message Type 200 consists of GPS observations in the JPL SOC format. SOC is a highly compressed format and was chosen for the prototype network in order to test the advantages of compressed data formats for real-time applications.
SOC Compression
SOC compresses a complete GPS observation to 21 bytes/epoch. Each observation set is fully idependent making it ideally suited for real time data transmission from remote sites that may only have low bandwidth access to the Internet.
Message Type 200 Content:
| Bytes |
Name |
Type |
Description |
| 2 |
rec_id |
unsigned short |
200 indicates RT-IGS GPS observation. Data is in SOC format. |
| 2 |
sta_id |
unsigned short |
Unique RT-IGS number assigned to each station. |
| 4 |
GPSTime |
unsigned long |
GPS time message issued, GPS time is seconds from the beginning of GPS (6 Jan. 1980) |
| 2 |
num_bytes |
unsigned short |
Total number of bytes in the message including the header |
| 1 |
IODS |
unsigned char |
Issue of data station. This number will change in order to alert real-time users of a service affecting change at a station. |
| 1 |
num_obs |
unsigned char |
Number of GPS Observations in the data block |
| 21/sat |
*data |
unsigned char |
The data starts here. The pointer is not in the data stream. |
300: RT-IGS Ephemeris Message
Content: SV Broadcast Ephemeris (Subframes 1-3, parity removed)
| Bytes |
Name |
Type |
Description |
| 2 |
rec_id |
unsigned short |
300 indicates RT-IGS ephemeris message. |
| 2 |
sta_id |
unsigned short |
Unique RT-IGS number assigned to each station. |
| 4 |
CollectedGPSTime |
unsigned long |
Time ephemeris was received at a station. GPS time is seconds from the beginning of GPS (6 Jan. 1980) |
| 2 |
num_bytes |
unsigned short |
Total number of bytes in the message, including the header, but not the size of the data pointer |
| 1 |
IODS |
unsigned char |
Issue of data station. This number will change in order to alert real-time users of a service affecting change at a station. |
| 1 |
prn |
unsigned char |
PRN number for the data in the message. |
| 72 |
*data |
unsigned char |
The data starts here. The ephemeris data format consists of the 3 broadcast sub frames with the parity bits removed so 3 subframes = 72 bytes per eph. |
400: RT-IGS Meteorological Message
Content: Station Meteorological Observations
| Bytes |
Name |
Type |
Description |
| 2 |
rec_id |
unsigned short |
400 indicates RT-IGS meteorological message. |
| 2 |
sta_id |
unsigned short |
Unique number assigned to each station. |
| 4 |
GPSTime |
unsigned long |
GPS time message issued, GPS time is seconds from the beginning of GPS (6 Jan. 1980) |
| 2 |
num_bytes |
unsigned short |
Total number of bytes in the message, including the header, but not the size of the data pointer |
| 1 |
IODS |
unsigned char |
A flag indicating the current station configuration that derived the met. observations, this flag will change every time the station configuration changes |
| 1 |
Numobs |
unsigned char |
If only temperature, pressure, and relative humidity then: 3 |
|
*mets |
long |
Temp. (deg C), press (mb), rel. hum. (%), zenith wet (m), zenith dry (m), zenith total (m), and each scaled by 1000: so 1000.123mb = 1000123. If the zenith observations are not present only enter 3 for the number of observations. |
|