MCPcopy Create free account
hub / github.com/Tong89/smartNode / calculate_direct_rate

Function calculate_direct_rate

backend/orbit.py:309–348  ·  view source on GitHub ↗

直连链路速率 (Mbps),由链路预算引擎驱动(含大气衰减)。 替代原 base_rate × exp(-d/k) 经验公式, 使用 FSPL/EIRP/G-T/C-N0 推导物理上准确的可达速率; 通过仰角与地面站降雨率叠加 ITU-R P.838/P.618 大气衰减。

(sat_pos, gs, data_type=None)

Source from the content-addressed store, hash-verified

307
308
309def calculate_direct_rate(sat_pos, gs, data_type=None):
310 """直连链路速率 (Mbps),由链路预算引擎驱动(含大气衰减)。
311
312 替代原 base_rate × exp(-d/k) 经验公式,
313 使用 FSPL/EIRP/G-T/C-N0 推导物理上准确的可达速率;
314 通过仰角与地面站降雨率叠加 ITU-R P.838/P.618 大气衰减。
315 """
316 gs_lat = gs["lat"]
317 gs_lon = gs["lon"]
318 gs_alt_m = gs.get("alt", 0.0)
319 sat_alt_m = sat_pos.get("alt", 500e3)
320
321 # 精确计算仰角(用于大气衰减路径折算)
322 look = compute_look_angles(
323 sat_lat=sat_pos["lat"],
324 sat_lon=sat_pos["lon"],
325 sat_alt_m=sat_alt_m,
326 gs_lat=gs_lat,
327 gs_lon=gs_lon,
328 gs_alt_m=gs_alt_m,
329 )
330 elevation_deg = look["elevation_deg"]
331 dist_km = look["slant_range_km"] if look["slant_range_km"] > 0 else _slant_range_km(
332 sat_pos, {"lat": gs_lat, "lon": gs_lon, "alt": gs_alt_m}
333 )
334
335 antenna_type = gs.get("antenna_type", "Ka")
336 # 地面站可配置降雨率场景(默认晴天)
337 rainfall_rate_mm_h = gs.get("rainfall_rate_mm_h", 0.0)
338 gs_altitude_km = gs_alt_m / 1000.0
339
340 result = link_budget_direct(
341 distance_km=dist_km,
342 antenna_type=antenna_type,
343 data_type=data_type,
344 elevation_deg=elevation_deg,
345 rainfall_rate_mm_h=rainfall_rate_mm_h,
346 gs_altitude_km=gs_altitude_km,
347 )
348 return max(result.achievable_rate_mbps, 5.0)
349
350
351def calculate_relay_rate(sat_pos, geo_pos, gs, data_type=None):

Calls 4

compute_look_anglesFunction · 0.90
link_budget_directFunction · 0.90
_slant_range_kmFunction · 0.85
getMethod · 0.45