В этом примере показано, как смоделировать спутник в орбите, анализируйте доступ между спутником и наземной станцией, и вычислите задержку и доплеровскую частоту между спутником и наземной станцией.
Создайте спутниковый сценарий со временем начала от 02 июня 2020 8:23:00 UTC и время остановки 24 часа спустя. Установите шаг расчета симуляции на 60 секунд.
startTime = datetime(2020,6,02,8,23,0);
stopTime = startTime + hours(24);
sampleTime = 60; % s
sc = satelliteScenario(startTime,stopTime,sampleTime);
Добавьте спутник в сценарий от oneSatelliteConstellation
Файл TLE.
sat = satellite(sc,"oneSatelliteConstellation.tle");
Покажите спутник в орбите и постройте ее будущую наземную дорожку, или время выполнения заказа, более чем 20 минут. Фиолетовые показы будущая наземная дорожка и оранжевые показы прошлая наземная дорожка.
show(sat) groundTrack(sat, ... "LeadTime",1200); % s
Отобразите орбитальные элементы спутника в сценарии.
elements = orbitalElements(sat)
elements = struct with fields:
MeanMotion: 9.1649e-04
Eccentricity: 1.0000e-03
Inclination: 55
RightAscensionOfAscendingNode: 175.0000
ArgumentOfPeriapsis: 100
MeanAnomaly: 174.9900
Period: 6.8557e+03
Epoch: 02-Jun-2020 18:43:16
BStar: 1.0000e-04
Возвратите широту (степени), долгота (степени) и высота (км) спутника во время 02 июня 2020 12:30:00 UTC.
time = datetime(2020,6,02,12,30,0); pos = states(sat,time,"CoordinateFrame","geographic"); pos(3) = pos(3) / 1000; % convert from m to km fprintf("The satellite latitude is %3.2f degrees, its longitude is %5.2f degrees, and its altitude is %5.2f km.", ... pos(1),pos(2),pos(3))
The satellite latitude is 1.07 degrees, its longitude is -83.95 degrees, and its altitude is 1421.20 km.
Добавьте Комплекс Madrid Deep Space Communications как наземную станцию интереса и задайте его широту и долготу.
name = "Madrid Deep Space Communications Complex"; lat = 40.43139; % degrees lon = -4.24806; % degrees gs = groundStation(sc,"Name",name,"Latitude",lat,"Longitude",lon);
Добавьте анализ доступа между спутником и наземной станцией, которая определяет, когда наземная станция отображается к спутнику. Это определяет, когда задержка и Доплер должны быть вычислены.
ac = access(sat,gs); acStatus = accessStatus(ac);
Вычислите задержку между спутником и Мадридской наземной станцией. Кроме того, вычислите скорость вдоль линии между спутником и наземной станцией. Положительное значение указывает, что спутник двигает наземную станцию, и отрицательная величина указывает, что спутник переезжает от наземной станции.
numHours = stopTime - startTime; numMinutes = minutes(numHours); [az,el,r] = deal(zeros(numMinutes+1,1)); [satV,dir] = deal(zeros(3,numMinutes+1)); [latency,dopV] = deal(NaN(numMinutes+1,1)); c = physconst("Lightspeed"); for iMinute = 0:numMinutes time = startTime + minutes(iMinute); idx = iMinute+1; % Calculate latency and doppler only when the satellite has access to the % ground station. if acStatus(idx) % Calculate azimuth, elevation, and range from the satellite to the % ground station [az(idx),el(idx),r(idx)] = aer(sat,gs,time); % Calculate latency latency(idx) = r(idx) / c; % Calculate satellite velocity in North/East/Down (NED) frame of % satellite. Physically, this is the ECEF velocity, represented in NED % frame. Therefore, the relative velocity with respect to the ground % station is also the same. [~,satV(:,idx)] = states(sat,time,"CoordinateFrame","geographic"); % Calculate the direction of gs with respect to sat in sat NED frame dir(:,idx) = [cosd(el(idx))*cosd(az(idx)); ... cosd(el(idx))*sind(az(idx)); ... -sind(el(idx))]; % Calculate the velocity along the line between the gs and the sat. % This velocity determines the doppler frequency. dopV(idx) = dot(satV(:,idx),dir(:,idx)); end end plot(1000*latency) % ms title("Latency vs. Time") xlabel("Simulation Time (s)") ylabel("Latency (ms)") grid on
plot(dopV) title("Satellite Velocity Along the Line Between Sat and GS") xlabel("Simulation Time (s)") ylabel("Velocity (m/s)") grid on
Доплеровская частота вычисляется от следующего уравнения:
,
где скорость света в m/s,
скорость, в m/s, приемника относительно носителя, добавленного к если приемник двигает источник, вычтенный, если приемник переезжает от источника,
скорость, в m/s, источника относительно носителя, добавленного к если источник переезжает от приемника, вычтенного, если источник двигает приемник,
испускаемая частота, в Гц, и
наблюдаемая частота, в Гц.
В этом примере мы рассматриваем наблюдаемую частоту с точки зрения наземной станции получения. В этом случае, 0. Мы также рассматриваем частоту полосы C 5 ГГц.
fe = 5e9; % emitted frequency in Hz fo = (((c ./ (c-dopV)) * fe) - 5e9); % doppler shift in Hz plot(fo/1e3) % plot kHz title("Doppler Shift vs. Time") xlabel("Simulation Time (s)") ylabel("Doppler Shift (kHz)") grid on
Ссылки спутниковой связи должны быть спроектированы, чтобы отследить различные задержки и Доплеровские частоты. Таким образом важно вычислить эти количества.
latencyRate = diff(latency)/sampleTime; plot(1000*latencyRate) % ms/s title("Latency Rate of Change") xlabel("Simulation Time (s)") ylabel("Latency Rate of Change (ms/s)") grid on
dopplerRate = (diff(fo)/sampleTime); plot(dopplerRate) title("Doppler Rate of Change") xlabel("Simulation Time (s)") ylabel("Doppler Rate of Change (Hz/s)") grid on
Проигрывайте сценарий со спутником и наземной станцией.
play(sc)
orbitalElements
| aer
| play