主要内容

计算卫星场景下的延迟和多普勒

本例展示了如何从SEM年历中建模GPS卫星星座,分析卫星与地面站之间的访问,并计算卫星与地面站之间的延迟和多普勒频率。

创建卫星场景

创建一个卫星场景,开始时间为11-January-2020下午2:50:00 UTC,停止时间为3天后。设置模拟采样时间为60秒。

startTime = datetime(2020,1,11,14,50,0);stopTime = startTime +天数(3);sampleTime = 60;%秒sc = satellite escenario (startTime,stopTime,sampleTime);

在场景中添加卫星

的场景中添加一颗卫星gpsAlmanac.txtSEM年鉴文件。

卫星;卫星;“gpsAlmanac.txt”);

使用SEM年历创建卫星时,默认的轨道传播器为全球定位系统(gps).这可以通过观察OrbitPropagator财产。的输出orbitalElements函数包含GPS卫星特定信息。

轨道道具=卫星(1)。OrbitPropagator
orbitProp = "gps"
元素=轨道元素(sat(1))
元素=带字段的结构:PRN: 1 GPSWeekNumber: 2087 GPSTimeOfApplicability: 589824 SatelliteHealth: 0半轴:2.655951847442722e+07偏心:0.009273052215576倾斜:56.066459655761712地理经度oforbitalplane: -40.477838516235359 RateOfRightAscension: -4.616595106199388e-07 ArgumentOfPerigee: 1.726436662673951e+02周期:4.307658596414280e+04

添加地面站

添加马德里深空通信综合设施作为感兴趣的地面站,并指定其经纬度。

name =“马德里深空通信中心”;Lat = 40.43139;%度Lon = -4.24806;%度gs =地面站(sc,名称=名称,纬度=纬度,经度=lon);

添加访问分析

在GPS卫星和马德里地面站之间添加访问分析,确定地面站何时对卫星可见。这决定了何时应该计算潜伏期和多普勒。

Ac = access(sat,gs);[acStatus,time] = accessStatus(ac);

想象的场景

通过启动卫星场景查看器来可视化该场景。集ShowDetails的值设置为false,以确保可视化不杂乱。设置相机位置,使所有可进入地面站的卫星进入视野。

v = satellite escenarioviewer (sc,ShowDetails=false);坎波斯(v,...29,...%纬度,度-19年,...经度,度数7.3 e7);%高度,度

计算延迟和速度

计算GPS卫星和马德里地面站之间的延时。同时,计算每个卫星和地面站之间的速度。正值表示卫星正在向地面站移动,负值表示卫星正在远离地面站。

计算每个卫星到地面的方位、仰角和距离。%。[az,el,r] = aer(sat,gs);计算延迟。C = physconst(“光速”);延迟= r/c;计算每颗卫星各自的速度%北/东/下(内)帧。物理上,这是ECEF速度,%表示为卫星的NED帧。因此,相对的%相对于地面站的速度也是一样的。[~,satV] = state (sat,CoordinateFrame=“地理”);计算地面站相对于每一个的方向%卫星在其各自的NED框架。satV是一个三维阵列,%,其中第一个维度表示笛卡尔分量,第二个%维表示时间样本,第三维表示%的卫星。因此,计算方向也是三维的%数组,其中第一个维度的大小为1,第二个维度%表示时间样本,第三维对应%的卫星。要做到这一点,az和el也必须重新格式化表示卫星的第一维变成了第三维%的维度。可以按照所述使用置换来重新格式化数组。Dir = cat(1,permute(cosd(el).*cosd(az),[3 2 1]),...Permute (cosd(el).*sind(az),[3 2 1]),...Permute (-sind(el),[3 2 1]);计算地面站与每台之间的直线速度%的卫星。这个速度决定了相应的多普勒频率%到每个卫星。重新格式化这个速度,这样第一维度%对应卫星。dopV = permute(dot(satV,dir),[3 2 1]);%当访问状态为时,设置时延和多普勒速度为NaN% false,因为当没有访问时,这些量是不相关的。latency(~acStatus) = NaN;dopV(~acStatus) = NaN;

画出第一颗卫星对应的延时。您可以选择绘制与所有卫星对应的延迟。但是,本例只对第一颗卫星进行绘图,以作为演示,并减少绘图混乱。

情节(时间、延迟(1:))xlim ([sc。开始时间sc.StopTime])“延迟vs.时间”)包含(“模拟时间”) ylabel (“延迟(ms)”网格)

图中包含一个轴对象。标题为Latency vs. Time的axes对象包含一个line类型的对象。

画出第一颗卫星沿着它自己和地面站之间的线的速度。

情节(时间、dopV (1:)) xlim ([sc。开始时间sc.StopTime])第一颗卫星与地面观测卫星连线的速度)包含(“模拟时间”) ylabel (“速度(米/秒)”网格)

图中包含一个轴对象。标题为Velocity of First Satellite Along The Line Between First Satellite and GS的坐标轴对象包含一个类型为Line的对象。

从速度计算多普勒频率

多普勒频率由下式计算:

f o c ± v r c ± v 年代 f e

在哪里 c 是光速,单位是m/s,

v r 是否添加了接收器相对于介质的速度(以m/s为单位) c 如果接收器向源移动,减去如果接收器远离源,

v 年代 源相对于介质的速度,单位是m/s,是否加了 c 如果源远离接收器,减去源靠近接收器,

f e 是发射频率,单位是Hz,和

f o 为观测频率,单位为Hz。

在本例中,我们考虑从接收地面站的立场观测到的频率。这样的话, v r 是0。我们还考虑了5 GHz的C波段频率。

Fe = 5e9;%发射频率,单位为HzfShift = (((c ./ (c- dopv)) * fe) - fe);%多普勒频移,单位为Hz

画出第一颗卫星对应的多普勒频移。

情节(时间、fShift (: 1) / 1 e3)% plot kHzxlim ([sc。开始时间sc.StopTime])第一颗卫星与时间对应的多普勒频移)包含(“模拟时间”) ylabel (多普勒频移(千赫)网格)

图中包含一个轴对象。标题为“第一个卫星与时间对应的多普勒频移”的轴对象包含一个类型为line的对象。

计算延迟和多普勒的变化率

卫星通信链路需要设计成跟踪不同的延迟和多普勒频率。因此,计算这些量是很重要的。画出这些与第一颗卫星对应的量。

latencyRate = diff(latency,1,2)/sampleTime;情节(时间(1:end-1), latencyRate (1,:))%秒/秒xlim ([sc。StartTime时间(end-1))“第一颗卫星对应的变化时延”)包含(“模拟时间”) ylabel (变化延迟率(ms/s)网格)

图中包含一个轴对象。标题为“第一颗卫星对应的变化延迟率”的axis对象包含一个类型为line的对象。

dopplerRate = (diff(fShift,1,2)/sampleTime);情节(时间(1:end-1), dopplerRate (1:)) xlim ([sc。StartTime时间(end-1))第一颗卫星对应的多普勒变化率)包含(“模拟时间”) ylabel (多普勒变化率(Hz/s)网格)

图中包含一个轴对象。标题为“第一颗卫星对应的多普勒变化率”的轴对象包含一个类型为直线的对象。

显示第一颗卫星的名称和轨道,并绘制它未来的地面轨道,或领先时间,超过12小时。虚线黄色表示未来地面轨道,实线黄色表示过去地面轨道。

坐(1)。ShowLabel = true;显示(坐(1).Orbit);groundTrack(坐(1),...超前时间= 12 * 3600);%秒坎波斯(v, 84、-176、7.3 e7);

用卫星和地面站来演这个场景。

玩(sc)

另请参阅

对象

功能

相关的例子

更多关于