/* * 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