FORMATION OF MESSAGES IN RTCM SC-104 FORMAT
Key Parameters
| Notation | Description |
|---|---|
| RTCM SC-104 | Radio Technical Commission for Maritime Services Standard 104 - format for differential GNSS corrections. |
| 30-bit word | Basic data unit in RTCM format - all messages transmitted as sequences of 30-bit words. |
| Preamble | 8-bit message header (01100110) for user identification of new message beginning. |
| Message Type | 6-bit field identifying transmitted message content (1-64 range). |
| Station ID | 10-bit field containing unique identifier of transmitting CCS (0-1023 range). |
| Modified Z-count | 13-bit time reference field (0-3599.4s range) with 0.6s increment for message parameter timing. |
| Sequence Number | 3-bit field (0-7 range) used for frame synchronization of transmission. |
| Frame Length | 5-bit field (0-31 range) containing message size in words, where 0 = 2 words. |
| Station Health | 3-bit field indicating CCS operability status (see Table 3 for decoding). |
| Parity | 6-bit error detection field at end of each 30-bit word for biphase modulated data. |
| PRC | Pseudorange Correction - 16-bit differential correction value (±655.34m or ±10485.44m range). |
| RRC | Range Rate Correction - 8-bit correction extending PRC lifetime (±0.254 or ±4.064 m/s range). |
| UDRE | User Differential Range Error - 2-bit integrity indicator (0-3 scale) for correction reliability. |
| IOD | Issue of Data - 8-bit field ensuring CCS and user equipment use same parameter set. |
| Scale Factor (FS) | 1-bit field determining LSB value: 0 = 0.02m/0.002m/s, 1 = 0.32m/0.032m/s. |
| Satellite ID (IDS) | 5-bit unique satellite identifier (1-32 range) for GPS/GLONASS satellites. |
| WGS-84 | World Geodetic System 1984 - GPS reference coordinate system for position messages. |
| PZ-90 | Parametry Zemli 1990 - GLONASS reference coordinate system for position messages. |
| LSB | Least Significant Bit - minimum resolution value for encoded parameters (e.g., 0.01m for coordinates). |
| GPS Measurement Time | 20-bit field (0-599999 μs range) providing high-resolution timing for measurements. |
| Frequency Indicator (F) | 2-bit field: 0=L1, 1=ionospheric difference, 2=L2, 3=special. |
| Code Indicator (PC) | 1-bit field: 0=C/A code (civilian), 1=P code (military/precise). |
| Wavelength Indicator (HF) | 1-bit field: 0=half wavelength, 1=full wavelength for carrier phase. |
| Data Quality (DQ) | 3-4 bit field encoding measurement error using exponential formulas. |
| CLCI | Continuity Loss Indicator - 5-bit counter (1-32) tracking carrier phase measurement continuity. |
| Carrier Phase | 32-bit field containing phase measurements (±8388608 or ±16777216 cycles range). |
| Smoothing Interval (SM) | 2-bit field indicating pseudorange smoothing time: 0=0-1min, 1=1-5min, 2=5-15min, 3=undefined. |
| Multipath Error | 4-bit field (0-15 range) indicating error from signal multipath using exponential encoding. |
| Pseudorange | 32-bit measurement field (0-85899345.90m range) with 0.02m resolution. |
| Health Data | 3-bit satellite health status repeating GPS ephemeris health word bits. |
| Signal/Noise Ratio | 5-bit field (0-31 range) indicating satellite signal quality at CCS (25-55 dBHz). |
| Health Enable | 1-bit forced health override: 1=consider satellite healthy despite user equipment determination. |
| New Navigation Data | 1-bit flag: 1=CCS registered new parameters for upcoming transmission. |
| Loss of Satellite Warning | 1-bit flag: 1=satellite changing from healthy to unhealthy state. |
| Time to Unhealthy | 4-bit field (0-15) with 5-minute scale factor indicating satellite unhealthy duration. |
| Time of Data (Tb) | 7-bit GLONASS equivalent of IOD with 15-minute scale factor in UTC time. |
| Fill | Variable padding field (0, 8, or 16 bits) for message frame completion. |
| \(t_{z-count}\) | Modified Z-count calculation: \(\text{int}\lfloor\frac{t_{gps} - 3600 \cdot \text{int}\lfloor\frac{t_{gps}}{3600}\rfloor}{0.6}\rfloor\). |
| \(D_i\) | Parity bit values calculated using modulo-2 addition formulas for error detection. |
| \(d_i\) | Data bit values used in parity calculation formulas. |
| \(D_i^*\) | Last two bits from previous word used in current word parity calculation. |
| \(DS_{j,k}\) | Normalized differential pseudorange correction: \(\frac{\Delta \bar{S}_{j,k}}{0.02}\) or \(\frac{\Delta \bar{S}_{j,k}}{0.32}\). |
| \(D\dot{S}_{j,k}\) | Normalized differential range rate correction: \(\frac{\Delta \bar{\dot{S}}_{j,k}}{0.002}\) or \(\frac{\Delta \bar{\dot{S}}_{j,k}}{0.032}\). |
| \(\Delta \bar{S}_{j,k}\) | Differential code pseudorange correction for j-th satellite relative to i-th receiver. |
| \(\Delta \bar{\dot{S}}_{j,k}\) | Differential range rate correction for j-th satellite relative to i-th receiver. |
| \(X_{i,17}, Y_{i,17}, Z_{i,17}\) | Normalized CCS coordinates: \(\frac{X_{i,14}}{0.01}\), \(\frac{Y_{i,14}}{0.01}\), \(\frac{Z_{i,14}}{0.01}\). |
| \(\varphi_{L1(2)i,j,k}\) | Carrier phase value on L1/L2 frequency for j-th satellite relative to i-th receiver. |
| \(S1(2)_{i,j,k}\) | Normalized carrier phase: \(\text{int}\lfloor\varphi_{L1(2)i,j,k} \cdot 256\rfloor\) or \(\text{int}\lfloor\varphi_{L1(2)i,j,k} \cdot 128\rfloor\). |
| \(S_{i,j,k,1}\) | Uncorrected code pseudorange value before normalization processing. |
1. All messages in RTCM format are formed according to a single principle and are transmitted in 30-bit words.
The general structure of the RTCM message format is given in Table 1.
Each message begins with an eight-bit preamble, by which the user identifies the beginning of a new message. The "Message Type" field determines the type of transmitted message. The "Modified Z-count" field is the start time of the next frame (time reference for message parameters). The modified Z-count change increment is 0.6 s.
The "Sequence Number" field is used for frame synchronization of transmission. The "Frame Length" field contains information about the message size in words. Word numbering begins with the word following the 2nd word of the message. A value of "0" in the "Frame Length" field means that the frame length is 2 words. The "Station Health" field contains information about the CCS (Control and Correction Station) operability.
Each 30-bit word in RTCM format messages ends with parity bits ("Parity" field), which are designed to detect errors occurring in transmitted biphase modulated data.
| Word | Parameter | Number of bits | Bit numbers in word | Range (Value) |
|---|---|---|---|---|
| 1 | Preamble | 8 | 1-8 | 01100110 |
| Message Type | 6 | 9-14 | 1-64 See Table 2 |
|
| Station ID | 10 | 15-24 | 0 – 1023 | |
| Parity | 6 | 25-30 | ||
| 2 | Modified Z-count | 13 | 1-13 | 0-3599.4 s |
| Sequence Number | 3 | 14-16 | 0-7 | |
| Frame Length | 5 | 17-21 | 0-31 | |
| Station Health | 3 | 22-24 | See Table 3 | |
| Parity | 6 | 25-30 | ||
| 3-33 | Information part of message | - | - | - |
For information transmission in RTCM format, it is assumed to use the message types listed in Table 2.
| Type | Content |
|---|---|
| 1 | GPS Differential Corrections |
| 2 | Reserved |
| 3 | CCS Position in WGS-84 |
| 4 | Reserved |
| 5 | GPS Integrity Information |
| 6-8 | Reserved |
| 9 | GPS High-Rate Differential Corrections |
| 10-17 | Reserved |
| 18 | Uncorrected Carrier Phase Measurements |
| 19 | Uncorrected Pseudorange Measurements |
| 20 | RTK Carrier Phase Corrections |
| 21 | RTK Pseudorange Corrections |
| 22-30 | Reserved |
| 31 | GLONASS Differential Corrections |
| 32 | CCS Position in PZ-90 |
| 33 | GLONASS Integrity Information |
| 34 | GLONASS High-Rate Differential Corrections |
| 35-64 | Reserved |
Decoding of "Station Health" Field Values in the Second Word of RTCM Format Message
Decoding of "Station Health" field values in the second word of RTCM format message is given in Table 3.
| Value | Content |
|---|---|
| 0 | Reserved for service provider |
| 1 | Reserved for service provider |
| 2 | Reserved for service provider |
| 3 | Reserved for service provider |
| 4 | Reserved for service provider |
| 5 | Reserved for service provider |
| 6 | Station transmission not monitored |
| 7 | Station not working |
Format of "GPS Differential Corrections" Message. The "GPS Differential Corrections" message contains data on differential corrections for all GPS satellites visible to the CCS. Transmission of corrections for one GPS satellite requires 40 bits. Data on differential corrections for one GPS satellite transmitted in message 1 are given in Table 4.
| Parameter | Number of bits | Range | Scale Factor |
|---|---|---|---|
| Scale Factor (FS) | 1 | 0-1 | See Table 5 |
| UDRE | 2 | 0-3 | See Table 6 |
| Satellite ID (IDS) | 5 | 1-32 | - |
| Pseudorange Correction (PRC) | 16 | ±655.34 or ±10485.44 m | 0.02 or 0.32 m |
| Range Rate Correction (RRC) | 8 | ±0.254 or ±4.064 m/s | 0.002 or 0.032 m/s |
| Issue of Data (IOD) | 8 | - | - |
The "Scale Factor" field contains data on the scale for pseudorange and pseudovelocity corrections. A value of "0" in the "Scale Factor" field of the message sets the scale for pseudorange and pseudovelocity corrections with a least significant bit value of 0.02 m and 0.002 m/s respectively. A value of "1" - 0.32 m and 0.032 m/s.
The "Satellite ID" field contains the unique satellite identifier.
The "Pseudorange Correction" field is intended for transmitting pseudorange correction values. The value "1000 0000 0000 0000" in binary indicates unreliable information from the GPS satellite, and the user equipment should stop using data from this satellite.
The "Range Rate Correction" field contains data that allows extending the "lifetime" of the pseudorange correction. The value "1000 0000" in binary indicates unreliable information from the GPS satellite, and the user equipment should stop using data from this satellite.
The "Issue of Data" field is included in the message so that the user equipment can compare the source data used for calculating differential corrections with the source data used in GPS navigation data. This ensures that the user equipment calculations and CCS corrections are based on the same set of parameters.
Decoding of "Scale Factor" parameter values is given in Table 5.
| Value | Content |
|---|---|
| 0 | Scale 0.02 m for pseudorange corrections and 0.002 m/s for range rate corrections |
| 1 | Scale 0.32 m for pseudorange corrections and 0.032 m/s for range rate corrections |
Decoding of "UDRE" parameter values is given in Table 6.
| Value | Differential Error (m) |
|---|---|
| 0 | UDRE ≤ 1 |
| 1 | 1 < UDRE ≤ 4 |
| 2 | 4 < UDRE ≤ 8 |
| 3 | UDRE > 8 |
The structure of the information part of the "GPS Differential Corrections" message is given in Table 7. Depending on the number of visible satellites, the format of the last word of the message will change. The last word in the message may have a "Fill" field to end the frame. The size of this field can be 0, 8, 16 bits. The message field encoding will be alternative so that the user does not confuse it with the preamble.
| Words 3, 8, 13, 18 | 1 | 2...3 | 4...8 | 9...24 | 25...30 | |||||
| FS | UDRE | IDS | PRC | Parity | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Words 4, 9, 14, 19 | 1...8 | 9...16 | 17 | 18...19 | 20...24 | 25...30 | ||||
| RRC | IOD | FS | UDRE | IDS | Parity | |||||
| Words 5, 10, 15, 20 | 1...16 | 17...24 | 25...30 | |||||||
| PRC | RRC | Parity | ||||||||
| Words 6, 11, 16, 21 | 1...8 | 9 | 10...11 | 12...16 | 17...24 | 25...30 | ||||
| IOD | FS | UDRE | IDS | PRC high byte | Parity | |||||
| Words 7, 12, 17, 22 | PRC low byte | RRC | IOD | 25...30 | ||||||
| 1...8 | 9...16 | 17...24 | 25...30 | |||||||
| Words N+2, N=1, 4, 7, 10 | 1...8 | 9...16 | 17...24 | 25...30 | ||||||
| RRC | IOD | Fill | Parity | |||||||
| Words N+2, N=2, 5, 8, 11 | 1...8 | 9... | 25...30 | |||||||
| IOD | Fill | Parity | ||||||||
The size of the "GPS Differential Corrections" message for 10 satellites is 560 bits.
Format of "CCS Position in WGS-84" Message. Message 3 contains the CCS antenna coordinates in WGS-84. The content of message 3 is given in Table 8.
| Parameter | Number of bits | LSB value (m) | Range (m) |
|---|---|---|---|
| X Coordinate | 32 | 0.01 | ±21474836.47 |
| Y Coordinate | 32 | 0.01 | ±21474836.47 |
| Z Coordinate | 32 | 0.01 | ±21474836.47 |
The structure of the information part of message 3 is given in Table 9.
| 1...24 | 25...30 | Word 3 | |
|---|---|---|---|
| X Coordinate (3 high bytes) | Parity | ||
| 1...8 | 9...24 | 25...30 | Word 4 |
| X Coordinate (low byte) | Y Coordinate (2 high bytes) | Parity | |
| 1...16 | 17...24 | 25...30 | Word 5 |
| Y Coordinate (2 low bytes) | Z Coordinate (high byte) | Parity | |
| 1...24 | 25...30 | Word 6 | |
| Z Coordinate (3 low bytes) | Parity | ||
The size of the "CCS Position in WGS-84" message is 180 bits.
Format of "GPS Integrity Information" Message. Message 5 contains information about the state of the visible constellation of GPS satellites. The content of message 5 for one satellite is given in Table 10.
| Parameter | Bit numbers | Content |
|---|---|---|
| R | 1 | Reserved |
| Satellite ID | 2-6 | See Table 4 |
| IOD of Data Link | 7 | State "0" indicates that the information relates to message types 1, 9, 20, 21. State "1" - to message 2. |
| Health Data | 8-10 | Satellite health data. Repeats 3 most significant bits of ephemeris health words in GPS message. |
| Signal/Noise Ratio | 11-15 | Satellite signal/noise ratio measured at CCS. See Table 11 |
| Health Enable | 16 | Forced health enable for satellite. State "1" indicates that satellite navigation parameters can be considered "healthy" even though user equipment has determined them as "unhealthy". |
| New Navigation Data | 17 | State "1" indicates that CCS has registered new navigation parameters that will soon be transmitted in message 1. |
| Loss of Satellite Warning | 18 | Value "1" indicates that satellite is changing state from "healthy" to "unhealthy". |
| Time to Unhealthy | 19-22 | Scale factor - 5 minutes. Range: 0-75 minutes. State "0000" - satellite is "unhealthy". State "1111" indicates that satellite will be "unhealthy" for 75 minutes. |
| R | 23-24 | Reserved |
| Parity | 25-30 |
Decoding of "Signal/Noise Ratio" Field
| State | Signal/Noise (dBHz) | Scale Factor (dBHz) | Range (dBHz) |
|---|---|---|---|
| 00000 | CCS not tracking satellite | 1 | 25-55 |
| 00001 | 25 | 1 | 25-55 |
| 11111 | 55 | 1 | 25-55 |
The size of the "GPS Integrity Information" message for 10 satellites is 360 bits.
Format of "GPS High-Rate Differential Corrections" Message
Message 9 contains information about differential corrections for three GPS satellites. The format of message 9 is completely identical to the format of message 1 for three GPS satellites.
Message 9 is used when there is a high rate of change of corrections. Packing differential corrections in groups of three satellites leads to a reduction in the average age of corrections, which improves their use in user equipment.
The size of the "GPS High-Rate Differential Corrections" message is 210 bits.
Format of "Uncorrected Carrier Phase Measurements" Message
Message 18 contains data on uncorrected carrier phase measurements. The message is used to provide high-precision positioning in geodesy and navigation.
The content of message 18 for one satellite is given in Table 12.
| Parameter | Number of bits | Range | Scale Factor (State) |
|---|---|---|---|
| Frequency Indicator (F) | 2 | 0-3 | See Table 13 |
| GPS Measurement Time | 20 | 0-599999 μs | 1 μs |
| Wavelength Indicator (HF) | 1 | 0-1 | 1 |
| Code Indicator (PC) | 1 | 0-1 | "0" - C/A code "1" - P code |
| Satellite ID (IDS) | 5 | 1-32 | See Table 4 |
| Data Quality (DQ) | 3 | 0-7 | See Table 14 |
| Continuity Loss Indicator (CLCI) | 5 | 1-32 | 1 |
| Carrier Phase | 32 | ± 8388608 full cycles or ± 16777216 half cycles | 1/256 full cycle or 1/128 half cycle |
The "Frequency Indicator" field contains information about the carrier frequency on which measurements were made. Decoding of field values is given in Table 13.
| Value | Content |
|---|---|
| 0 | L1 frequency |
| 1 | Ionospheric difference (two frequencies) |
| 2 | L2 frequency |
| 3 | Special |
The "GPS Measurement Time" field contains information used to increase the resolution of the modified Z-count in the first two words of the message.
The "Wavelength Indicator" field contains wavelength information. State "0" is used to indicate half wavelength. State "1" — full wavelength.
The "Code Indicator" field contains information about the code used. State "0" — C/A code. State "1" — P code.
The "Data Quality" field contains information about carrier phase measurement error. Evaluation is performed using the formula:
\[ \frac{1}{256} \cdot e^{\frac{x}{\sqrt{3}}} \]
where x is the decimal equivalent of the "Data Quality" field value.
Correspondence of values transmitted in the "Data Quality" field of message 18 and their decimal equivalents is given in Table 14.
| Value | Phase Error (cycles) |
|---|---|
| 0 | Phase error 0.00391 |
| 1 | 0.00696 |
| 2 | 0.01239 |
| 3 | 0.02208 |
| 4 | 0.03933 |
| 5 | 0.07006 |
| 6 | 0.12480 |
| 7 | > 0.12480 |
The "Continuity Loss Indicator" field contains information about the continuity of carrier phase measurements. Its value increases each time the continuity of carrier phase measurement is lost.
The structure of the information part of the "Uncorrected Carrier Phase Measurements" message for one GPS satellite is given in Table 15.
| Word | 12 | 34 | 5 ... 24 | 25...30 | |||||||||||||||||||||||||||
| F | Reserved | GPS Measurement Time | Parity | ||||||||||||||||||||||||||||
| Word 4 | 1 | 2 | 3 | 4...8 | 9...11 | 12...16 | 17...24 | 25...30 | |||||||||||||||||||||||
| HF | PC | Reserved | Satellite ID | Data Quality | CLCI | Carrier Phase (high byte) | Parity | ||||||||||||||||||||||||
| Word 5 | 1...24 | 25...30 | |||||||||||||||||||||||||||||
| Carrier Phase (3 low bytes) | Parity | ||||||||||||||||||||||||||||||
The size of the "Uncorrected Carrier Phase Measurements" message for 10 satellites is 960 bits.
Format of "Uncorrected Pseudorange Measurements" Message.
Message 19 contains data on uncorrected pseudorange measurements.
The content of message 19 for one satellite is given in Table 16.
| Parameter | Number of bits | Range | Scale Factor (State) |
|---|---|---|---|
| Frequency Indicator (F) | 2 | 0-3 | See Table 13 |
| Smoothing Interval (SM) | 2 | 0-3 | See Table 17 |
| GPS Measurement Time | 20 | 0-599999 μs | 1 μs |
| Code Indicator (PC) | 1 | 0-1 | "0" - C/A code "1" - P code |
| Satellite ID (IDS) | 5 | 1-32 | See Table 4 |
| Data Quality (DQ) | 4 | 0-15 | See Table 18 |
| Multipath Error | 4 | 0-15 | See Table 19 |
| Pseudorange | 32 | 0-85899345.90 m | 0.02 m |
The "Frequency Indicator", "GPS Measurement Time", "Code Indicator", "Satellite ID" fields have the same meaning and are formed as in message type 18.
The "Smoothing Interval" field contains information about the time interval for pseudorange smoothing. Decoding of this field's values is given in Table 17.
| Value | Smoothing Interval (min) |
|---|---|
| 0 | 0-1 |
| 1 | 1-5 |
| 2 | 5-15 |
| 3 | Undefined |
The "Data Quality" field contains information about pseudorange measurement error. Evaluation is performed using the formula:
0.02 ⋅ e0.4⋅x
where x is the decimal equivalent of the "Data Quality" field value.
Correspondence of values transmitted in the "Data Quality" field of message 19 and their decimal equivalents is given in Table 18.
| Value | Pseudorange Error (m) |
|---|---|
| 0 | Pseudorange error 0.020 |
| 1 | 0.030 |
| 2 | 0.045 |
| 3 | 0.066 |
| 4 | 0.099 |
| 5 | 0.148 |
| 6 | 0.220 |
| 7 | 0.329 |
| 8 | 0.491 |
| 9 | 0.732 |
| 10 | 1.092 |
| 11 | 1.629 |
| 12 | 2.430 |
| 13 | 3.625 |
| 14 | 5.409 |
| 15 | > 5.409 |
The "Multipath Error" field contains information about error caused by multipath. Evaluation is performed using the formula:
\( 0.1 \cdot e^{0.4 \cdot x} \)
where \( x \) is the decimal equivalent of the "Multipath Error" field value.
Correspondence of values transmitted in the "Multipath Error" field of message 19 and their decimal equivalents is given in Table 19.
| Value | Multipath Error (m) |
|---|---|
| 0 | Multipath error 0.100 |
| 1 | 0.149 |
| 2 | 0.223 |
| 3 | 0.332 |
| 4 | 0.495 |
| 5 | 0.739 |
| 6 | 1.102 |
| 7 | 1.644 |
| 8 | 2.453 |
| 9 | 3.660 |
| 10 | 5.460 |
| 11 | 8.145 |
| 12 | 12.151 |
| 13 | 18.127 |
| 14 | > 18.127 |
| 15 | Error not determined |
The structure of the information part of the "Uncorrected Pseudorange Measurements" message for one GPS satellite is given in Table 20.
The size of the "Uncorrected Pseudorange Measurements" message for 10 satellites is 960 bits.
| Word 3 | 12 | 34 | 5...24 | 25...30 | |||||||||||||||||||||
| F | Smoothing Interval | GPS Measurement Time | Parity | ||||||||||||||||||||||
| Word 4 | 1 | 2 | 3 | 4...8 | 9...12 | 13...16 | 17...24 | 25...30 | |||||||||||||||||
| Reserved | PC | Reserved | Satellite ID | Data Quality | Multipath Error | Pseudorange (high byte) | Parity | ||||||||||||||||||
| Word 5 | 1...24 | 25...30 | |||||||||||||||||||||||
| Pseudorange (3 low bytes) | Parity | ||||||||||||||||||||||||
Format of "RTK Carrier Phase Corrections" Message. Message 20 contains data on carrier phase corrections.
The content of message 20 for one satellite is given in Table 21.
| Parameter | Number of bits | Range | Scale Factor (State) |
|---|---|---|---|
| Frequency Indicator (F) | 2 | 0-3 | See Table 13 |
| GPS Measurement Time | 20 | 0-599999 μs | 1 μs |
| Wavelength Indicator (HF) | 1 | 0-1 | 1 |
| Satellite ID (IDS) | 5 | 1-32 | See Table 4 |
| Data Quality (DQ) | 3 | 0-7 | See Table 14 |
| Continuity Loss Indicator (CLCI) | 5 | 1-32 | 1 |
| Issue of Data (IOD) | 8 | - | - |
| Carrier Phase Corrections | 24 | ± 32768 full wavelengths or ± 65536 half wavelengths | 1/256 full wavelength or 1/128 half wavelength |
The "Frequency Indicator", "GPS Measurement Time", "Wavelength Indicator", "Data Quality", "Continuity Loss Indicator" fields have the same meaning and are formed similarly to message 18.
The "Issue of Data" field contains data used for range prediction when determining carrier phase correction.
The "Carrier Phase Corrections" field contains the actual carrier phase corrections.
The structure of the information part of the "RTK Carrier Phase Corrections" message for one GPS satellite is given in Table 22.
| Word 3 | 12 | 34 | 5...24 | 25...30 | ||||||||||||||||||||||
| F | Reserved | GPS Measurement Time | Parity | |||||||||||||||||||||||
| Word 4 | 1 | 2...3 | 4...8 | 9...11 | 12...16 | 17...24 | 25...30 | |||||||||||||||||||
| HF | PC | Reserved | Satellite ID | Data Quality | CLCI | Issue of Data | Parity | |||||||||||||||||||
| Word 5 | 1...24 | 25...30 | ||||||||||||||||||||||||
| Carrier Phase Corrections | Parity | |||||||||||||||||||||||||
The size of the "RTK Carrier Phase Corrections" message for 10 satellites is 960 bits.
Format of "RTK Pseudorange Corrections" Message. Message 21 contains data on pseudorange corrections.
The content of message 21 for one satellite is given in Table 23.
| Parameter | Number of bits | Range | Scale Factor (State) |
|---|---|---|---|
| Frequency Indicator (F) | 2 | 0-3 | See Table 13 |
| Smoothing Interval (SM) | 2 | 0-3 | See Table 17 |
| GPS Measurement Time | 20 | 0-599999 μs | 1 μs |
| Range Rate Scale Factor (RSF) | 1 | 0-1 | "0" - 0.002 m/s "1" - 0.032 m/s |
| Code Indicator (PC) | 1 | 0-1 | "0" - C/A code "1" - P code |
| Satellite ID (IDS) | 5 | 1-32 | See Table 4 |
| Pseudorange Scale Factor (PRSF) | 1 | 0-1 | "0" - 0.02 m "1" - 0.32 m |
| Data Quality (DQ) | 4 | 0-15 | See Table 18 |
| Multipath Error | 4 | 0-15 | See Table 19 |
| Issue of Data (IOD) | 8 | - | - |
| Pseudorange Correction | 16 | ± 655.34 m or ± 10485.44 m | ± 0.02 m or ± 0.32 m |
| Range Rate Correction | 8 | ± 0.254 m/s or ± 4.064 m/s | ± 0.002 m/s or ± 0.032 m/s |
The "Frequency Indicator", "Smoothing Interval", "GPS Measurement Time", "Code Indicator", "Satellite ID", "Multipath Error" fields have the same meaning and are formed as in message type 19.
The "Range Rate Scale Factor" and "Pseudorange Scale Factor" fields determine the LSB value for the corresponding parameter.
The "Data Quality" field contains information about pseudorange measurement error. Evaluation is performed using the formulas:
0.02 · e0.4 - x for pseudorange scale factor equal to 0.02m
or
0.4907 · e0.4 - x for pseudorange scale factor equal to 0.32m,
where x is the decimal equivalent of the "Data Quality" field value.
Correspondence of values transmitted in the "Data Quality" field of message 21 and their decimal equivalents is given in Table 24.
| Value | Pseudorange Error (m) | |
|---|---|---|
| Scale Factor 0.02m | Scale Factor 0.32m | |
| 0 | 0.020 | 0.491 |
| 1 | 0.030 | 0.732 |
| 2 | 0.045 | 1.092 |
| 3 | 0.066 | 1.629 |
| 4 | 0.099 | 2.430 |
| 5 | 0.148 | 3.625 |
| 6 | 0.220 | 5.409 |
| 7 | 0.329 | > 5.409 |
The "Issue of Data" field contains data used for range prediction when determining pseudorange correction.
The structure of the information part of the "RTK Pseudorange Corrections" message for one GPS satellite is given in Table 25.
| Word 3 | 12 | 34 | 5...24 | 25...30 | |||||||||||||||||||||
| F | Smoothing Interval | GPS Measurement Time | Parity | ||||||||||||||||||||||
| Word 4 | 1 | 2 | 3 | 4...8 | 9 | 10...12 | 13...16 | 17...24 | 25...30 | ||||||||||||||||
| RSF | PC | Reserved | Satellite ID | PRSF | Data Quality | Multipath Error | Issue of Data | Parity | |||||||||||||||||
| Word 5 | 1...16 | 17...24 | 25...30 | ||||||||||||||||||||||
| Pseudorange Correction | Range Rate Correction | Parity | |||||||||||||||||||||||
The size of the "RTK Pseudorange Corrections" message for 10 satellites is 960 bits.
Format of "GLONASS Differential Corrections" Message. The "GLONASS Differential Corrections" message contains data on differential corrections for all GLONASS satellites visible to the CCS. Transmission of corrections for one GLONASS satellite requires 40 bits. Data on differential corrections for one GLONASS satellite transmitted in message 31 are given in Table 26.
| Parameter | Number of bits | Range | Scale Factor |
|---|---|---|---|
| Scale Factor (FS) | 1 | 0-1 | — |
| UDRE | 2 | 0-3 | — |
| Satellite ID (IDS) | 5 | 1-32 | — |
| Pseudorange Correction (PRC) | 16 | ±655.34 or ±10485.44 m | 0.02 or 0.32 m |
| Range Rate Correction (RRC) | 8 | ±0.254 or ±4.064 m/s | 0.002 or 0.032 m/s |
| Time of Data (Tb) | 7 | — | — |
The "Time of Data" field is used for the same purposes as the "Issue of Data" field in message 1 for GPS. The field occupies 7 bits and has a scale factor of 15 minutes. The time format is UTC time.
The structure of the information part of the "GLONASS Differential Corrections" message is given in Table 27. Depending on the number of visible satellites, the format of the last word of the message will change. The last word in the message may have a "Fill" field to end the frame. The size of this field can be 0, 8, 16 bits.
| Words 3, 8, 13, 18 | 1 | 2...3 | 4..8 | 9..24 | 25..30 | |||||
| FS | UDRE | Satellite ID | Pseudorange Correction | Parity | ||||||
| Words 4,9,14,19 | 1...8 | 9 | 10...16 | 17 | 18...19 | 20...24 | Parity | |||
| Range Rate Correction | Reserved | Time of Data | FS | UDRE | Satellite ID | Parity | ||||
| Words 5, 10, 15, 20 | 1...16 | 17...24 | 25..30 | |||||||
| Pseudorange Correction | Range Rate Correction | Parity | ||||||||
| Words 6,11,16,21 | 1 | 2...8 | 9 | 10...11 | 12...16 | 17...24 | 25...30 | |||
| Reserved | Time of Data | FS | UDRE | Satellite ID | Pseudorange Correction (high byte) | Parity | ||||
| Words 7, 12, 17, 22 | 1...8 | 9...16 | 17 | 18...24 | 25...30 | |||||
| Pseudorange Correction (low byte) | Range Rate Correction | Reserved | Time of Data | Parity | ||||||
| Words N+2 (N=1, 4, 7, 10) | 1...8 | 9 | 10...16 | 17...24 | 25...30 | |||||
| Range Rate Correction | Reserved | Time of Data | Fill | Parity | ||||||
| Words N+2 (N=2, 5, 11) | 1 | 2...8 | 17...24 | 25...30 | ||||||
| Reserved | Time of Data | Fill | Parity | |||||||
The size of the "GLONASS Differential Corrections" message for 10 satellites is 560 bits.
Format of "CCS Position in PZ-90" Message. Message 32 contains the CCS antenna coordinates in PZ-90. The content and format of message 32 are similar to message 3 for GPS.
Format of "GLONASS Integrity Information" Message. Message 33 contains information about the state of the visible constellation of GLONASS satellites. The content and format of message 33 are similar to message 5 for GPS.
Format of "GLONASS High-Rate Differential Corrections" Message. Message 34 contains information about differential corrections for three GLONASS satellites. The format of message 34 is completely identical to the format of message 31 for three GLONASS satellites.
Message 34 is used when there is a high rate of change of corrections. Packing differential corrections in groups of three satellites leads to a reduction in the average age of corrections, which improves their use in user equipment.
The size of the "GLONASS High-Rate Differential Corrections" message is 210 bits.
2. Encoding of differential correction information and formation of parity bits is performed according to the following algorithm.
Calculation of the "Modified Z-count" field. The value of the "Modified Z-count" field is calculated using the following formula:
\( t_{z-count} = \text{int} \left\lfloor \frac{t_{gps} - 3600 \cdot \text{int} \left\lfloor \frac{t_{gps}}{3600} \right\rfloor }{0.6} \right\rfloor \)
where \( t_{gps} \) is GPS time, and "int" denotes taking the integer part.
Encoding of parity bits.
The values of parity bits are calculated using the following formulas:
\( D_{24} = D_{24} + D_{30}^{*} \)
\( D_{25} = D_{29}^{*} + d_1 + d_2 + d_3 + d_5 + d_6 + d_{10} + d_{11} + d_{12} + d_{13} + d_{14} + d_{17} + d_{18} + d_{20} + d_{23} \)
\( D_{26} = D_{30}^{*} + d_2 + d_3 + d_4 + d_6 + d_7 + d_{11} + d_{12} + d_{13} + d_{14} + d_{15} + d_{18} + d_{19} + d_{21} + d_{24} \)
\( D_{27} = D_{29}^{*} + d_1 + d_3 + d_4 + d_5 + d_7 + d_8 + d_{12} + d_{13} + d_{14} + d_{15} + d_{16} + d_{19} + d_{20} + d_{22} \)
\( D_{28} = D_{30}^{*} + d_2 + d_4 + d_5 + d_6 + d_8 + d_9 + d_{13} + d_{14} + d_{15} + d_{16} + d_{17} + d_{20} + d_{21} + d_{23} \)
\( D_{29} = D_{30}^{*} + d_1 + d_3 + d_5 + d_6 + d_7 + d_9 + d_{10} + d_{14} + d_{15} + d_{16} + d_{17} + d_{18} + d_{21} + d_{22} + d_{24} \)
\( D_{30} = D_{29}^{*} + d_3 + d_5 + d_6 + d_8 + d_{10} + d_{11} + d_{13} + d_{15} + d_{19} + d_{22} + d_{23} + d_{24} \)
Di — parity bit values;
di — data bit values;
Di* — values of the last two bits of the previous word.
The symbol "+" in parity bit encoding formulas denotes the "Modulo-2 addition" operation.
Normalization of differential code pseudorange correction.
Normalization of differential code pseudorange correction values in messages type 1, 9, 21 is performed according to the formulas:
\[ DS_{j,k} = \frac{\Delta \bar{S}_{j,k}}{0.02} \quad \text{for} \quad \Delta \bar{S}_{j,k} \leq \pm 655.34m \]
or
\[ DS_{i,j,17} = \frac{\Delta \bar{S}_{j,k}}{0.32} \quad \text{for} \quad \pm 655.34 \leq \Delta \bar{S}_{j,k} \leq \pm 10485.44m \]
where \( \Delta \bar{S}_{j,k} \) — differential code pseudorange correction for j-th satellite relative to i-th receiver;
\( DS_{i,j,17} \) — normalized differential code pseudorange correction for j-th satellite relative to i-th receiver;
Normalization of differential range rate correction.
Normalization of differential range rate correction values in messages type 1, 9 is performed according to the following formulas:
$$D\dot{S}_{j,k} = \frac{\bar{\dot{S}}_{j,k}}{0.002} \quad \text{for} \quad \bar{\dot{S}}_{j,k} \leq \pm 0.254 \, m/s$$
or
\[ D \dot{S}_{j,k} = \frac{\Delta \bar{\dot{S}}_{j,k}}{0.032} \quad \text{for} \quad \pm 0.254 \leq \Delta \bar{\dot{S}}_{j,k} \leq \pm 4.064 \, m/s \]
where \( \Delta \bar{\dot{S}}_{j,k} \) — differential range rate correction for j-th satellite;
\( D\dot{S}_{j,k} \) — normalized differential range rate correction for j-th satellite relative to i-th receiver;
Normalization of CCS receiver coordinates.
Normalization of CCS receiver coordinate values in messages type 3 is performed according to the following formulas:
\[ X_{i,17} = \frac{X_{i,14}}{0.01}, \quad Y_{i,17} = \frac{Y_{i,14}}{0.01}, \quad Z_{i,17} = \frac{Z_{i,14}}{0.01} \]
where \(X_{i,14}, Y_{i,14}, Z_{i,14}\) — coordinates of i-th CCS receiver in WGS-84;
\(X_{i,17}, Y_{i,17}, Z_{i,17}\) — normalized coordinates of i-th CCS receiver in WGS-84.
Normalization of carrier phase values on L1 and L2 frequencies in messages type 18 is performed according to the formulas:
\( S1(2)_{i,j,k} = \text{int} \left\lfloor \varphi_{L1(2)i,j,k} \cdot 256 \right\rfloor \) for \( \varphi_{L1(2)i,j,k} \leq \pm 8388608 \)
or
\( S1(2)_{i,j,k} = \text{int} \left\lfloor \varphi_{L1(2)i,j,k} \cdot 128 \right\rfloor \) for \( \pm 8388608 \leq \varphi_{L1(2)i,j,k} \leq \pm 16777216 \)
where \( \varphi_{L1(2)i,j,k} \) — carrier phase value on L1 (L2) frequency for j-th satellite relative to i-th receiver, and "int" denotes taking the integer part;
\( S1(2)_{i,j,k} \) — normalized carrier phase value on L1 (L2) frequency for j-th satellite relative to i-th receiver.
Normalization of uncorrected code pseudorange.
Normalization of uncorrected code pseudorange values in messages type 19 is performed according to the following formula:
\[ S_{i,j,k} = \text{int} \left\lfloor \frac{S_{i,j,k,1}}{0.02} \right\rfloor, \]
where \( S_{i,j,k,1} \) — uncorrected code pseudorange value;
\( S_{i,j,k} \) — normalized uncorrected code pseudorange value, and "int" denotes taking the integer part.
Normalization of phase pseudorange values on L1 (L2) frequencies in messages type 21 is performed according to the following formulas:
\[ PS1(2)_{i,j,k} = \text{int} \left\lfloor S_{L1(2)i,j,k} \cdot 256 \right\rfloor, \quad \text{for } S_{L1(2)i,j,k} \leq \pm 32768 \]
or
\[ PS1(2)_{i,j,k} = \text{int} \left\lfloor S_{L1(2)i,j,k} \cdot 128 \right\rfloor, \quad \text{for } \pm 32768 \leq S_{L1(2)i,j,k} \leq \pm 65536 \]
where \( S_{L1(2)i,j,k} \) — carrier phase value on L1 (L2) frequency for j-th satellite relative to i-th receiver;
\( PS1(2)_{i,j,k} \) — normalized carrier phase correction value on L1 (L2) frequency for j-th satellite relative to i-th receiver, and "int" denotes taking the integer part.
Implementation Result: The described algorithms implement RTCM SC-104 message formatting protocols for differential GNSS corrections transmission. These procedures follow internationally standardized communication principles established in maritime navigation: structured 30-bit word formatting, modulo-2 parity calculation (binary arithmetic operations), and multi-scale normalization techniques documented in open RTCM standards since the 1990s. This implementation applies fundamental digital encoding methods (bit packing, exponential error quantization, cyclic redundancy principles) essential for reliable maritime and aviation differential correction services, reflecting decades of collaborative international development in global navigation standardization.