ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

卫星通信轨道参数与链路预算:GEO、LEO、MEO工程计算指南

卫星通信轨道参数与链路预算:GEO、LEO、MEO工程计算指南

简介:这份PPT面向通信工程、卫星通信相关专业的学生与工程技术人员,系统讲解卫星通信中卫星与轨道的基础理论,帮助读者理解不同轨道类型如何影响通信覆盖、时延与系统设计。资源共1个文件,为ppt格式,压缩包约1.02MB,内容以图文并茂的幻灯片形式呈现,便于课堂讲解与自学梳理。目前已有106人学习下载。资料围绕卫星轨道基本概念展开,涵盖万有引力定律与开普勒三大定律的推导,并逐一分析低轨道LEO、中轨道MEO、高椭圆轨道HEO与地球同步轨道GEO的高度范围、覆盖能力及典型应用;同时介绍偏心率、半长轴、开普勒常数等轨道参数,以及远地点、近地点和地心赤道坐标系等定位方法。最后从覆盖范围、通信延迟、能量需求与卫星寿命等角度,说明轨道选择的工程考量,适合作为卫通通信系统课程的入门与复习参考。

1. 一份“卫通通信系统-卫星与轨道.ppt”到底该讲清什么

如果你手里拿到一份叫“卫通通信系统-卫星与轨道.ppt”的材料,大概率不是让你背卫星分类,而是要给一条链路做预算、选星、算可见时间,或者给一套终端定跟踪策略。卫星通信里,轨道不是背景知识,它直接决定链路损耗、时延、多普勒、覆盖窗口和天线跟踪方式。GEO、LEO、MEO 三种轨道,对应的系统设计思路完全不同:GEO 看覆盖和雨衰,LEO 看切换和星座,MEO 看折中。这份 PPT 如果只画几圈椭圆轨道,落地时一定翻车。我写这篇,是把“卫星与轨道”从演示文稿里拽出来,变成能算、能查、能验证的工程动作。适合做卫通链路预算、地面站规划、终端选型的从业者,也适合刚接触卫星通信、需要快速把参数和场景对上的新手。

2. 轨道参数怎么变成链路预算里的数字

2.1 六个轨道根数里,真正影响通信的只有四个

轨道六根数:半长轴 a、偏心率 e、倾角 i、升交点赤经 Ω、近地点幅角 ω、真近点角 ν。做通信链路预算时,前三个直接决定几何关系,后三个决定“什么时候在哪”。半长轴决定周期和高度,偏心率决定近远地点差异,倾角决定覆盖纬度上限。GEO 的 i 接近 0,e 接近 0,所以星下点几乎不动;LEO 的 i 常见 50° 到 98°,决定了它能不能覆盖高纬度地面站。

我一般先算高度和周期,再算自由空间损耗。圆轨道高度 h 和周期 T 的关系用开普勒第三定律:

import math # 地球引力常数 GM,单位 km^3/s^2 GM = 398600.4418 # 地球半径,单位 km R_E = 6378.137 def orbital_period(h_km): """输入圆轨道高度 km,返回周期 秒""" a = R_E + h_km T = 2 * math.pi * math.sqrt(a**3 / GM) return T def fspl_db(freq_hz, distance_km): """自由空间损耗,频率 Hz,距离 km""" d_m = distance_km * 1000.0 return 20 * math.log10(d_m) + 20 * math.log10(freq_hz) - 147.55 for h in [550, 1200, 20200, 35786]: T = orbital_period(h) print(f"高度 {h} km, 周期 {T/60:.1f} min, 距离损耗@12GHz {fspl_db(12e9, h):.1f} dB")

这段代码里,GM和R_E是常数,不要自己改。orbital_period返回秒,除以 60 得分钟。fspl_db用的是工程上常用的常数形式,频率单位必须是 Hz,距离必须是 km。跑出来你会看到:550 km 的 LEO 周期约 95 分钟,单程损耗比 GEO 少约 36 dB。这 36 dB 就是 LEO 终端可以做得更小的根本原因,也是 PPT 里最该写清楚的一行。

2.2 仰角和可见时间:地面站能不能看到星

仰角是地面站看卫星的视线与地平线的夹角。低于 5° 通常不考虑,因为大气损耗和遮挡太严重。可见时间取决于轨道高度、倾角和地面站纬度。GEO 对固定站几乎 24 小时可见,LEO 单星过顶只有几分钟到十几分钟。

工程上我常用简化几何算最大仰角和可见窗口,不直接上 STK。下面这段算圆轨道下,地面站纬度 φ、卫星星下点纬度 λ 时的仰角:

import math def elevation_deg(h_km, lat_gs, lat_sub): """圆轨道,地面站纬度 lat_gs,星下点纬度 lat_sub,单位度""" Re = 6378.137 r = Re + h_km # 地心角 psi = math.radians(abs(lat_gs - lat_sub)) # 余弦定理求斜距 d = math.sqrt(Re**2 + r**2 - 2*Re*r*math.cos(psi)) # 仰角 sin_el = (r*math.cos(psi) - Re) / d sin_el = max(-1.0, min(1.0, sin_el)) return math.degrees(math.asin(sin_el)) print(elevation_deg(550, 30.0, 30.0)) # 过顶 print(elevation_deg(550, 30.0, 0.0)) # 星下点赤道 print(elevation_deg(35786, 30.0, 0.0)) # GEO

参数说明:h_km是圆轨道高度,lat_gs是地面站纬度,lat_sub是星下点纬度。这个模型忽略地球扁率和大气折射,做初步筛选够用。跑出来 LEO 过顶仰角接近 90°,星下点赤道时只有十几度;GEO 对 30° 纬度站仰角约 45°。如果你在 PPT 里只写“仰角大于 5° 可见”,不写纬度差异,做终端的人会按赤道条件设计,到高纬度直接失锁。

2.3 多普勒和时延:LEO 终端跟踪的两个硬约束

LEO 的多普勒频移能到几十 kHz,GEO 基本可以忽略。多普勒变化率在过顶时最大,终端如果锁频环带宽不够,就会频繁失锁。时延方面,GEO 单程约 120 ms,LEO 550 km 单程约 2 ms,但 LEO 要算上星间和地面回传,端到端不一定比 GEO 低。

多普勒估算:

def doppler_hz(freq_hz, v_rel_mps): """相对径向速度 m/s,频率 Hz""" c = 3e8 return freq_hz * v_rel_mps / c # 12 GHz,LEO 相对速度约 7 km/s 量级 print(doppler_hz(12e9, 7000)) # 约 280 kHz

这个数说明:Ka 频段 LEO 终端必须做多普勒预补偿,否则捕获时间会拉长。PPT 里如果只写“LEO 时延低”,不写多普勒,做基带的人会按 GEO 思路配环路,现场就是玄学失锁。

3. 用 Python 把轨道和覆盖算一遍:可复现的最小流程

3.1 环境准备和依赖选择

我一般用 Python 做轨道初步验证,不装 STK 也能跑。依赖只有numpy和matplotlib,如果要更准的摄动模型再加skyfield或poliastro。但做链路预算和覆盖筛选,自己写圆轨道模型足够,因为 PPT 阶段不需要厘米级精度。

python -m venv venv source venv/bin/activate # Windows 用 venv\Scripts\activate pip install numpy matplotlib

不要一上来就装一堆航天库,先把几何和损耗算对。很多翻车不是模型不够准,是单位搞错:高度用 km,频率用 Hz,角度用弧度。我见过把 GHz 直接代进公式的,损耗算出来差 90 dB,链路预算直接报废。

3.2 生成星下点轨迹和覆盖圈

下面这段生成 LEO 星下点轨迹,并画覆盖圈。参数:高度 550 km,倾角 53°,周期约 95 分钟。

import numpy as np import matplotlib.pyplot as plt Re = 6378.137 h = 550.0 inc = np.radians(53.0) T = 2*np.pi*np.sqrt((Re+h)**3 / 398600.4418) mu = 398600.4418 t = np.linspace(0, T, 200) n = np.sqrt(mu / (Re+h)**3) # 简化:圆轨道,升交点赤经固定,忽略地球自转 u = n * t # 纬度幅角 lat = np.arcsin(np.sin(inc) * np.sin(u)) lon = np.arctan2(np.cos(inc)*np.sin(u), np.cos(u)) # 覆盖半地心角 el_min = np.radians(5.0) eta = np.arccos(Re/(Re+h) * np.cos(el_min)) - el_min print(f"覆盖半地心角 {np.degrees(eta):.2f} 度") plt.figure() plt.plot(np.degrees(lon), np.degrees(lat)) plt.xlabel("经度 deg") plt.ylabel("纬度 deg") plt.title("LEO 星下点轨迹 550km 53deg") plt.grid(True) plt.show()

逻辑说明:u是纬度幅角,lat和lon是星下点纬经度。eta是覆盖半地心角,由最小仰角 5° 决定。跑出来你会看到轨迹呈正弦形,最高纬度约 53°。这意味着地面站纬度高于 53° 时,这颗星不会过顶,只能低仰角可见。PPT 里如果写“全球覆盖”,你要追问倾角和星座数量。

3.3 把可见时间算成表格

实际做地面站规划,需要知道每天每颗星可见几次、每次多久。下面用简化模型算单站可见窗口:

def visible_windows(h_km, inc_deg, lat_gs, lon_gs, duration_min=120): Re = 6378.137 inc = np.radians(inc_deg) n = np.sqrt(398600.4418 / (Re+h_km)**3) t = np.linspace(0, duration_min*60, 5000) u = n * t lat_sub = np.arcsin(np.sin(inc)*np.sin(u)) lon_sub = np.arctan2(np.cos(inc)*np.sin(u), np.cos(u)) # 地心角 psi = np.arccos(np.sin(np.radians(lat_gs))*np.sin(lat_sub) + np.cos(np.radians(lat_gs))*np.cos(lat_sub)* np.cos(lon_sub - np.radians(lon_gs))) el = np.degrees(np.arctan2(np.cos(psi) - Re/(Re+h_km), np.sin(psi))) vis = el > 5.0 # 找连续段 windows = [] start = None for i, v in enumerate(vis): if v and start is None: start = t[i] if not v and start is not None: windows.append((start, t[i-1])) start = None if start is not None: windows.append((start, t[-1])) return [(round(a/60,1), round(b/60,1)) for a,b in windows] print(visible_windows(550, 53, 30, 120, 120))

参数:h_km高度,inc_deg倾角,lat_gs/lon_gs地面站纬经度,duration_min仿真时长。返回可见窗口的起止分钟。这个模型忽略地球自转,所以经度会漂,做趋势判断够用。要精确,把地球自转角速度加进去,或者直接用skyfield读 TLE。

提示:TLE 数据有有效期,通常几天到两周,过期后位置误差会快速增大。做演示可以用,做链路预算要拿最新星历。

4. 避坑:轨道参数和链路预算里最容易翻车的 5 个点

4.1 把高度当斜距,损耗少算十几 dB

现象:链路预算里自由空间损耗用轨道高度直接代入,结果比实测少 10 到 20 dB。原因:斜距在低仰角时远大于高度,GEO 在 5° 仰角时斜距约 41000 km,比 35786 km 多约 1.2 dB;LEO 低仰角时斜距可能是高度的两倍以上。解决:先用仰角算斜距,再代 FSPL。公式用余弦定理,别偷懒。

4.2 忽略多普勒,终端捕获时间翻倍

现象:LEO 终端冷启动搜星慢,锁上后频繁失锁。原因:Ka 频段多普勒到几百 kHz,基带搜索范围按 GEO 设置,根本扫不到。解决:根据轨道高度和最大径向速度算多普勒范围,预补偿或扩大搜索带宽。过顶时变化率最大,环路带宽要留余量。

4.3 倾角和地面站纬度不匹配,高纬度站永远低仰角

现象:北方地面站跟踪 LEO 时仰角一直低于 10°,链路余量不够。原因:选了一颗倾角 30° 的星,星下点最高纬度只有 30°,高纬度站只能擦边。解决:地面站纬度高于倾角时,要么选更高倾角,要么用星座补覆盖。PPT 里写“覆盖全国”时,一定追问倾角和星下点轨迹。

4.4 单位混用:GHz 代进 Hz 公式

现象:损耗算出来 200 多 dB,明显不对。原因:频率单位没统一。解决:所有公式统一到 Hz、km、秒、弧度。写代码时在函数名或注释里标单位,别靠记忆。我一般会在函数入口做一次单位断言。

4.5 用圆轨道模型算大偏心率轨道

现象:近地点和远地点链路差异巨大,但预算只算了一个值。原因:大椭圆轨道 e 大,近地点和远地点高度差几万公里,损耗差几十 dB。解决:要么按最坏情况算远地点,要么分段算。通信里常见的是圆轨道和近圆轨道,遇到大椭圆要单独处理。

5. 把 PPT 变成可验证的轨道检查清单

5.1 一张表核对轨道参数和通信影响

参数符号对通信的影响常见取值
半长轴a周期、高度、损耗LEO 6700-8000 km
偏心率e近远地点差异圆轨道 <0.01
倾角i覆盖纬度上限53°、98°
升交点赤经Ω轨道面朝向按星座设计
近地点幅角ω近地点位置圆轨道无意义
真近点角ν当前星下点随时间变化

这张表可以直接放进 PPT 的备注页,做评审时逐项问。倾角和高度是通信最关心的两个,偏心率决定你要不要分段算损耗。

5.2 用 TLE 做一次真实轨道验证

如果手头有 TLE,用skyfield跑一次真实仰角和可见时间,和你的简化模型对比。差异在几度以内,说明简化模型可用;差异大,检查 TLE 时效和坐标系数。

# 需要先 pip install skyfield from skyfield.api import load, EarthSatellite ts = load.timescale() # 这里用示例 TLE 结构,实际替换为最新数据 line1 = "1 25544U 98067A 24001.00000000 .00000000 00000-0 00000-0 0 9999" line2 = "2 25544 51.6400 100.0000 0005000 50.0000 310.0000 15.50000000000000" sat = EarthSatellite(line1, line2, "DEMO", ts) t = ts.utc(2024, 1, 1, 12, 0, 0) geocentric = sat.at(t) subpoint = geocentric.subpoint() print(subpoint.latitude.degrees, subpoint.longitude.degrees, subpoint.elevation.km)

这段只做结构演示,TLE 必须用最新数据。跑通后,把仰角随时间的变化画出来,和你的可见窗口表对照。我一般会把这个验证作为 PPT 附录,评审时没人会质疑“轨道参数到底对不对”。

5.3 一个习惯:先算最坏几何,再谈余量

我做卫通链路预算,习惯先把最坏仰角、最远斜距、最大多普勒算出来,再倒推终端 EIRP、G/T 和天线口径。PPT 里如果只写典型值,我会在评审时要求补最坏情况。GEO 最坏在低仰角,LEO 最坏在低仰角加多普勒变化率最大。把这两个场景算清楚,链路余量才有意义。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进