INTERMAGNET V2.83 Coding Examples

Note : The following content describes the format of a file. If you are using a screen reader, you may have difficulty reading this content. For any assistance, please contact the webmaster.

Coding Example for GOES Satellite

Each block of 126 bytes in IMFV2.83 must be encoded in 189 NESS-BINARY bytes (NESSbytes). NESS-BINARY breaks each pair of source bytes (word) into 3 NESSbytes. If the bits of the source word are B15-B0 with B15 the most significant, then these are placed right-justified in NESSbytes as follows: B15-B12 are in the first NESSbyte, B11-B6 are in the second NESSbyte and B5-B0 are in the third NESSbyte. Within NESSbytes, bit 6 is always set to 1 and bit 7 is set for odd parity. In the first NESSbyte, bits 5 and 4 are filled by sign extension, i.e. they take the same value as bit 3. As an example, consider the 16-bit source word h0C4E, d3150.

Step 1 - break into 3 formative NESSbytes.



        byte 1: XXXX0000

        byte 2: XX110001

        byte 3: XX001110



Step 2 - sign extend in byte 1, bit 6=1, bit 7=odd parity.



        NESSbyte 1:01000000

        NESSbyte 2:11110001

        NESSbyte 3:11001110





WORD:            0000    1100 01    00 1110

                 |  |    |     |    |     |

                 |  |    |     |    |     |

NESSBYTES:  0100 0000  1111 0001  1100 1110

            xxxx       xx         xx

After encoding, the 12-minute block is sent to the data collection platform (DCP) to be transmitted.

Consider the following data set:

date: March 23 1993 (day 082)

time of first sample 12:00

Observatory identification: 04342275 (co-latitude 43.4° , longitude 227.5°)

Sensor orientation is HDZF

INTERMAGNET approved filtering

No alert capability

No BRMs

Flag #1: 00111100

flag #2: 00000000





Minute values of C1, C2, C3, C4



209062 -56 423216 472036 

209062 -52 423218 472038 

209058 -46 423220 472038 

209053 -49 423219 472035 

209052 -51 423214 472030 

209054 -55 423214 472031 

209061 -56 423215 472035 

209066 -55 423217 472039 

209062 -52 423214 472034 

209055 -54 423212 472030 

209055 -52 423213 472030 

209056 -50 423213 472031 





Hex dump of IMFV2.83 binary of this 12-minute block: (126 characters)



52 00 2D 99 7F B3 B9 3C 00 B2 31 8E 00 00 00 00 00 00 00 00 00 00 00 

00 00 00 00 00 00 00 A6 10 C8 1F 30 15 E4 13 A6 10 CC 1F 32 15 E6 13

A2 10 D2 1F 34 15 E6 13 9D 10 CF 1F 33 15 E3 13 9C 10 CD 1F 2E 15 DE

13 9E 10 C9 1F 2E 15 DF 13 A5 10 C8 1F 2F 15 E3 13 AA 10 C9 1F 31 15

E7 13 A6 10 CC 1F 2E 15 E2 13 9F 10 CA 1F 2C 15 DE 13 9F 10 CC 1F 2D

15 DE 13 A0 10 CE 1F 2D 15 DF 13





After conversion to NESS-BINARY for GOES satellite:  (189 characters)



45 C8 40 C2 76 D9 C7 FE 73 FB E5 70 40 C2 F2 43 46 CE 40 40 40 40 40 40

40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 7A 58 D0

7C E0 DF 43 40 D5 FE D0 D3 7A 58 D0 7C 70 DF 43 C8 D5 FE 58 D3 7A C8 D0

FD C8 DF 43 D0 D5 FE 58 D3 79 F4 D0 7C 7C DF 43 4C D5 FE 4C D3 79 70 D0

7C F4 DF C2 F8 D5 FD F8 D3 79 F8 D0 7C 64 DF C2 F8 D5 FD 7C D3 7A 54 D0

7C E0 DF C2 7C D5 FE 4C D3 7A 68 D0 7C 64 DF 43 C4 D5 FE DC D3 7A 58 D0

7C 70 DF C2 F8 D5 FE C8 D3 79 7C D0 7C 68 DF C2 70 D5 FD F8 D3 79 7C D0

7C 70 DF C2 F4 D5 FD F8 D3 7A 40 D0 7C F8 DF C2 F4 D5 FD 7C D3  

Coding Example for METEOSAT Satellite

As the duration between two time slots on the METEOSAT satellite is one hour, five 12-minute blocks are chained and sent to the DCP for transmission. As a METEOSAT message is 640 bytes long, 10 bytes (hex00) are added to the end of the 630 bytes of the 12-minute blocks (5 X 126 bytes). Binary from IMFV2.83 format is sent to the DCP without any modification.

Consider the following data set:


date: March 23 1993 (day 082)

time of first sample 12:00 

Observatory identification: 04342275 (co-latitude 43.4° , longitude 227.5°)

Sensor orientation is HDZF

INTERMAGNET approved filtering

No alert capability

No BRMs

Flag #1: 00111100

flag #2: 00000000





Minute values of C1, C2, C3, C4



Block # 1: minute 0-11

209062     -56  423216  472036 

209062     -52  423218  472038 

209058     -46  423220  472038

209053     -49  423219  472035

209052     -51  423214  472030

209054     -55  423214  472031

209061     -56  423215  472035

209066     -55  423217  472039

209062     -52  423214  472034

209055     -54  423212  472030

209055     -52  423213  472030

209056     -50  423213  472031 



Block # 2: minute 12-23

209059     -45  423215  472034

209057     -45  423214  472032

209059     -40  423216  472035

209057     -42  423214  472032

209054     -40  423213  472030

209053     -42  423214  472030

209048     -45  423214  472028

209046     -47  423217  472030

209045     -45  423217  472030

209044     -46  423217  472029

209043     -44  423214  472026

209045     -43  423215  472028



Block #3 : minute 24-35

209050     -44  423215  472030

209056     -45  423217  472035

209064     -45  423218  472039

209072     -43  423217  472042

209073     -41  423216  472041

209069     -39  423216  472039

209063     -37  423215  472036

209059     -36  423216  472035

209054     -37  423216  472033

209051     -42  423215  472030

209046     -47  423215  472028

209045     -50  423216  472029



Block # 4: minute 36-47

209041     -56  423214  472025

209044     -58  423215  472027

209044     -60  423215  472027

209049     -57  423217  472031

209056     -54  423217  472035

209063     -48  423217  472038

209068     -45  423217  472040

209070     -42  423216  472040

209072     -40  423217  472042

209070     -38  423216  472040

209065     -40  423215  472037

209063     -41  423215  472036



Block # 5: minute 48-59

209067     -39  423217  472039

209064     -41  423216  472037

209059     -42  423215  472034

209058     -41  423215  472034

209061     -40  423214  472034

209063     -37  423215  472036

209060     -37  423215  472034

209060     -38  423213  472033

209063     -39  423213  472034

209063     -40  423212  472033

209068     -37  423215  472038

209071     -33  423217  472041





Hex dump of IMFV2.83 binary of these five 12- minute blocks:

(5 * 126 + 10 trailing zeros = 640 characters)



52  00  2D  99  7F  B3  B9  3C  00  B2  31  8E  00  00  00  00   

00  00  00  00  00  00  00  00  00  00  00  00  00  00  A6  10  

C8  1F  30  15  E4  13  A6  10  CC  1F  32  15  E6  13  A2  10  

D2  1F  34  15  E6  13  9D  10  CF  1F  33  15  E3  13  9C  10  

CD  1F  2E  15  DE  13  9E  10  C9  1F  2E  15  DF  13  A5  10  

C8  1F  2F  15  E3  13  AA  10  C9  1F  31  15  E7  13  A6  10  

CC  1F  2E  15  E2  13  9F  10  CA  1F  2C  15  DE  13  9F  10  

CC  1F  2D  15  DE  13  A0  10  CE  1F  2D  15  DF  13  52  C0  

2D  99  7F  B3  B9  3C  00  B2  31  8E  00  00  00  00  00  00  

00  00  00  00  00  00  00  00  00  00  00  00  A3  10  D3  1F  

2F  15  E2  13  A1  10  D3  1F  2E  15  E0  13  A3  10  D8  1F  

30  15  E3  13  A1  10  D6  1F  2E  15  E0  13  9E  10  D8  1F  

2D  15  DE  13  9D  10  D6  1F  2E  15  DE  13  98  10  D3  1F  

2E  15  DC  13  96  10  D1  1F  31  15  DE  13  95  10  D3  1F  

31  15  DE  13  94  10  D2  1F  31  15  DD  13  93  10  D4  1F  

2E  15  DA  13  95  10  D5  1F  2F  15  DC  13  52  80  2E  99  

7F  B3  B9  3C  00  B2  31  8E  00  00  00  00  00  00  00  00  

00  00  00  00  00  00  00  00  00  00  9A  10  D4  1F  2F  15  

DE  13  A0  10  D3  1F  31  15  E3  13  A8  10  D3  1F  32  15  

E7  13  B0  10  D5  1F  31  15  EA  13  B1  10  D7  1F  30  15  

E9  13  AD  10  D9  1F  30  15  E7  13  A7  10  DB  1F  2F  15  

E4  13  A3  10  DC  1F  30  15  E3  13  9E  10  DB  1F  30  15  

E1  13  9B  10  D6  1F  2F  15  DE  13  96  10  D1  1F  2F  15  

DC  13  95  10  CE  1F  30  15  DD  13  52  40  2F  99  7F  B3  

B9  3C  00  B2  31  8E  00  00  00  00  00  00  00  00  00  00  

00  00  00  00  00  00  00  00  91  10  C8  1F  2E  15  D9  13  

94  10  C6  1F  2F  15  DB  13  94  10  C4  1F  2F  15  DB  13  

99  10  C7  1F  31  15  DF  13  A0  10  CA  1F  31  15  E3  13  

A7  10  D0  1F  31  15  E6  13  AC  10  D3  1F  31  15  E8  13  

AE  10  D6  1F  30  15  E8  13  B0  10  D8  1F  31  15  EA  13  

AE  10  DA  1F  30  15  E8  13  A9  10  D8  1F  2F  15  E5  13  

A7  10  D7  1F  2F  15  E4  13  52  00  30  99  7F  B3  B9  3C  

00  B2  31  8E  00  00  00  00  00  00  00  00  00  00  00  00  

00  00  00  00  00  00  AB  10  D9  1F  31  15  E7  13  A8  10  

D7  1F  30  15  E5  13  A3  10  D6  1F  2F  15  E2  13  A2  10  

D7  1F  2F  15  E2  13  A5  10  D8  1F  2E  15  E2  13  A7  10  

DB  1F  2F  15  E4  13  A4  10  DB  1F  2F  15  E2  13  A4  10  

DA  1F  2D  15  E1  13  A7  10  D9  1F  2D  15  E2  13  A7  10  

D8  1F  2C  15  E1  13  AC  10  DB  1F  2F  15  E6  13  AF  10  

DF  1F  31  15  E9  13  00  00  00  00  00  00  00  00  00  00  


Coding Example for GMS Satellite (Preliminary)

The GMS satellite system requires that DCP data transmission use a long preamble, recommends that the length of time for data block be at least 63 seconds, and that transmitted data conform to a specified character set. A base-44 coding algorithm was developed for converting binary data to the GMS character set. The coded data format follows:

Header (21 bytes coded)

                            length                 position          frame

Time day of the year      12 bit    3/4 word       0 word-0.75

     minute of the day    12 bit    3/4 word     0.75word-1.5

offset C1                           1/2 word     1.5 word-2.0

offset C2                           1/2 word     2.0 word-2.5      

offset C3                           1/2 word     2.5 word-3.0

offset C4                           1/2 word     3.0 word-3.5     

Flag #1 & #2                          1 word     3.5 word-4.5     

station ID  colatitude    12 bit    3/4 word     4.5 word-5.25

            longitude     12 bit    3/4 word     5.25word-6.0      -18byte

                                                         (CR-CR-LF)-21byte

Free Space (27 bytes coded)

D1 Indices and Baseline control     1/2 word     6.0 word-6.5    

: 

D18   "     "    "        "          1/2 word   15.5 word-15.0     -48byte

                                                        (CR-CR-LF) -51byte

Minute Values (157 bytes coded)

C1 for t+0 minute                      1 word   15.0 word-16.0     -54byte

C2 for t+0 minute                      1 word   16.0 word-17.0     -57byte

C3 for t+0 minute                      1 word   17.0 word-18.0     -60byte

C4 for t+0 minute                      1 word   18.0 word-19.0     -63byte

: 

C4 for t+4 minute                      1 word    34.0 word-35.0   -111byte

                                                        (CR-CR-LF)-114byte

C1 for t+5 minute                      1 word    35.0 word-36.0   -117byte

: 

C4 for t+9 minute                      1 word    54.0 word-55.0   -174byte

                                                        (CR-CR-LF)-177byte

C1 for t+10 minute                     1 word    55.0 word-56.0   -180byte

: 

C1 for t+11 minute                     1 word    59.0 word-60.0   -192byte

C2 for t+11 minute                     1 word    60.0 word-61.0   -195byte

C3 for t+11 minute                     1 word    61.0 word-62.0   -198byte

C4 for t+11 minute                     1 word    62.0 word-63.0   -201byte



CRC                                    1 word    63.0 word-64.0   -204byte

                                                    ('='-CR-CR-LF)-208byte 

Time framing for GMS

A multiple data transmission (12-minute data block repeated 3 times) may be used to satisfy the GMS minimum block transmission time of approximately 63 seconds. The time framing for GMS would be:


no-signal carrier         5.0 second  : 5.0 sec

bit synchronization       2.5         : 7.5

word synchronization      0.15        : 7.65

address                   0.31        : 7.96

first  (64*3+16-1)*8/100 16.56        :24.52  (177 bytes)

second (64*3+16-1)*8/100 16.56        :41.08  (177 bytes)

last   (64*3+16)*8/100   16.64        :57.72  (178 bytes)

EOT-EOT-EOT               0.24        :57.96

The following table shows time slots assigned to DCPs. Each table line represents 60 seconds, the station ID is placed at the beginning of a data transmission block, '....' is for the no-signal (carrier only) period, '--' is for synchronization sequence, and '==' is for the data block. Assigned time slots for the GMS coding would allow 58 seconds per transmission and 7 seconds guard time. This would allow 11 observatories to transmit every 12 minutes.


min sec0....*....1....*....2....*....3....*....4....*....5....*....

12*(n) .....--M01================================================__

  +01  _____.....--M02=============================================

  +02  ===_______.....--M03========================================

  +03  ========_______.....--M04===================================

  +04  =============_______.....--M05==============================

  +05  ==================_______.....--M06=========================

  +06  =======================_______.....--M07====================

  +07  ============================_______.....--M08===============

  +08  =================================_______.....--M09==========

  +09  ======================================_______.....--M10=====

  +10  ===========================================_______.....--M11

  +11  ================================================____________

12(n+1).....--M01================================================__

  :

Base-44 Coding for GMS

The characters used on the GMS system are: LF CR SP ' ( ) + , - . / 0 1 2 3 4 5 6 7 8 9 : = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (TOTAL 50). The base-44 character set is shown below. Each IMFV2.81 data block is encoded by dividing the data block into 16-bit integers. Signed integers are represented by 2's complement. Each integer value is converted to 3 base-44 numbers, <n1,n2,n3>, the most significant being n1 and the least significant n3. Each base-44 number may be represented by a base-44 character from the table below. Example conversions are shown below.


Digit    Base-44      Digit    Base-44        Digit    Base-44



< 0>     0            <15>     F              <30>     U

< 1>     1            <16>     G              <31>     V

< 2>     2            <17>     H              <32>     W

< 3>     3            <18>     I              <33>     X

< 4>     4            <19>     J              <34>     Y

< 5>     5            <20>     K              <35>     Z

< 6>     6            <21>     L              <36>     (

< 7>     7            <22>     M              <37>     )

< 8>     8            <23>     N              <38>     +

< 9>     9            <24>     O              <39>     ,(comma)

<10>     A            <25>     P              <40>     -(hyphen)

<11>     B            <26>     Q              <41>     .(period)

<12>     C            <27>     R              <42>     :(colon)

<13>     D            <28>     S              <43>     ?

<14>     E            <29>     T

Example Base-44 Conversions

 decimal   base-44       base-44

 number    number        char

      0    <0,0,0>    000

      1    <0,0,1>    001

     43    <0,0,43>   00?

     44    <0,1,0>    010

  32767    <16,40,31> G-V

     -1    <43,43,43> ???

    -44    <43,43,0>  ??0

  -1935    <43,0,1>   ?01

 -32768    <27,3,12>  R3C