Спутниковая система навигации

Автор: Пользователь скрыл имя, 18 Февраля 2013 в 23:54, курсовая работа

Описание работы

GPS спутники передают два вида данных - альманах и эфимерис. Альманах содержит параметры орбит всех спутников. Каждый спутник передаёт альманах для всех спутников. Данные альманаха не отличаются большой точностью и действительны несколько месяцев.
В свою очередь, данные эфимериса содержат очень точные корректировки параметров орбит и часов для каждого спутника, что требуется для точного определения координат. Каждый GPS спутник передаёт только данные своего собственного эфимериса. Эти данные действительны только 30 минут. Спутники передают свой эфимерис каждые 30 секунд.

Работа содержит 1 файл

курсач спутники.doc

— 1.38 Мб (Скачать)

Реферат:

GPS спутники  передают два вида данных - альманах  и эфимерис. Альманах содержит  параметры орбит всех спутников.  Каждый спутник передаёт альманах  для всех спутников. Данные  альманаха не отличаются большой  точностью и действительны несколько  месяцев.

В свою очередь, данные эфимериса содержат очень  точные корректировки параметров орбит  и часов для каждого спутника, что требуется для точного  определения координат. Каждый GPS спутник  передаёт только данные своего собственного эфимериса. Эти данные действительны только 30 минут. Спутники передают свой эфимерис каждые 30 секунд.

Если GPS был отключён более 30 минут, а потом включён, он начинает искать спутники, основываясь  на известном ему альманахе. По нему GPS выбирает спутники для инициации  поиска.

Когда GPS приёмник фиксирует спутник, он показывает на экране "пустой" столбик силы сигнала. В этот момент ещё идёт процесс сбора данных эфимериса. Когда эфимерис каждого спутника принят, соответствующий ему столбик силы сигнала закрашивается чёрным цветом и данные, принятые от спутника считаются подходящими для навигации.

Если питание  приёмника отключить, а потом  снова включить в течении 30 минут, он "поймает" спутники очень быстро, т.к. не надо будет снова собирать данные эфимериса. Это называется "горячий" старт.

Если после  отключения прошло более 30 минут, будет  произведён "тёплый" старт и GPS приёмник снова начнёт собирать данные эфимериса.

Если GPS приёмник был перевезён (в выключенном  состоянии) на несколько сотен километров или внутренние часы стали показывать неточное время, то данные имеющегося альманаха являются неверными. В таком случае навигатору требуется выполнить новый "поиск неба" (переинициализация) для загрузки нового альманаха и эфимериса. Это уже будет "холодный" старт.

Иногда бывает такая ситуация, что GPS приёмник долго не может "поймать" спутники. При этом на экране "Спутники" отображается пустое небо без номеров спутников. Оживить GPS поможет программка GPS Utility. Кроме неё, Вам потребуется рабочий GPS приёмник. С помощью программы Вы можете выкачать альманах из рабочего приёмника в ПК, а потом, подключив "мёртвый" GPS, закачать в него.

 

 

 

 

 

 

 

 

 

 

 

 

 

 Задание на курсовую работу по курсу

«Cпутниковые навигационные системы»

  1. Наименование курсовой работы:

Космический сегмент спутниковой системы GPS.

  1. Цель работы:

Экспериментально- теоретическое исследование данных альманаха навигационных спутников GPS.

  1. Объект исследования: глобальная система позиционирования GPS.
  2. Предмет исследования: альманах навигационных спутников GPS.
  3. Содержание исследования

5. 1 Обосновать  и выбрать блок-схему измерительного  стенда для приема сигналов  навигационных спутников GPS.

5. 2 Разработать  алгоритм приема, записи и хранения  альманаха спутников GPS.  

5. 3 Разработать  алгоритм преобразования экспериментальных  данных альманаха в стандартный формат YUMA.

5. 4. Записать  данные альманаха GPS, декодировать их и записать в формате YUMA.

5. 5 Получить  данные альманаха от независимых  исследователей и сопоставить  их с декодированными данными.

5. 6 Получить  данные альманаха  YUMA и SEM соответствующие дню Вашего рождения в 2010 или в 2011 году.

5. 7 Преобразовать  данные YUMA в SEM и наоборот.

5. 8 Загрузить  данные YUMA, преобразованные из формата SEM в программный комплекс GeoMot и сделать вывод об их работоспособности.

5. 9 Загрузить данные YUMA в программу пакета MatLab и сопоставить их с результатами комплекса GeoMot.

5. 10 Загрузить  данные SEM, преобразованные из формата YUMA в программный комплекс WSEM3.6, выполнить оценку геометрических факторов относительно координат НАУ и сопоставить их с  результатами, полученными экспериментально на измерительном стенде.

 

 

 

 

 

 

Введение:

Программа OziExplorer позволяет экспортировать считанный  из приёмника альманах в текстовый  файл. Ниже приведён отрывок такого файла для первых трёх спутников.

**** Week 121 almanac for PRN-1 ************

ID: 1

Health: 0

Eccentricity: 5.20515441894531E-0003

Time of Applicability(s): 2.33472000000000E+0005

Orbital Inclination(rad): 9.67345058917999E-0001

Rate of Right Ascen(r/s): -7.78318121064103E-0009

SQRT(A) (m^1/2): 5.15366992187500E+0003

Right Ascen at TOA(rad): 7.78944641351700E-0002

Argument of Perigee(rad): -1.73652994632721E+0000

Mean Anom(rad): -2.07132005691528E+0000

Af0(s): 2.07901000976562E-0004

Af1(s/s): 0.00000000000000E+0000

week: 121

 

При наличии  последней позиции, приёмник может  определить какие спутники находятся  в данном полушарии, а какие нет. За счёт этого не искать отсутствующие  спутники. Естественно, что если приёмник перевезти на тысячи километров, то ОГ изменится достаточно сильно, и от наличия последней позиции толку будет мало.

Информация со спутников  передаётся в виде кадров со скоростью 50 бит/с. Один кадр это 1500 бит. Состоит  он из 5 под кадров по 300 бит каждый. Что передаётся в первых 3 подкадрах сейчас значения не имеет. В 4 и 5 подкадрах передаётся, в основном, альманах. В 4 под кадре для спутников в 25 по 32, в 5 - с 1 по 24. В ИКД на GPS написано, что полный набор информации - это 25 кадров. Значит, чтобы собрать полностью весь альманах на все спутники нужно: (1500 бит * 25)/50 (бит/с) = 750 секунд = 12,5 минут

Антена принимает  сигнал который с помощью сплитера предается на приемник V1.C приемника мы записываем сигнал. Открываем програму NovAtel .В открытом окне выбираем Device  потом open.Потом открываем Logging control  нажимаем + и записываем даные.Затем выбивает окно в котором shot  меняем на complete,в окне log выбираем  RAWALM,в соседнем поле выбираем binary b onchange.Создали файл GPS ,потом сохраняем.

Открываем mathlab и в name_in прописываем место и названия файла который сохраняем в формате gps   ignar.gps'; а в name0 в формате yum ignar.yum';

 

 

 

 

Содержательная  часть работы:

Преоброзования  в стандартный формат с помощью mathlab.

 

%Имя:Raw_Alm.m

%Программа преобразует  данные бинарного файла альманаха  спутников GPS в

%формат YUMA

%начало цикла  для 63 спутников (в том числе  и спутников-нагрузок)

% kol = 66

% for i=1: 64

% %структура согласно  формата альманаха YUMA и ICD GPS-200 C

%    alm(i)= struct('SV_ID',0, 'week',0, 'health_0',0, 'health',0,'ecc',0,...

%     't0a',0, 'incl_angle',0, 'omega_dot',0,...

%     'sqrtA',0, 'omega0',0, 'omega', 0, 'M0',0,'af0',0, 'af1',0);

% end;

%диск и последовательность  папок, из которых считывается  файл с записью альманаха  

%name_in = 'D:\ПОВОЗНЮК\Raw_Alm\RAW_ALMANAC_FIN_N\RAW_ALM_BIN_DAT\RAW_ALM_BIN_174_DL4'; 

name_in = 'D:\POVOZNUYK\RAW_ALMANAC_FIN_N\RAW_ALM_BIN_DAT\ignar.gps';

 

kol_zap = 0;

 %name0 = 'D:\ПОВОЗНЮК\Raw_Alm\RAW_ALMANAC_FIN_N\RAW_ALM_BIN_ALM\DL4';

name0 =

 D:\POVOZNUYK\RAW_ALMANAC_FIN_N\RAW_ALM_BIN_ALM\ignar.yum';

 

%формирование CRC-кода  для проверки считываемых данных 

fid_crc = fopen(name_in,'rb');

fseek(fid_crc, 0, 'eof');

size1 = ftell(fid_crc)- 4;

fseek(fid_crc, size1, 'bof');

CRC = fread(fid_crc,1,'uint32');

fprintf('CRC_hex =    %X \n',CRC);

fseek(fid_crc, 0, 'bof');

CRC_own = CalculateBlockCRC32(fid_crc, size1);

fprintf('CRC_own_hex= %X \n',CRC_own);

fclose(fid_crc);

 

%Чтение данных  альманаха

fid = fopen(name_in,'rb');

%kol_zap = 0;

while (~feof(fid))

    kol_zap = kol_zap + 1;

%for (kk = 1: 2)

    max_num = 0;

   

%%%%% Заголовок данных- Header Structure (Binary Message)

Syn_c = fread(fid,3,'uchar'); %В OEM-4 'uchar'

if (~feof(fid))

Hear_d= fread(fid,1,'uchar');%В OEM-4 'Uchar'

Message_ID = fread(fid,1,'uint16');%В OEM-4 'Long'

Message_Type=fread(fid,1,'uchar'); %В OEM-4 'uchar'

Port_Address = fread(fid,1,'uchar'); %В OEM-4 'uchar'

Message_Length = fread(fid,1,'uint16'); %В OEM-4 'Ushort'

Sequenc_e = fread(fid,1,'uint16'); %В OEM-4 'Ushort'

Idle_Time = fread(fid,1,'uchar'); %В OEM-4 'uchar'

Time_Status = fread(fid,1,'uchar'); %В OEM-4 'Enum'

week_1 = fread(fid,1,'uint16');  %В OEM-4 'Ushort'

Time = fread(fid,1,'ulong');     %В OEM-4 'Double'

N_ul = fread(fid,1,'uint');

d_fcc=fread(fid,1,'uint16');

d_fcc = dec2hex(d_fcc);

e1 = fread(fid,1,'uint16');

week =fread(fid,1,'uint');%

T0a= fread(fid,1,'ulong');% время привязки альманаха

kol_str= fread(fid,1,'ulong'); %количество строк

 

%Чтение данных  по каждому спутнику

%max_num = 0;

for i=1: 64

%структура согласно  формата альманаха YUMA и ICD GPS-200 C

   alm(i)= struct('SV_ID',0, 'week',0, 'health_0',0, 'health',0,'ecc',0,...

    't0a',0, 'incl_angle',0, 'omega_dot',0,...

    'sqrtA',0, 'omega0',0, 'omega', 0, 'M0',0,'af0',0, 'af1',0);

end;

 

for i = 1 : kol_str

Nsv= fread(fid,1,'ushort'); % номер спутника согласно табл.20-V ICD GPS-200 C

TLM= fread(fid,3,'uchar');

TL_M = dec2hex(TLM,2);

HOW= fread(fid,3,'uchar');

HO_W = dec2hex(HOW,2);

e6= fread(fid,1,'uchar');

 

maska = bin2dec('11000000');

ID_dop = bitand(e6, maska);

 

data_ID = bitshift(ID_dop, -6);

 

 

maska = bin2dec('00111111');

SV_ID = bitand(e6, maska);

 

    if (SV_ID > max_num)

        max_num = SV_ID;

    end;

ecc1 = fread(fid,1,'uchar');

ecc2 = fread(fid,1,'uchar');

ecc = (bitshift(ecc1, 8) + ecc2)*2^(-21);

 

t0a= fread(fid,1,'uchar')*2^12 ;% время привязки альманаха

 

d1= fread(fid,1,'bit8');

 

d2=fread(fid,1,'uchar');

incl_angle= ((bitshift(d1, 8) + d2)*2^(-19) + 0.3) * pi;

 

d1= fread(fid,1,'bit8');

 

d2=fread(fid,1,'uchar');

omega_dot= (bitshift(d1, 8) + d2)*2^(-38) * pi;

%---------------------------------------

maska = bin2dec('00111111');

health_1 = fread(fid,1,'uchar');

if health_1 > 255

   health_1 = health_1;

end;

health = bitand(health_1,maska);

% if health > 63

%    health = health;

% end;

maska = bin2dec('11000000');

health_0 = bitand(health_1,maska);

health_0 = bitshift(health_0, -6);

% if health_0 > 3

%    health_0 = health_0;

% end;

%----------------------------------

d1 = fread(fid,1,'uchar');

d2 = fread(fid,1,'uchar');

d3 = fread(fid,1,'uchar');

sqrtA=(bitshift(d1, 16) + bitshift(d2, 8) + d3)*2^(-11);

 

d1 = fread(fid,1,'bit8');

sign2 = sign(d1);

d2 = fread(fid,1,'uchar');

d3 = fread(fid,1,'uchar');

omega0 =((bitshift(d1, 16) + bitshift(d2, 8) + d3)*2^(-23)) * pi;

d1 = fread(fid,1,'bit8');

sign1 = sign(d1);

d2 = fread(fid,1,'uchar');

d3 = fread(fid,1,'uchar');

omega =((bitshift(d1, 16) + bitshift(d2, 8) + d3)*2^(-23)) * pi;

 

d1 = fread(fid,1,'bit8');

d2 = fread(fid,1,'uchar');

d3 = fread(fid,1,'uchar');

M0 =((bitshift(d1, 16) + bitshift(d2, 8) + d3)*2^(-23)) * pi;

 

af0_1 = fread(fid,1,'uchar');

af0_1_bin = dec2bin(af0_1);

d2 = fread(fid,1,'uchar');

d2bin = dec2bin(d2);

d3 = fread(fid,1,'uchar');

d3bin = dec2bin(d3);

maska = bin2dec('00011100');

d4 = bitand(d3,maska);

 

af0_2 = bitshift(d4, -2);

 

af0_dop = bitshift(af0_1, 3) + af0_2;

koef = 2^(-20);

af0 = var_sign(af0_dop,11,koef);

 

%    af1:

maska = bin2dec('11100000');

d4 = bitand(d3,maska);

 

af1_2 = bitshift(d2, 3);

 

af1_1 = bitshift(d4, -5);

 

af1_dop = bitor(af1_2, af1_1);

 

koef = 2^(-38);

af1 = var_sign(af1_dop,11,koef);

%--------------------------------------------------

%   fprintf(' i = %i   SV_ID = %i \n', i,  SV_ID);

if SV_ID > 0

   alm(SV_ID)= struct('SV_ID',SV_ID, 'week',week, 'health_0', health_0, 'health',health, 'ecc',ecc,...

    't0a',t0a, 'incl_angle',incl_angle, 'omega_dot',omega_dot,...

    'sqrtA',sqrtA, 'omega0',omega0, 'omega', omega, 'M0',M0,...

    'af0',af0, 'af1',af1);

%     if (SV_ID > max_num)

%         max_num = SV_ID;

%     end;

% else

%    fprintf('SV_ID = %i \n', SV_ID);

end;

end; %  for i = 1 : kol_str

 

%Формирование  вывода данных альманаха в  формате YUMA

 nameW = strcat( name0 ,  num2str(kol_zap) , '.alm');

  fw = fopen(nameW, 'Wt');      

for i=1: 64  %  max_num

    if alm(i).SV_ID > 0

          if alm(i).SV_ID < 10

         fprintf(fw,'**** Week %i almaNAU for PRN-0%i **********\n',alm(i).week, alm(i).SV_ID);

         fprintf(fw,'ID:                          0%i\n',alm(i).SV_ID);

         fprintf(fw,'Health:                      %i0%i\n', alm(i).health_0, alm(i).health);

      else

        fprintf(fw,'**** Week %i almaNAU for PRN-%i **********\n',alm(i).week, alm(i).SV_ID);

        fprintf(fw,'ID:                          %i\n',alm(i).SV_ID);

        fprintf(fw,'Health:                      %i%i\n', alm(i).health_0, alm(i).health);

     end; %  if alm(i).SV_ID < 10

    

%     if alm(i).health < 10

%        fprintf(fw,'Health:                      %i0%i\n', alm(i).health_0, alm(i).health);

%     else

%       fprintf(fw,'Health:                      %i%i\n', alm(i).health_0, alm(i).health);

%    end;

 

strdop = e_norm(alm(i).ecc, 10);

fprintf(fw,'Eccentricity:               %s\n', strdop);

 

fprintf(fw,'Time of Applicability(s):    %6.4f\n',alm(i).t0a);

 

fprintf(fw,'Orbital Incluation(rad):     %0.10f \n',alm(i).incl_angle);

 

strdop = e_norm(alm(i).omega_dot, 10);

fprintf(fw,'Rate of Right Ascen(r/s):   %s\n', strdop);

 

fprintf(fw,'SQRT(A) (m^1/2):             %4.7f \n',alm(i).sqrtA);

 

strdop = e_norm(alm(i).omega0, 10);

fprintf(fw,'Right Ascen at Week(rad):   %s\n', strdop);

%%%%%%%%%%%%%%%%%%%%%%%%%%

if alm(i).omega < 0

    fprintf(fw,'Argument of Perigee(rad):   %1.10f \n',alm(i).omega);

else

    fprintf(fw,'Argument of Perigee(rad):    %1.10f \n',alm(i).omega);

end;

 

strdop = e_norm(alm(i).M0, 10);

fprintf(fw,'Mean Anom(rad):             %s\n', strdop);

 

strdop = e_norm(alm(i).af0, 10);

fprintf(fw,'Af0(s):                     %s\n', strdop);

 

strdop = e_norm(alm(i).af1, 10);

fprintf(fw,'Af1(s/s):                   %s\n', strdop);

 

fprintf(fw,'week:                        %i \n',alm(i).week);

fprintf(fw,' \n');

end; %  if alm(i).SV_ID > 0

if (i == 32)

    CRC_new = fread(fid,1,'uint32');

    fprintf('kol_zap =%i CRC_new_hex =    %X \n', kol_zap, CRC_new);

end;

end; % for i=1: 32  %  max_num

fclose(fw);

end; % if (~feof(fid))

end; %  while (~feof(fid))

%CR_C = fread(fid,1,'uint32');

%CR_C = dec2hex(CR_C);

fclose(fid);

%fclose(fw);

**** Week 1577 almaNAU for PRN-01 **********

ID:                          1

Health:                      255

Eccentricity:                0.4471302032E-002

Time of Applicability(s):    147456.0000

Orbital Incluation(rad):     0.9636719227

Rate of Right Ascen(r/s):   -0.8263201755E-008

SQRT(A) (m^1/2):             5154.7133789

Right Ascen at Week(rad):   -0.1727199435E+001

Argument of Perigee(rad):    0.8652640581E+000

Mean Anom(rad):             -0.3039453268E+001

Af0(s):                     -0.1029968262E-003

Af1(s/s):                   -0.3637978807E-011

week:                        1577

 

 

 

В програме planning открываем ignar.yum. В окне station editor выбираем координаты местонахождения и дату отсчета.

 

Всего имеем 32 спутника,1 и 9 больные. На этом рисунке мы видим полученные данные высоты спутников GPS

 

На этом рисунке  мы видим полученные данные гистограмы видимости спутников GPS.

 

Информация о работе Спутниковая система навигации