Skip to content
RFrftools.io
Satellite Communications2026년 4월 30일8분 읽기

ITU-RPy를 사용한 위성 링크 예산 스크립팅 (Python 예제)

STK가 필요 없는 링크 버짓 자동화: P.618/P.676/P.840의 ITU-RPy 참조 구현을 사용한 순수 Python의 스위프 주파수, 강우 가용성 및 고도.rftools 위성 링크 버짓 분석기와 함께 제공됩니다.

목차

링크 예산을 스크립팅하는 이유

rftools 위성 링크 버짓 분석기 는 대화형 시나리오 설계를 위해 제작되었습니다.거래 연구, 주파수 계획 최적화 또는 CI/CD를 미션 설계 리포지토리에 통합하기 위해 수백 개의 포인트에 걸쳐 파라미터를 스윕해야 하는 경우에는 브라우저가 아닌 Python이 필요합니다. ITU-RPy 는 지구 공간 전파를 위한 ITU-R 권장 사항의 오픈 소스 참조 구현입니다.우리의 백엔드는 이에 맞춰 조정됩니다.이 게시물에서는 Jupyter 노트북에 바로 적용할 수 있는 세 가지 스크립트 사용 사례를 보여줍니다.

설치
pip install itur numpy matplotlib
ITU-RPy는 ITU 저장소에서 자체 데이터 테이블 (강우량 지도, 굴절률 기후) 을 가져옵니다.첫 가져오기에는 약 5초가 걸릴 수 있습니다.

사용 사례 1: Ka 대역 다운링크의 주파수 스윕

GEO 브로드캐스트 다운링크를 설계하고 있는데, 특정 강우 감쇠량이 99.99% 가용성에서 20GHz에서 40GHz까지 어떻게 변하는지 알고 싶으신가요?

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()
애틀랜타 기후대 (ITU-R 레인 존 K) 의 Ka 대역에서는 20GHz의 전체 대기 감쇠가 99.99% 로 약 2-3dB에 달합니다.40GHz까지 올라가면 15-20dB까지 올라갑니다. 이 때문에 Ka 대역 방송사는 일반적으로 5-6dB의 업링크 전력 제어 마진을 공칭 이상으로 할당합니다.

사용 사례 2: 레인-페이드 트레이드 연구를 위한 가용성 범위

해상 VSAT의 경우 99.9% (연간 80분 정전), 99.99% (연간 52분 정전), 99.999% (연간 5분 정전) 사이에서 결정해야 합니다.각 티어의 추가 페이드 마진 비용은 얼마입니까?

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')
일반적인 출력:
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 dB
99.99% 에서 99.999% 로 업그레이드하려면 Ku 대역에서 약 5dB의 비용이 들며, 대부분의 해양 사용 사례에서는 하드웨어 예산을 감당할 가치가 없습니다.트레이드 스터디 테이블을 사용하면 이해관계자와 쉽게 대화할 수 있습니다.

사용 사례 3: 고도 마스크 — 링크가 낮은 고도에서 닫히는 위치는 어디인가요?

고정 접지 단자가 있는 LEO 컨스텔레이션의 경우 저고도 패스는 대기 감쇠가 훨씬 더 높습니다.총 감쇠량 대 고도 플롯:

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()
5° 고도에서는 45°보다 8-10dB 더 높습니다. 이것이 바로 LEO Ka 대역 터미널이 15-20°의 최소 고도 마스크를 사용하고 저고도 접점의 우선 순위를 낮추는 이유입니다.

출력을 rftools 분석기로 다시 공급하기

스크립팅된 감쇠 수치를 얻었으면, 이를 위성 링크 버짓 분석기rainFade또는atmosphericLoss으로 연결하고 몬테카를로를 실행하고 공유할 시나리오 URL을 복사합니다.백엔드는 동일한 ITU-R 모델을 사용하므로 부동소수점 정밀도 내에서 결과가 일치합니다.

자동 회귀 테스트의 경우 POST /api/py/v1/culate 엔드포인트는 모든 입력과 함께rf-link-budget계산기를 사용하므로 모든 커밋에서 링크 예산 규정 준수를 확인하는 CI 파이프라인에 적합합니다.

흔히 발생하는 문제

1.단위는 중요합니다.* itur.u.GHz없는f=20.0은 자동으로 Hz로 가정합니다.ITU-RPy는 차원을 기준으로 유효성을 검사합니다. 2.가용성은 가동 시간 %가 아니라 운영 중단%입니다.p=0.01은 99.99% 의 가용성을 의미합니다 (0.01% 의 시간 감쇠가 이 값을 초과함). 3.우천 구역은 위도/경도에서 파생됩니다. 우천 지대는 무시할 수 없습니다. 구역 P (최악의 경우 열대 기후) 에서 위도/경도를 통과해야 합니다 (예:lat=1.3, lon=103.8(싱가포르)). 4.클라우드 감쇠에는 안테나 직경이 필요합니다. 안테나가 클수록 빔이 좁아지고 클라우드 감쇠가 dB 단위로 줄어듭니다. 5.신틸레이션은 별도의 함수입니다.itur.models.itu618.scintillation_attenuation()를 사용하세요. 기본atmospheric_attenuation_slant_path호출에는 포함되지 않습니다.

STK 클라우드의 통신 모듈 교체

STK Cloud의 통신/레이더 제품군은 이러한 ITU-R 계산을 UI에 포함시켰습니다.스크립팅의 경우 ITU-RPy를 참조 구현이라고 했을 것입니다.마이그레이션:

STK 클라우드 통신ITU-RPY 동급
빗물 감쇠 모델itur.models.itu838.specific_attenuation()
기체 흡수itur.models.itu676.gaseous_attenuation_slant_path()
구름 감쇠itur.models.itu840.columnar_content_reduced_liquid()
신틸레이션itur.models.itu618.scintillation_attenuation()
전체 감쇠itur.atmospheric_attenuation_slant_path()
본격적인 컨스텔레이션 시뮬레이션이 아니라면 바로 이 기능을 사용할 수 있습니다.전체 도구 대체 맵은 STK 클라우드에서 마이그레이션하기 도 참조하십시오.

추가 읽기

관련 기사