INTERMAGNET IMFV2.83 Data Format

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.

The INTERMAGNET satellite data transmission format IMFV2.83 defines the structure of 126 bytes of magnetic observatory information. METEOSAT users, who must transmit once per hour, will send five 12-minute IMFV2.83 data blocks. GOES users transmit at 12-minute intervals one IMFV2.83 data block encoded in NESS-BINARY (189 bytes). The order of transmission to the satellite will be in byte sequence low- byte first, then high-byte.


Header (12 Bytes)

Time stamp of the first sample                             Byte #

Day (1-365/366)                                   12 Bits  1 - 3 *

Minute of the day (0 - 1439)                      12 Bits  1 - 3 *

                                                           

Offset for C1                                      8 Bits  4

Offset for C2                                      8 Bits  5

Offset for C3                                      8 Bits  6

Offset for C4                                      8 Bits  7

                                                           

Flags #1                                           8 Bits  8

Flags #2                                           8 Bits  9

                                                           

Identification:                                            

  Colatitude in 1/10 degrees (0 - 1800)           12 Bits  10 - 12 *

  East Longitude in 1/10 degrees (0 - 3600)       12 Bits  10 - 12 *


Free Space (8 bytes)


Base Reference Measurement (BRM) OR Free Space (10 bytes)


Minute Values (96 bytes)

C1 for sample 1                                   16 Bits  31-32

C2 for sample 1                                   16 Bits  33-34

C3 for sample 1                                   16 Bits  35-36

     .                                               .       .

     .                                               .       .

     .                                               .       .

C1 for sample 12                                  16 Bits   119-120

C2 for sample 12                                  16 Bits   121-122

C3 for sample 12                                  16 Bits   123-124

C4 for sample 12                                  16 Bits   125-126



* See Header Encoding

Flags #1

MSB  (8) & (7) Orientation code  0:  X,Y,Z

                                 1:  H,D,Z

                                 2:  D,I,F

                                 3:  Other

     Orientation Code   Component   Component   Component   Component

                            1           2           3           4

           0                X           Y           Z           F

           1                H           D           Z           F

           2                            D           I           F

           3                .           .  (OTHER)  .           .



     (6)  Scale factor for X or H

     (5)  Scale factor for Y or D

     (4)  Scale factor for Z or I

     (3)  Scale factor for F

     (2)  Filtering  0:  INTERMAGNET approved filtering

                     1:  non-approved filtering

                     See INTERMAGNET terminology "filtering"

     (1)  Alert capability -- The IMO has the ability to detect magnetic events

 		if the flag is set to 1.

                           0:  not active

                           1:  active

                            

    MSB                                                   LSB   

                                                                  

                    Scale  Scale  Scale  Scale         Alert       

   Orientation Code factor factor factor factor Filter Capability  

                                                                  

        8        7    6      5      4      3      2        1

Flags #2

MSB  (8)  Sudden storm commencement detected

     (7)  Storm in progress -- A storm is in progress if the level of

          magnetic activity is equivalent to K>4 for past one-hour period.

          The flag will be reset to zero when the equivalent level of

          activity drops to K<4


IMFV2.83 Header Encoding

In IMFV2.83 format, the time stamp and site identification code are encoded in 3-byte strings formed from two 12-bit fields combined as described below:

Time Stamp Input                     Encoded Output

Least sig. 8 bits of day             Byte 1

Most sig. 4 bits of day	             Byte 2,four least sig. bits

Least sig. 4 bits of minute          Byte 2, four most sig. bits

Most sig. 8 bits of minute           Byte 3



Site Identification Code Input       Encoded Output

Least sig. 8 bits of colatitude      Byte 10

Most sig. 4 bits of colatitude       Byte 11, four least sig. bits

Least sig. 4 bits of east longitude  Byte 11, four most sig. bits

Most sig. 8 bits of east longitude   Byte 12





Example:

	The time stamp for day 30, minute 684 would be encoded as:



Input fields



     msb                               lsb

     11 10  9  8  7  6  5  4  3  2  1  0



      0  0  0  0  0  0  0  1  1  1  1  0    Day    30   0 1 E (first item)

      0  0  1  0  1  0  1  0  1  1  0  0    Minute 684  2 A C (second item)



Output Encoded field



                     Byte 0             Byte 1              Byte 2



		0001 1110          1100 0000           0010 1001

HEX               1   E              C    0              2    A

		8 lsb Day          4 lsb Minute        8 msb Minute

                                        4 msb Day



The encoded 3 bytes output from this example would be 1ECO2A.

IMFV2.83 Data Value Encoding

Constraints on the bandwidth of a GOES satellite communications channel dictate a maximum transmission block of 126 bytes of data once every 12 minutes from an INTERMAGNET Magnetic Observatory (IMO). To conserve bytes, each measurement of a magnetic component is represented using only 2 bytes which, upon reception, are interpreted together with header information to produce a resultant 3-byte representation at the Geomagnetic Information Node (GIN). All magnetic field values in this encoding description are expressed in tenths of nanoTeslas (tnT) unless otherwise noted. The resolution of the measurements is 1 tnT and so a 16-bit representation allows a 216 = 65536 tnT (6553.6 nT) dynamic range within a 12-minute IMFV2.82 block. This is inadequate to accomodate magnetic storms at some locations, and so the encoding scheme produces measurements at reduced sensitivity when extremely large excursions are present. The INTERMAGNET data encoding produces an Offset (OFF) value and a Scale Factor (SF) flag bit for each component, as well as the encoded individual minute values. The OFF and SF apply to all measurements of a component within an IMFV2.83 data block.

We define the terms used in encoding as follows:

Data(i)   Set of minute values measured in tnT

Dpos(i)   Minute values shifted by 1048576 to be always positive

Dmax      Largest Dpos(i) of a given component in IMFV2.83 block

Dmin      Smallest Dpos(i) of a given component in IMFV2.83 block

OFF       Offset value

BF        Bias Factor = 8192

SM        Scale Multiplier for sensitivity of encoded data

SF        Scale Factor flag for sensivity of encoded data

E(i)      Set of encoded minute values

Numbers used in this encoding algorithm have been chosen to permit simple binary arithmetic operations:


	8192    = 213

	57344   = 216 - 213

	1048576 = 220

	2097151 = 221 - 1

Encoding of a 12-minute IMFV2.83 data block begins by adding a constant 1048576 tnT to the minute values Data(i) to produce a new data set Dpos(i) whose values are always positive.


         Dpos(i) = Data(i) + 1048576                   (1)

The limiting values of these Dpos(i) are 0 and 2097151 tnT. An Offset value (OFF) is next computed from the Dpos(i) for each component by using the minimum value of the component, Dmin.


        OFF = INT (Dmin/BF)                            (2)

where INT means the truncated integer after the division. The OFF value for each component may be anywhere in the range of 0 to 255 and the OFF values for the four components are stored in bytes 4,5,6,7 of the header for use in decoding the data after reception at a GIN. A Scale Multiplier (SM) for each component is now computed:


         SM = INT ((Dmax - OFF*BF)/57344) + 1          (3)

The encoding algorithm produces an SM whose value is governed by the range of Dpos(i) within a data block. In this application to format IMFV2.83, however, SM can in practice be limited to values of either 1 or 2. Format IMFV2.83 reserves only one flag bit per component for storing scale information. These flags are bits 6,5,4,3 of byte 8 in the header, labelled Scale Factor (SF). Flag bit SF=0 represents SM=1, where the encoded data are considered at normal sensitivity (1 tnT/bit). At SM=1, the dynamic range available in the data block is at least 49152 tnT (= 57344-BF) and at most 57344 tnT, depending upon where the Dmin value sits relative to the quantity OFF*BF. Flag bit SF=1 represents SM=2, where the encoded data are considered as half sensitivity (2 tnT/bit). At SM=2, the dynamic range in the data block is at least 106496 tnT (= 2*57344-BF) and at most 114688 tnT (= 2*57344) depending again upon where Dmin is relative to the quantity OFF*BF. Encoded data values are now computed as:


        E(i) = INT((Dpos(i) - OFF*BF)/SM)              (4)

and are stored in bytes 31 to 126. Upon reception at the GIN, encoded data are reconstituted using the expression:


        Data(i) = E(i)*SM + OFF*BF - 1048576           (5)

This reconstitution is exact for SM=1 but rounded down by no more than 2 tnT on those infrequent occasions when SM=2.

In summary, the expressions defining each of the encoding and reconstitution steps are:


        Dpos(i) = Data(i) + 1048576                    (1)

        OFF = INT (Dmin/BF)        (BF=8192)           (2)

        SM = INT ((Dmax - OFF*BF)/57344) + 1           (3)

        E(i) = INT((Dpos(i) - OFF*BF)/SM)              (4)

        Data(i) = E(i)*SM + OFF*BF - 1048576           (5)



	Scale Factor flags are set as follows:

	SF     SM

	0       1

	1       2



NOTE: E(i) set to 65535 (FFFF hex) indicates missing or invalid data.


Minute                  Shifted Data     Offset

Values

Data (i)                 Dpos(i)           OFF      OFF*BF



            (tnT)                         255      2088960    



                                          .           .       



                                          .           .       



                                          .           .       



                                          .           .       

                                                           

                   +- 2097151 -+        +-16       131072     

                   |           |        |              

                   |           |        | 15       122880       

                   |           |        |              

                   |           |        | 14       114688       

                   |           |        |              

                   |           |        | 13       106496      

                   |           |        |              

                   |           |        | 12        98304       <---+

 		   |	       |	|		    <-Dmax  |

		   |	       |	| 11	    90112	    |

		   |	       |	|			    | Span

		   |	       |	| 10	    81920	    | for

 		   |	       |	|			    | sm=1

		   |	       |	|  9	    73728 	    |

		   |	       |	|			    | =57344

1048576<--+   +->  |  1048576  |    +-->|  8        65536           |

          |   |    |           |    |   |                           |

          |   |    |           |    |   |  7        57344           |

          |   |    |           |    |   |                           |

          |   |    |           |    |   |  6        49152           |

          |   |    |           |    |   |                   <-Dmin  |

 	  |   |    |	       |    |	|  5	    40960	 <--+

 	  |   |    |	       |    |	|

 	  |   |    |	       |    |	|  4	    32768

	  |   |    |	       |    |	|

	  |   |    |	       |    |	|  3	    24576

	  |   |    |	       |    |	|

	  |   |    | 	       |    |	| 2	    16384

	  |   |    |	       | -+ |	| 

	  |   |    |	       |  +-+   | 1	     8192

	  |   |    |	       |    |   |

0	  | --+    +--   0    -+   -+	+-0		0 

	  |

	  |

	  |

	  |

	  |

	  |

	  |

	  |

	  |

	  |

	  |

	  |

	  |

	  |

	  |

 1048576 -+ 

There are also examples of encoding using IMFV2.83.