Skripterstellung von Satelliten-Link-Budgets mit ITU-RPY (Python-Beispiele)
STK-freie Link-Budget-Automatisierung: Sweep-Frequenz, Regenverfügbarkeit und Höhenlage in reinem Python unter Verwendung der ITU-RPY-Referenzimplementierung von P.618/P.676/P.840. Ergänzung zum rftools Satellite Link Budget Analyzer.
Inhalt
- Warum sollten Sie Ihre Link-Budgets skripten
- Installieren```bash
- Anwendungsfall 1: Frequenz-Sweep für einen Ka-Band-Downlink
- Anwendungsfall 2: Überprüfung der Verfügbarkeit im Rahmen einer Rain-Fade-Trade-Studie
- Anwendungsfall 3: Höhenmaske — wo endet die Verbindung bei niedriger Höhe?
- Häufige Fallstricke
- Das Kommunikationsmodul von STK Cloud ersetzen
- Weiterführende Literatur
Warum sollten Sie Ihre Link-Budgets skripten
Der rftools Satellite Link Budget Analyzer wurde für das interaktive Szenariodesign entwickelt. Wenn Sie einen Parameter über Hunderte von Punkten hinweg durchsuchen müssen — für Handelsstudien, Frequenzplanoptimierung oder CI/CD-Integration in Ihr Missionsdesign-Repo —, dann benötigen Sie Python, keinen Browser.
ITU-RPY ist die Open-Source-Referenzimplementierung der ITU-R-Empfehlungen zur Ausbreitung der Erde im Weltraum. Unser Backend passt sich dem an. Dieser Beitrag zeigt drei skriptbasierte Anwendungsfälle, die Sie direkt in ein Jupyter-Notizbuch übernehmen können.Installierenpip install itur numpy matplotlib
ITU-RPY bezieht seine eigenen Datentabellen (Regenratenkarten, Brechungsindex-Klimatologien) aus dem ITU-Repositorium. Der erste Import kann ~5 Sekunden dauern.
pip install itur numpy matplotlibAnwendungsfall 1: Frequenz-Sweep für einen Ka-Band-Downlink
Sie planen einen GEO-Broadcast-Downlink und möchten wissen, wie die spezifische Regendämpfung bei einer Verfügbarkeit von 99,99% zwischen 20 und 40 GHz variiert.
import itur
import itur.models as m
import numpy as np
import matplotlib.pyplot as plt
# Ground station: Atlanta, GA
lat, lon = 33.75, -84.39
elevation_deg = 45.0
availability_pct = 0.01 # 0.01% outage → 99.99% availability
freqs = np.linspace(20, 40, 21) # GHz
attenuations = []
for f in freqs:
a = itur.atmospheric_attenuation_slant_path(
lat=lat, lon=lon,
f=f * itur.u.GHz,
el=elevation_deg,
p=availability_pct,
D=1.2 * itur.u.m, # antenna diameter (affects cloud attenuation)
hs=0.3 * itur.u.km,
)
attenuations.append(float(a.value))
plt.plot(freqs, attenuations)
plt.xlabel('Frequency (GHz)')
plt.ylabel('Total atmospheric attenuation (dB)')
plt.title(f'Ka-band slant path, {availability_pct}% outage, Atlanta 45° elevation')
plt.grid(True)
plt.show()Im Ka-Band über der Klimazone von Atlanta (ITU-R-Regenzone K) liegt die Atmosphärendämpfung bei 20 GHz bei 99,99% bei etwa 2-3 dB. Bei 40 GHz steigt dieser Wert auf 15 bis 20 dB an. Aus diesem Grund weisen Ka-Band-Sender in der Regel 5-6 dB an Uplink-Leistungsregelungsmarge zu, die über dem Nennwert liegt.
Anwendungsfall 2: Überprüfung der Verfügbarkeit im Rahmen einer Rain-Fade-Trade-Studie
Sie müssen sich für einen maritimen VSAT zwischen 99,9% (80 Minuten Ausfall/Jahr), 99,99% (52 Minuten Ausfall/Jahr) und 99,999% (5 Minuten Ausfall/Jahr) entscheiden. Wie viel zusätzliche Fade-Margin kostet jede Stufe?
availabilities = [1.0, 0.1, 0.01, 0.001] # 99% through 99.999%
freq = 14.5 # Ku-band uplink
lat, lon = 42.0, -3.0 # Bay of Biscay, typical rain zone M
print(f'{"Availability":14s} {"Outage/yr":12s} {"Total Atten":12s}')
print('-' * 40)
for p in availabilities:
a = itur.atmospheric_attenuation_slant_path(
lat=lat, lon=lon,
f=freq * itur.u.GHz,
el=30.0,
p=p,
)
outage_min = p / 100 * 365.25 * 24 * 60
pct = 100 - p
print(f'{pct:9.3f} % {outage_min:9.1f} min {float(a.value):8.2f} dB')Typische Leistung:Availability Outage/yr Total Atten
----------------------------------------
99.000 % 5259.6 min 1.48 dB
99.900 % 525.9 min 3.21 dB
99.990 % 52.6 min 6.58 dB
99.999 % 5.3 min 11.42 dBDer Wechsel von 99,99% auf 99,999% kostet im Ku-Band etwa 5 dB — was für die meisten maritimen Anwendungsfälle das Hardware-Budget nicht wert ist. Die Tabelle mit den Handelsstudien erleichtert das Gespräch mit den Interessenvertretern.
Anwendungsfall 3: Höhenmaske — wo endet die Verbindung bei niedriger Höhe?
Bei einer LEO-Konstellation mit festem Bodenanschluss weisen Pässe in niedriger Höhe eine viel höhere atmosphärische Dämpfung auf. Stellen Sie die Gesamtdämpfung im Vergleich zur Höhe dar:
§4 §
Bei 5° Höhe sind 8-10 dB mehr zu hören als bei 45°. Aus diesem Grund verwenden LEO-Ka-Band-Terminals eine Mindesthöhenmaske von 15-20° und räumen Kontakten mit niedriger Höhe keine Priorität ein.
# Rückspeisung der Ausgabe in den rtools Analyzer
Sobald Sie eine programmierte Dämpfungszahl haben, fügen Sie sie alsrainFadeoderatmosphericLossin den Satellite Link Budget Analyzer ein, starten Sie Monte Carlo und kopieren Sie die Szenario-URL zum Teilen. Unser Backend verwendet dieselben ITU-R-Modelle, sodass die Ergebnisse mit der Gleitkommagenauigkeit übereinstimmen.
Für automatisierte Regressionstests akzeptiert unser Endpunkt POST /api/py/v1/calculate denrf-link-budget-Rechner mit allen Eingaben — perfekt für CI-Pipelines, die die Einhaltung des Link-Budgets bei jedem Commit überprüfen.
Häufige Fallstricke
- Einheiten sind wichtig.
f=20.0ohne* itur.u.GHzgeht stillschweigend von Hz aus. ITU-RPY validiert dimensional. - Verfügbarkeit ist der Prozentsatz des Ausfalls, nicht der Betriebszeit %.
p=0.01bedeutet eine Verfügbarkeit von 99,99% (0,01% der Fälle, in denen die Dämpfung diesen Wert überschreitet). - Die Regenzone wird von Breite/Länge abgeleitet. Sie können sie nicht außer Kraft setzen — wenn Sie für Zone P (im schlimmsten Fall tropisch) testen, müssen Sie in dieser Zone eine Breite/Länge bestehen, z. B.
lat=1.3, lon=103.8(Singapur). - Für die Wolkendämpfung ist ein Antennendurchmesser erforderlich. Größere Antennen haben einen engeren Lichtkegel und eine geringere Wolkendämpfung in dB.
- Szintillation ist eine separate Funktion. Verwenden Sie
itur.models.itu618.scintillation_attenuation()— sie ist nicht im standardmäßigenatmospheric_attenuation_slant_path-Aufruf enthalten.
Das Kommunikationsmodul von STK Cloud ersetzen
Die Comm/Radar-Suite von STK Cloud hat diese ITU-R-Berechnungen in einer Benutzeroberfläche zusammengefasst. Für die Skripterstellung ist ITU-RPY die Referenzimplementierung, die sie aufgerufen hätten. Migration:
| STK Cloud Comm | ITU-RPY-Äquivalent |
|---|---|
| Modell zur Regendämpfung | itur.models.itu838.specific_attenuation() |
| Gasaufnahme | itur.models.itu676.gaseous_attenuation_slant_path() |
| Dämpfung von Wolken | itur.models.itu840.columnar_content_reduced_liquid() |
| Szintillation | itur.models.itu618.scintillation_attenuation() |
| Totale Dämpfung | itur.atmospheric_attenuation_slant_path() |
Weiterführende Literatur
Verwandte Artikel
Building a Ground-Station Pass Schedule with Skyfield
Ansys STK sunset-ready: compute SGP4 pass predictions for your amateur-radio or cubesat ground station using Skyfield. Full Python walkthrough with TLE fetch, elevation masks, Doppler, and iCalendar export.
30. Apr. 2026
Satellite CommunicationsSizing a 9600-baud UHF Downlink for a 3U CubeSat: Full Walkthrough
End-to-end link budget for an amateur-band 3U cubesat: EIRP, ground-station G/T, ITU-R propagation losses, and Monte Carlo availability. Uses the Amateur CubeSat preset.
29. Apr. 2026
Satellite CommunicationsMigrating from STK Cloud: Free Alternatives for Link Budget and Orbit Analysis
Ansys is sunsetting STK Cloud in March 2026. Here are the free open-source replacements for the two things it did best — ITU-R link budgets and orbital pass prediction.
29. Apr. 2026