2. 卫星轨道与链路几何建模
链路预算的第一步不是算功率,而是先回答一个几何问题:某一时刻卫星在哪里、地面站看它是哪个方向、两者相距多远、相对速度带来多大的频率偏移。这四个量分别对应轨道参数、仰角/方位角、星地距离和多普勒频移,它们共同构成动态几何场景的骨架。本节以 Python 与 STK 两条实现路径为主线,把参数定义、计算过程和结果判读串起来。
一、轨道参数:从六根数到瞬时位置
描述卫星轨道最常用的是开普勒六根数:半长轴 a、偏心率 e、轨道倾角 i、升交点赤经 Ω、近地点幅角 ω、真近点角 ν。前五个决定轨道形状与空间朝向,ν 决定卫星在轨道上的瞬时位置。对于圆轨道(e≈0),近地点幅角失去意义,常用“纬度幅角 u = ω + ν”替代。工程上更常直接给出轨道高度 h 与倾角 i,例如 LEO 遥感卫星 h=550 km、i=97.6°(太阳同步),GEO 通信卫星 h=35786 km、i≈0°。
由 a = Re + h(Re=6378.137 km)可得平均角速度 n = √(μ/a³),μ=398600.4418 km³/s²。以 550 km 轨道为例,a=6928.137 km,n≈1.106×10⁻³ rad/s,对应周期 T=2π/n≈5681 s≈94.7 min。这个周期决定了单站可见窗口的长度量级,是后续仰角计算的输入。
在 Python 中可用 skyfield 或 poliastro 直接由 TLE/根数生成 ECI 位置速度;在 STK 中则通过 Satellite 对象的 Keplerian 传播器录入六根数,并设置场景历元(如 2025-01-01 00:00:00 UTC)。两者都需要明确坐标系:ECI(J2000 惯性系)用于轨道动力学,ECEF(地固系)用于星下点与地面几何。
二、星下点轨迹:把三维轨道投影到地面
星下点是卫星与地心连线与地球表面的交点,其经纬度由 ECEF 位置矢量直接得到:纬度 φ = arcsin(z/r),经度 λ = atan2(y, x)。由于地球自转,惯性系下的轨道在 ECEF 中表现为星下点轨迹持续西移。对 550 km、i=97.6° 的太阳同步轨道,星下点轨迹近似南北向、每圈西移约 24.6°(360°×T/86400),相邻轨迹间距约 2700 km(赤道处)。
星下点轨迹的价值在于判断覆盖:地面站是否落在轨迹带内、单圈可见弧段有多长、重访周期是多少。在 STK 中可用 Ground Track 报告或 2D 地图窗口直接观察;在 Python 中把 ECEF 经纬度序列画到 cartopy 底图上即可。需要注意,星下点轨迹只反映垂直投影,不等于可见范围——真正的可见性由仰角门限决定。
三、仰角与方位角:地面站视角的几何计算
仰角 θ 是视线与当地水平面的夹角,方位角 φ 是视线在水平面上的投影相对正北的顺时针夹角。计算前必须先约定坐标系:本文采用站心 ENU(东-北-天)坐标系,方位角从正北起算、顺时针为正,仰角向上为正。设地面站 ECEF 位置为 rg,卫星 ECEF 位置为 rs,则站心矢量 ρ = rs − rg,再经旋转矩阵转到 ENU:
E = -sinλ·Δx + cosλ·Δy
N = -sinφ·cosλ·Δx - sinφ·sinλ·Δy + cosφ·Δz
U = cosφ·cosλ·Δx + cosφ·sinλ·Δy + sinφ·Δz
仰角 θ = atan2(U, sqrt(E² + N²))
方位角 φ = atan2(E, N) # 结果归一到 [0°, 360°)
距离 d = sqrt(E² + N² + U²)
以地面站北京(39.9°N, 116.4°E)跟踪 550 km 太阳同步卫星为例,当卫星星下点位于站南约 800 km 时,仰角约 30°;当卫星接近地平线时仰角趋近 0°,此时距离约 2400 km。工程上通常设 5° 或 10° 仰角门限,低于门限即判定不可见,这直接决定可见窗口的起止时刻。
在 STK 中,通过 Access 计算即可得到地面站对卫星的可见弧段,并输出 Elevation、Azimuth、Range 报告;在 Python 中可用 skyfield 的 altaz() 方法直接得到仰角方位角,或用上述公式自行实现。两种方式都应校验同一时刻结果一致,偏差应小于 0.1°。
四、星地距离与多普勒频移
星地距离 d 由站心矢量模长直接得到。对 550 km 轨道,仰角 90° 时 d≈550 km,仰角 5° 时 d≈2400 km,变化范围接近 4 倍。距离变化率(径向速度 vr)由相邻时刻距离差分得到,典型 LEO 最大径向速度约 ±7 km/s,GEO 则接近 0。
多普勒频移 fd = −(vr/c)·fc。以 fc=12 GHz、vr=7 km/s 为例,fd≈−280 kHz;卫星接近时为正、远离时为负,过顶时刻 vr≈0、fd≈0。对 QPSK 信号,若符号率为 1 Msps,280 kHz 偏移约占符号率的 28%,接收机必须做多普勒预补偿或使用宽捕获范围。
在 STK 中可通过 Doppler 报告或 Range Rate 数据计算;在 Python 中则对距离序列做数值微分,再代入公式。建议把仰角、距离、多普勒三条曲线画在同一时间轴上,观察它们的相位关系:仰角最大时距离最小、多普勒过零,这是判断几何模型是否正确的最直接依据。
Time 对象应一致;ECI 与 ECEF 转换需使用同一岁差-章动模型,否则星下点轨迹会出现明显漂移。五、动态几何场景的建立与校验
一个可复用的动态几何场景应包含:卫星对象(根数或 TLE)、地面站对象(经纬高)、时间范围与步长、可见性约束(仰角门限)、输出量(仰角、方位角、距离、距离变化率、多普勒)。在 STK 中按此顺序建立后,用 Access 得到可见弧段表;在 Python 中则用循环或向量化计算生成时间序列。
校验方法有三条:其一,检查星下点轨迹是否连续、无跳变;其二,检查仰角曲线是否在可见窗口内单调上升后下降;其三,检查多普勒在过顶时刻是否过零。若三者不一致,优先排查坐标系定义和历元设置,而不是怀疑公式本身。
下表给出一组教学示例参数(非实测),可用于快速搭建场景并验证计算链路:
| 参数 | 示例值 | 说明 |
|---|---|---|
| 轨道高度 h | 550 km | 太阳同步 LEO |
| 轨道倾角 i | 97.6° | 近极地轨道 |
| 地面站 | 39.9°N, 116.4°E, 50 m | 北京 |
| 仰角门限 | 5° | 可见性判据 |
| 载波频率 fc | 12 GHz | Ku 频段 |
| 仿真步长 | 10 s | 兼顾精度与速度 |
| 仿真时长 | 24 h | 覆盖多圈重访 |
把上述参数代入后,预期可观察到:单圈可见窗口约 8~12 min,最大仰角约 80°~90°,最大多普勒约 ±280 kHz,距离在 550~2400 km 之间变化。若结果偏离这一量级,应检查单位(km 与 m)、角度制(度与弧度)以及地球自转是否已计入 ECEF 转换。
完成本节后,你应当能够独立完成:由轨道根数生成 ECI/ECEF 位置、计算星下点轨迹、由站心矢量求仰角方位角与距离、由距离变化率求多普勒频移,并在 Python 与 STK 中交叉验证。这套几何链路是后续链路预算、天线指向和频率补偿的共同基础。