- •1 Сведения из теории
- •1.1Алгоритм расчета траекторий движения навигационных спутников gps
- •1.2Эфемериды и альманах навигационных спутников
- •1.2.1Протоколы передачи данных с навигационных спутников gps
- •1.2.2Данные альманаха yuma
- •1.2.3Данные альманаха sem
- •1.2.4Время привязки данных альманаха
- •2Задание и порядок выполнения лабораторной работы
- •3Порядок выполнения лабораторной работы
- •4Примеры исследования
- •5Задания для самостоятельной подготовки и вопросы для самопроверки
- •7Приложения
- •7.1Приложение 1. Листинг программы «Orbita_gps1.M».
- •7.2Приложение 2. Листинг программы «Yuma_gps_Alm1.M».
- •7.3Приложение 3. Листинг программы «Tim.M».
- •7.4Приложение 4. Листинг программы «ecefllh.M».
- •7.5Приложение 5. Листинг программы «llhecef.M».
- •7.6Приложение 6. Листинг программы «Example_Orbita.M».
- •8Рекомендуемая литература
7.2Приложение 2. Листинг программы «Yuma_gps_Alm1.M».
function [alm,max_kol] = Yuma_GPS_Alm1(Dat)
fid =fopen(Dat,'rt');
max_kol=28;
max_kol = 1;
while not(feof(fid))
max_kol = max_kol + 1;
s1=fscanf(fid,'%s',6);
if not(feof(fid))
lenstr = length(s1);
while (fscanf(fid,'%s',1) == '*')
end
str1 = fscanf(fid,'%s',1);
lenstr = length(str1);
n_sv = sscanf(str1,'%d');
strID = str1(1:lenstr);
ID = sscanf(strID,'%d');
alm(ID).ID = ID;
t_2=fscanf(fid,'%s',1);
alm(ID).Health=fscanf(fid,'%d',1);
t_3=fscanf(fid,'%s',1);
alm(ID).e = fscanf(fid,'%g',1);
t_4=fscanf(fid,'%s',3);
alm(ID).TOA =fscanf(fid,'%g',1);
t_5=fscanf(fid,'%s',2);
alm(ID).deltai=fscanf(fid,'%g',1);%i0
t_6=fscanf(fid,'%s',4);
alm(ID).OMEGADOT=fscanf(fid,'%g',1);
while not(fscanf(fid,'%c',1) == ':')
end
alm(ID).A05=fscanf(fid,'%g',1);
t_8=fscanf(fid,'%s',4);
alm(ID).omega0 =fscanf(fid,'%g',1);
t_9=fscanf(fid,'%s',3);
alm(ID).omega=fscanf(fid,'%g',1);
t_10=fscanf(fid,'%s',2);
alm(ID).M0=fscanf(fid,'%g',1);
t_11=fscanf(fid,'%s',1);
alm(ID).Af0=fscanf(fid,'%g',1);
t_12=fscanf(fid,'%s',1);
alm(ID).Af1=fscanf(fid,'%g',1);
t_13=fscanf(fid,'%s',1);
alm(ID).Week=fscanf(fid,'%g',1);
end
%C=A';
%Week_Alm(ID) = alm(ID).Week;
end
7.3Приложение 3. Листинг программы «Tim.M».
function [week,modeweek,d,dweek,weeks]=Tim(d2,h,min,s)
%d2='10/35/2003';h=23.0;min=59.0;s=59.0;
%week = ceil(DAYSDIF('1/6/1980',d2,3)/7);% текущая неделя
week = floor(DAYSDIF('1/6/1980',d2,3)/7);% предыдущая неделя
modeweek=week-1024;
d = DAYSDIF('1/6/1980',d2,3);
%dweek=6+fix(d-week*7);
dweek=fix(d-week*7);
weeks=(dweek)*24*60*60+h*60*60+min*60+s;
7.4Приложение 4. Листинг программы «ecefllh.M».
function [Rx,Ry,Rz] = ECEFLLH(lon, lat,hr)
%Преобразование координат
%Входные данные:lon-долгота,lat-широта,h-высота;a,b-большая
%и малая оси эллипсоида
%Выходные данные:Rx,Ry,Rz- координаты в ECEF
%Для WGS-84;
%Rx=3504451.023;Ry=2061316.876;Rz=4897990.975;
%lat=0.881278698506528;lon=0.53169758803674;
%hr=122.899802776054;
a=6378137.0;
b=6356752.314;
n=a*a/sqrt(a*a*cos(lat)*cos(lat)+b*b*sin(lat)*sin(lat));
Rx=(n+hr)*cos(lat)*cos(lon);
Ry=(n+hr)*cos(lat)*sin(lon);
Rz=(b*b/(a*a)*n+hr)*sin(lat);
7.5Приложение 5. Листинг программы «llhecef.M».
function [lons,lats,hrs] = LLHECEF(Xk,Yk,Zk)
a=6378137.0;
b=6356752.314;
%X=3504451.023;Y=2061316.876;Z=4897990.975;
%lat=0.881278698506528;lon=0.53169758803674;
%hr=122.899802776054;
xy = sqrt(Xk*Xk + Yk*Yk);
thet = atan(Zk*a/(xy*b));
esq = 1.0-b*b/(a*a);
epsq = a*a/(b*b)-1.0;
lats = atan((Zk+epsq*b*(sin(thet)^3))/(xy-esq*a*(cos(thet)^3)));
lons = atan2(Yk,Xk);%!
if lons < 0
lons = 2*pi + lons;
end ;
n = a*a/sqrt(a*a*cos(lats)*cos(lats) + b*b*sin(lats)*sin(lats));
hrs = xy/cos(lats)-n;
%[lat,lon,hr]'
end
7.6Приложение 6. Листинг программы «Example_Orbita.M».
clear all
%Закомментируйте все строки, кроме 3 и 9 и исполните программу
%Dat = '02_11_15_30.alm';
%[alm,max_kol] = Yuma_GPS_Alm1(Dat);
%[alm(1:31).ID, alm(1:31).Health,alm(1:31).e, alm(1:31).TOA,...
%alm(1:31).deltai, alm(1:31).OMEGADOT,alm(1:31).A05, alm(1:31).omega0,...
%alm(1:31).omega, alm(1:31).OMEGADOT,alm(1:31).M0, alm(1:31).Af0,...
%alm(1:31).Af1, alm(1:31).Week]'
%max_kol
%Закомментируйте все строки, кроме 11 и 12 и исполните программу
%lat=0.881278698506528;lon=0.53169758803674;hr=122.899802776054;
%[Rx,Ry,Rz] = ECEFLLH(lon, lat,hr)
%Закомментируйте все строки, кроме 14 и 15 и исполните программу
d2='11/02/2004';h=10.0;min=0.0;s=0.0;
[week,modeweek,d,dweek,weeks]=Tim(d2,h,min,s)
