Création de scripts pour les budgets de liaisons satellites avec ITU-RPy (exemples Python)
Automatisation du budget de liaison sans STK : fréquence de balayage, disponibilité de la pluie et altitude en Python pur à l'aide de l'implémentation de référence ITU-RPy de P.618/P.676/P.840. Complément de l'analyseur de budget de liaison satellite rftools.
Sommaire
- Pourquoi créer des scripts pour vos budgets de liens
- Installer
- Cas d'utilisation 1 : balayage de fréquence pour une liaison descendante en bande Ka
- Cas d'utilisation 2 : analyse de la disponibilité pour une étude commerciale
- Cas d'utilisation 3 : masque d'altitude — où se ferme le lien à basse altitude ?
- Réintroduire la sortie dans l'analyseur rftools
- Pièges courants
- Remplacement du module de communication de STK Cloud
- Lectures complémentaires
Pourquoi créer des scripts pour vos budgets de liens
Le rftools Satellite Link Budget Analyzer est conçu pour la conception de scénarios interactifs. Lorsque vous devez faire passer un paramètre sur des centaines de points, pour des études commerciales, l'optimisation d'un plan de fréquence ou l'intégration CI/CD dans votre référentiel de conception de mission, vous avez besoin de Python, pas d'un navigateur.
ITU-RPy est l'implémentation de référence open source des Recommandations UIT-R pour la propagation dans l'espace Terre. Notre backend s'y aligne. Cet article présente trois cas d'utilisation scénarisés que vous pouvez intégrer directement dans un bloc-notes Jupyter.Installer
§ 0§
L'UIT-RPy extrait ses propres tableaux de données (cartes des taux de pluie, climatologies à indice de réfraction) du référentiel de l'UIT. La première importation peut prendre environ 5 secondes.
Cas d'utilisation 1 : balayage de fréquence pour une liaison descendante en bande Ka
Vous concevez une liaison descendante de diffusion GEO et souhaitez savoir dans quelle mesure l'atténuation spécifique de la pluie varie de 20 à 40 GHz avec une disponibilité de 99,99 %.
§ 1§
En bande Ka au-dessus de la zone climatique d'Atlanta (zone de pluie K de l'UIT-R), la fréquence de 20 GHz entraîne une atténuation atmosphérique totale d'environ 2 à 3 dB à 99,99 %. De 40 GHz, cela grimpe à 15-20 dB. C'est pourquoi les radiodiffuseurs en bande Ka allouent généralement 5 à 6 dB de marge de contrôle de la puissance de liaison montante au-delà de la valeur nominale.
Cas d'utilisation 2 : analyse de la disponibilité pour une étude commerciale
Vous devez choisir entre 99,9 % (80 minutes de panne par an), 99,99 % (52 minutes de panne par an) et 99,999 % (5 minutes de panne par an) pour un VSAT maritime. Quel est le coût de la marge de décoloration supplémentaire pour chaque niveau ?
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')Sortie typique :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 dBPasser de 99,99 % à 99,999 % coûte environ 5 dB en bande Ku, ce qui, dans la plupart des cas d'utilisation maritime, ne vaut pas le budget matériel. Le tableau d'étude sur les métiers facilite la conversation avec les parties prenantes.
Cas d'utilisation 3 : masque d'altitude — où se ferme le lien à basse altitude ?
Pour une constellation LEO dotée d'une borne terrestre fixe, les passes à basse altitude présentent une atténuation atmosphérique beaucoup plus élevée. Tracez l'atténuation totale en fonction de l'altitude :
elevations = np.arange(5, 85, 5)
attens = []
for el in elevations:
a = itur.atmospheric_attenuation_slant_path(
lat=51.5, lon=-0.1, # London
f=20.0 * itur.u.GHz,
el=el,
p=0.1,
)
attens.append(float(a.value))
plt.plot(elevations, attens)
plt.xlabel('Elevation angle (deg)')
plt.ylabel('Total attenuation (dB) at 20 GHz, 99.9%')
plt.title('Atmospheric + rain attenuation vs elevation — London')
plt.grid(True)
plt.show()À une altitude de 5°, vous voyez 8 à 10 dB de plus qu'à 45°. C'est pourquoi les terminaux en bande Ka LEO utilisent un masque d'altitude minimum de 15 à 20° et ne donnent pas la priorité aux contacts à basse altitude.
Réintroduire la sortie dans l'analyseur rftools
Une fois que vous avez un numéro d'atténuation scripté, branchez-le au Satellite Link Budget Analyzer en tant querainFadeouatmosphericLoss, lancez le Monte Carlo et copiez l'URL du scénario pour le partager. Notre backend utilise les mêmes modèles UIT-R afin que les résultats correspondent avec une précision à virgule flottante.
Pour les tests de régression automatisés, notre point de terminaison POST /api/py/v1/calculate accepte le calculateurrf-link-budgetavec toutes les entrées, ce qui est parfait pour les pipelines CI qui vérifient la conformité du budget des liens à chaque commit.
Pièges courants
- Les unités comptent.
f=20.0sans* itur.u.GHzsuppose silencieusement Hz. L'ITU-RPy valide dimensionnellement. - La disponibilité est le % de panne, et non le % de disponibilité.
p=0.01signifie une disponibilité de 99,99 % (0,01 % du temps, l'atténuation dépasse cette valeur). - La zone de pluie est dérivée de lat/lon. Vous ne pouvez pas la modifier. Si vous testez pour la zone P (zone tropicale dans le pire des cas), vous devez passer un lat/lon dans cette zone, par exemple
lat=1.3, lon=103.8(Singapour). - L'atténuation des nuages nécessite le diamètre de l'antenne. Les antennes plus grandes émettent des faisceaux plus étroits et voient moins d'atténuation des nuages en dB.
- La scintillation est une fonction distincte. Utilisez
itur.models.itu618.scintillation_attenuation()— elle n'est pas incluse dans l'appelatmospheric_attenuation_slant_pathpar défaut.
Remplacement du module de communication de STK Cloud
La suite Comm/Radar de STK Cloud a intégré ces calculs UIT-R dans une interface utilisateur. Pour les scripts, ITU-RPy est l'implémentation de référence qu'ils auraient appelée. Migration :
| STK Cloud Comm | Equivalent ITU-RPy |
|---|---|
| Modèle d'atténuation de la pluie | itur.models.itu838.specific_attenuation() |
| Absorption de gaz | itur.models.itu676.gaseous_attenuation_slant_path() |
| Atténuation des nuages | itur.models.itu840.columnar_content_reduced_liquid() |
| Scintillation | itur.models.itu618.scintillation_attenuation() |
| Atténuation totale | itur.atmospheric_attenuation_slant_path() |
Lectures complémentaires
Articles connexes
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 avr. 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 avr. 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 avr. 2026