FORMATION OF MESSAGES IN RTCM SC-104 FORMAT

Key Parameters

Notation Description
RTCM SC-104Radio Technical Commission for Maritime Services Standard 104 - format for differential GNSS corrections.
30-bit wordBasic data unit in RTCM format - all messages transmitted as sequences of 30-bit words.
Preamble8-bit message header (01100110) for user identification of new message beginning.
Message Type6-bit field identifying transmitted message content (1-64 range).
Station ID10-bit field containing unique identifier of transmitting CCS (0-1023 range).
Modified Z-count13-bit time reference field (0-3599.4s range) with 0.6s increment for message parameter timing.
Sequence Number3-bit field (0-7 range) used for frame synchronization of transmission.
Frame Length5-bit field (0-31 range) containing message size in words, where 0 = 2 words.
Station Health3-bit field indicating CCS operability status (see Table 3 for decoding).
Parity6-bit error detection field at end of each 30-bit word for biphase modulated data.
PRCPseudorange Correction - 16-bit differential correction value (±655.34m or ±10485.44m range).
RRCRange Rate Correction - 8-bit correction extending PRC lifetime (±0.254 or ±4.064 m/s range).
UDREUser Differential Range Error - 2-bit integrity indicator (0-3 scale) for correction reliability.
IODIssue 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-84World Geodetic System 1984 - GPS reference coordinate system for position messages.
PZ-90Parametry Zemli 1990 - GLONASS reference coordinate system for position messages.
LSBLeast Significant Bit - minimum resolution value for encoded parameters (e.g., 0.01m for coordinates).
GPS Measurement Time20-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.
CLCIContinuity Loss Indicator - 5-bit counter (1-32) tracking carrier phase measurement continuity.
Carrier Phase32-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 Error4-bit field (0-15 range) indicating error from signal multipath using exponential encoding.
Pseudorange32-bit measurement field (0-85899345.90m range) with 0.02m resolution.
Health Data3-bit satellite health status repeating GPS ephemeris health word bits.
Signal/Noise Ratio5-bit field (0-31 range) indicating satellite signal quality at CCS (25-55 dBHz).
Health Enable1-bit forced health override: 1=consider satellite healthy despite user equipment determination.
New Navigation Data1-bit flag: 1=CCS registered new parameters for upcoming transmission.
Loss of Satellite Warning1-bit flag: 1=satellite changing from healthy to unhealthy state.
Time to Unhealthy4-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.
FillVariable 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.

Table 1
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.

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.

Table 3
Value Content
0Reserved for service provider
1Reserved for service provider
2Reserved for service provider
3Reserved for service provider
4Reserved for service provider
5Reserved for service provider
6Station transmission not monitored
7Station 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.

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.

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.

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.

Table 7
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.

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.

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.

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

Table 11
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.

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.

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.

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.

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.

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.

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.

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.

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.

Table 20
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.

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.

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.

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.

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.

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.

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.

Table 27
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.