nextuppreviouscontents
Next:Таблица интервалов времени междуUp:No TitlePrevious:Включаемый файл pas.h

  
Включаемый файл arx.h.

Включаемый файл arx.h содержит определения структур для служебных зон и полей данных различных форматов, используемых для хранения данных наблюдений Солнца на РАТАН-600.
/*
*                            arx.h
*
*        24 7 1996
*
*        (C) Copyright BEAM
*
*        Vladimir E. Abramov-Maksimov
*        Main (Pulkovo) Astronomical Observatory of RAS
*
*        Pulkovo, St.Petersburg 196140, Russia
*        Phone:    (812) 123-40-19
*        E-mail:   beam@saoran.spb.su
*
*/

#ifndef  ARX_DEFINED

#ifndef  GRAD_DEFINED

typedef  struct
               {
                short Grad;
                short Min;
                short Sec;
                short hSec;
               }
                  GRAD;

#define  GRAD_DEFINED

#endif

#ifndef  TIME_DEFINED

typedef  struct
               {
                short Hour;
                short Min;
                short Sec;
                short hSec;
               }
                  TIME;

#define  TIME_DEFINED

#endif

#ifndef  TIME3_DEFINED

typedef  struct
               {
                short Hour;
                short Min;
                short Sec;
               }
                  TIME3;

#define  TIME3_DEFINED

#endif

#ifndef  TELESCOPES

#define  RATAN_SOUTH_SECTOR_AND_PERISCOP 2

#define  TELESCOPES

#endif   /* TELESCOPES  */

#ifndef  FORMATS

#define  FORMAT5  5

#define  FORMATS

#endif   /* FORMATS  */

/**************************************************************************/
/*                                                                        */
/*                            Ф О Р М А Т - 6                             */
/*                                                                        */
/*                           ( И К А Р - 2 4 )                            */
/*                                                                        */
/**************************************************************************/

#ifndef  ICAR24_DEFINED

#define  FLAG  0xFF8

#define  ZONE_LENGTH 3074

/*
  В 47-ом слове сначала была частота опроса, это постоянное число,
  оно=10, потом туда стали записывать температуру эквивалента по
  Цельсию, это числа в диапазоне 15-30 (т.е. не 10).

  В начальных усилениях ВУРов 12-й бит всегда=0, 11-й бит=0 или 1 -
  это фаза, 10-й бит всегда=1, это  постоянная времени, которая
  никогда не менялась и фактически равна от 0.1 до 0.2 сек для
  индивидуальных ВУРов. Таким образом первое 8-ми ричное слово=
  1 или 3 в зависимости от фазы.
*/

typedef  struct
               {
                short nZone;       /* Номер блока                        */
                short Source[9];   /* Название источника                 */
                short Observer[9]; /* Наблюдатель                        */
                                   /* Дата наблюдения:                   */
                short Day;         /* день                               */
                short Month;       /* месяц                              */
                short Year;        /* год                                */
                short Nobs[4];     /* Номер наблюдения                   */
                GRAD  HAerial;     /* Высота антенны                     */
                TIME  TCulm;       /* Момент прохождения центра источника*/
                                   /* через диаграмму направленности     */
                                   /* радиотелескопа (мест. зв.)         */
                GRAD  HSource;     /* Высота источника                   */
                short nAzimuth;    /* Номер азимута                      */
                short Carriage[2]; /* Положение каретки                  */
                GRAD  Dec;         /* Склонение источника                */
                                   /* Знак в Grad, 1 в 12 бите           */
                short TSign;       /* Знак температуры воздуха           */
                short T;           /* Темп. воздуха                      */
                short Freq;        /* 47-е слово                         */
                                   /* То ли частота опроса,              */
                                   /* то ли температура эквивалента      */
                short VUR1;        /* Конфиг. ВУР'ов, крейт 1            */
                short VUR2;        /* Конфиг. ВУР'ов, крейт 2            */
                short Amp0[24];    /* Начальные постоянные времени       */
                                   /* и усиления                         */
                short PhaseVUR1;   /* Начальные фазы ВУР'ов (крейт 1)    */
                short PhaseVUR2;   /* Начальные фазы ВУР'ов (крейт 2)    */
                TIME  TDec;        /* Декр. момент. набл.                */
                short tRS[2];      /* Время прохождения радиуса источника*/
                                   /* в зв. сек.                         */
                short RSun[2];     /* Радиус источника в угл.сек.        */
                short VALH[3];     /* Часовое изменение прямого восх.    */
                short VDec[3];     /* Часовое изменение склонения        */
                short Azimuth[4];  /* Азимут (гр., гр., ', ")            */
                short tng[24][2];  /* Темп. ГШ, со знаком                */
                short ModOff[24];  /* Сигнал "модуляция выключена"       */
                short ModOn[24];   /* Сигнал "модуляция включена"        */
                short NG[24];      /* Сигнал "ГШ включен"                */
                short KMIN[24];    /* Минимальный коэффициент усиления   */
                short CondClb;     /* Признак калибр.: 0 - небо, 1- ГШ   */
                short Wrk[1298];   /* Не используется                    */
               }
                  ICAR24_HEADER;   /* Служебная зона                     */

typedef  struct
               {
                unsigned short Flag1;    /*  равно FLAG                  */
                unsigned short Flag2;    /*  равно FLAG                  */
                TIME3   TCulm;           /*  Момент наблюдения           */
                TIME3   TCurrent;        /*  Текущее время               */
                unsigned short PhaseVUR1;/*  Текущие фазы ВУР'ов(крейт 1)*/
                unsigned short PhaseVUR2;/*  Текущие фазы ВУР'ов(крейт 2)*/
                unsigned short Regim;
                unsigned short a[13];
               }
                  SRV;  /* Служебная зона цикла цикла опроса             */

typedef  union
               {
                unsigned short ku[24];  /* Текущие коэффициенты усиления  */
                SRV srv;
               }
                  CYCLE_HEADER; /* Служебная зона цикла цикла опроса      */

typedef  struct
               {
                unsigned short Data[24];
                CYCLE_HEADER Hdr;
               }
                  CYCLE;        /* Цикл опроса                            */

typedef  struct
               {
                unsigned short nZone;
                CYCLE cycle[32];
               }
                  ZONE;         /* Блок данных                            */

#define  WAVELENGTHS_ICAR24 {                                           \
                      20.,23.,27.,32.,40.,120.,210.,300.,8.,80.,0.,0.,  \
                      20.,23.,27.,32.,40.,120.,210.,300.,8.,80.,0.,0.   \
                     }

#define  PAR_ICAR24         "IIIIIIIIII  VVVVVVVVVV  "

#define  DFT_ICAR24  {                                                  \
  -2.60,  4.91, -5.90,  8.41, -9.73, 31.37, 31.38, 31.50, 0.00, 31.39,
  0., 0.,\
  -2.60,  4.91, -5.90,  8.41, -9.73, 31.37, 31.38, 31.50, 0.00, 31.39,
  0., 0., \
                     }
  
#define  ICAR24_DEFINED

#endif   /* ICAR24_DEFINED */

/**************************************************************************/

/**************************************************************************/
/*                                                                        */
/*                            Ф О Р М А Т - 7                             */
/*                                                                        */
/*                           ( И К А Р - 3 2 )                            */
/*                                                                        */
/**************************************************************************/

#ifndef ICAR32_DEFINED

typedef struct {
                short nZone;
                short Source[9];
                short Observer[9];
                short Date[3];
                short ObsNumber[4];
                short HAerial[4];
                short TCulm[4];
                short HSource[4];
                short NumAzimuth;
                short Carriage[2];
                short Declination[4];
                short SignTAir;
                short TAir;
                short TEqv;
                short ConfigVUR1;
                short ConfigVUR2;
                short Amp0[32];
                short PhaseVUR1;
                short PhaseVUR2;
                short TDecr[4];
                short tRS[2];
                short RSun[2];
                short VALH[3];
                short VDECH[3];
                short Azimuth[4];
                short TNG[64];
                short ModOn[32];
                short ModOff[32];
                short NG[32];
                short CondCalib;
                short TCalib;        /* Время калибровки: 20 разрядов    */
                                     /* 6 - часы, 7 - минуты, 7 - секунды*/
                short Sigma2On[64];  /* Дисперсия для ModOn              */
                short Sigma2Off[64]; /* Дисперсия для ModOff             */
                short Wrk[769];
               }
                  ICAR32_HEADER;

#define ICAR32_DEFINED

#endif /* ICAR32_DEFINED        */

/**************************************************************************/

#ifndef  GSOUT_DEFINED

/* Заголовок "Архива 2" (старого) */

typedef  struct
               {
                long nBlock;
                long Nofle;         /* Порядковый номер файла             */
                long Nobs;          /* Номер наблюдения                   */
                long Year, Month, Day, Hour;
                                    /* Дата и час наблюдения              */
                long Telescope;     /* Телескоп                           */
                long Cabin;         /* Облучатель                         */
                long AcqSys;        /* Система регистрации                */
                char Source[4*4];
                char Observer[17*4];
                long CulmHour, CulmMin; /* Звездное время                 */
                float CulmSec;          /* кульминации                    */
                long DecGrad, DecMin;   /* Склонение                      */
                float DecSec;
                float HSource;      /* Высота источника                   */
                float HAerial;      /* Высота антенны                     */
                long naz;           /* Номер азимута                      */
                float daz;          /* Азимут                             */
                float phi0;         /* Рабочий угол сектора               */
                long StartHour, StartMin;
                float StartSec;     /* Зв. время начала регистрации       */
                float rs;           /* Радиус Солнца                      */
                float valh;         /* Часовое изменение прямого восх.    */ 
                float vdelh;        /* Часовое изменение склонения        */
                float dfy;          /* Вынос из фокуса по Y               */
                float wl[20];       /* Длины волн по каналам              */
                long nch[20];       /* Номера каналов                     */
                char prm[20][4];    /* Параметры по каналам ("I", "V",    */
                                    /* "DMMY" - канал не используется)    */
                float dfx[20];      /* Выносы из фокуса по каналам        */
                long nBlock2;       /* Не используется, происхождение сего*/
                                    /* таково: файл на МЛ записывался     */
                                    /* блоками по 516 байт, первые 4 байта*/
                                    /* каждого блока ритуальные из        */
                                    /* ДОС АСВТ, это начало второго блока */
                float tst[20];      /* Моменты начала записи по каналам   */
                float tng[20];      /* Температуры калибр. ступенек       */
                float tau[20];      /* Постоянные времени                 */
                float clb[20];      /* Ступеньки калибровки               */
                long l;             /* Число каналов регистрации          */
                long nfq;           /* Частота опроса                     */
                float dtcond;       /* Шаг по времени                     */
                long la2;           /* Число каналов в архиве             */
                long mim;           /* Число точек на канал               */
                long nbltt;         /* Общее число блоков (по 516 байт)   */
                long nblch;         /* Число блоков на один канал         */
                char Comment[36*4];
                long ip;            /* Резерв                             */
                long ws[2];
                long nodut;
                long noloi;
               }
                  GSOUT;

#define  GSOUT_DEFINED

#endif

#ifndef  GSOCV_DEFINED

/* Заголовок канала "Архива 2" (старого) */

typedef  struct
               {
                long nmb;           /* номер канала                       */
                long nt;            /* число точек                        */
                long n1;            /* обычно равно 1 - первая точка      */
                long n2;            /* обычно равно mim - последняя точка */
                long nx;            /* обычно равно 1 - номер точки       */
                                    /* с аргументом x                     */
                float x;            /* =ts - время начала регистрации     */
                float dx;           /* =dtcond - шаг                      */
                float yz;           /* обычно равно 0 - уровень отсчета   */
                float sc;           /* масштаб                            */
                                    /* сигнал = отсчет*sc+yz              */
                float a;            /* резерв                             */
                char is[8*4];       /* текстовый описатель                */
                long nn1;           /* резерв                             */
                long nn2;           /* резерв                             */
               }
                  GSOCV;

#define  GSOCV_DEFINED

#endif

/**************************************************************************/
/*                                                                        */
/*                             А Р Х И В - 2                              */
/*                                                                        */
/*                           ( " Н О В Ы Й " )                            */
/*                                                                        */
/**************************************************************************/

#ifndef  GSOUT2_DEFINED

#define  SOURCE_LENGTH            4*4
#define  OBSERVER_LENGTH         17*4
#define  HEADER_COUNT_CHANNEL      20
#define  PRM_LENGTH                 4
#define  COMMENT_LENGTH          36*4
#define  WS_LENGTH                  4

/* Заголовок "Архива 2" (нового) */

typedef  struct
               {
                long Nofle;         /* Порядковый номер файла на МЛ       */
                                    /* на PC смысла не имеет              */
                long Nobs;          /* Номер наблюдения                   */
                long Year, Month, Day, Hour;
                                    /* Дата и час наблюдения              */
                                    /* час   смысла не имеет              */
                long Telescope;     /* Телескоп                           */
                                    /* 2 - юг+перископ                    */
                long Cabin;         /* Облучатель                         */
                long AcqSys;        /* Система регистрации                */
                                    /* похоже всегда = 5, т.е. реальному  */
                                    /* не соответствует                   */
                char Source[SOURCE_LENGTH];
                char Observer[OBSERVER_LENGTH];
                long CulmHour, CulmMin; /* Звездное время кульминации     */
                float StartSec;
                long DecGrad, DecMin;/* Склонение                         */
                float DecSec;
                float HSource;      /* Высота источника (в градусах)      */
                float HAerial;      /* Высота антенны   (в градусах)      */
                long naz;
                float daz;          /* Азимут в градусах = naz+daz        */
                float phi0;         /* Рабочий угол сектора               */
                                    /* параметр не задается               */
                long StartHour, StartMin;/* Зв. время начала регистрации  */
                float CulmSec;
                float rs;           /* Время прохождения радиуса Солнца   */
                                    /* в зв. сек.                         */
                float valh;
                float vdelh;
                float dfy;
                float  wl[HEADER_COUNT_CHANNEL];
                           /* не используется                        */
                long  nch[HEADER_COUNT_CHANNEL];
                           /* номера каналов                         */
                char  prm[HEADER_COUNT_CHANNEL][PRM_LENGTH];
                           /* параметры по каналам: I, V, DMMY       */
                float dfx[HEADER_COUNT_CHANNEL];
                           /* поправка за вынос из фокуса по "x"     */
                           /* в зв.сек. для источника с DEC=0        */
                float tst[HEADER_COUNT_CHANNEL];
                           /* смысл не ясен                          */
                float tng[HEADER_COUNT_CHANNEL];
                           /* температура ступеньки калибровки (K)   */
                float tau[HEADER_COUNT_CHANNEL];
                           /* постоянная времени                     */
                float clb[HEADER_COUNT_CHANNEL];
                           /* не используется                        */
                long l;             /* Число каналов регистрации (24)     */
                long nfq;           /* Частота опроса            (320)    */
                                    /* смысла не имеет                    */
                float dtcond;       /* Шаг по времени                     */
                                    /* смысла не имеет                    */
                long la2;           /* Число каналов в архиве             */
                long mim;           /*                                    */
                                    /* смысла не имеет                    */
                long nbltt;         /* Общее число блоков                 */
                                    /* смысла не имеет                    */
                long nblch;         /*                                    */
                                    /* смысла не имеет                    */
                char Comment[COMMENT_LENGTH];
                long ip;            /* не используется                    */
                long ws[WS_LENGTH]; /* не используется                    */
               }
                  GSOUT2;

#define  GSOUT2_DEFINED

#endif

#ifndef  GSOCV2_DEFINED

/* Заголовок канала "Архива 2" (нового) */

#define  IS_LENGTH   8*4

typedef  struct
               {
                long nmb;           /* номер канала                       */
                long nt;            /* не используется  (=0)              */
                long n1;            /* =1                                 */
                long n2;            /* число точек                        */
                                    /* программа формирования архива      */
                                    /* содержит ошибку: фактически число  */
                                    /* точек на 1 меньше                  */
                long nx;            /* =1                                 */
                float x;            /* =1.                                */
                float dx;           /*           шаг                      */
                float yz;           /* ступенька калибровки               */
                float sc;           /* масштаб                            */
                                    /* sc=tng/yz                          */
                long na;            /* =2                                 */
                char is[IS_LENGTH]; /* текстовый описатель                */
                long nn1;           /* =1                                 */
                long nn2;           /* число блоков                       */
               }
                  GSOCV2;

#define  GSOCV2_DEFINED

#endif

/**************************************************************************/
/*                                                                        */
/*                     В Т О Р И Ч Н Ы Й   Ф О Р М А Т                    */
/*                                                                        */
/*                          ( О П Е Й К И Н О Й )                         */
/*                                                                        */
/**************************************************************************/

#ifndef  HEADER_2_DEFINED

/* Заголовок вторичного формата (Опейкиной)  */

typedef  struct
               {
                short nt0;          /* Количество точек в скане        */
                short kf1;          /* Коэффициент, на который следует */
                                    /* домножить отсчеты               */
                short idf;          /* Интервал между отсчетами        */
                                    /* (в угл. сек.),                  */
                                    /* домноженный на коэффициент kf2  */
                short kf2;          /* Коэффициент, на который нужно   */
                                    /* разделить idf, чтобы получить шаг */
                short ice;          /* Номер точки, соответствующей    */
                                    /* центру                          */
                short ir1;          /* Оптический радиус Солнца        */
                                    /* (в угл. сек.)                   */
                short AzGrad;       /* Азимут (градусы)                */
                short AzMin;        /* Азимут (минуты)                 */
                short AzSec;        /* Азимут (секунды)                */
                short f;            /* Резерв                          */
               }
                  HEADER_2;

#define  HEADER_2_DEFINED

#endif

#define  ARX_DEFINED

#endif



Susanna Tokhchukova

2000-06-21