
衛星通信のリンクバジェットをPythonで計算|電波が"届くか"を見積もる
2026-09-16 ・ 実践
衛星通信の設計で最初に確かめるのが リンクバジェット——「電波が受信側に十分な強さで届くか」の収支計算です。送信電力から各種の損失を引いて、受信電力が必要ラインを超えるか判断します。Pythonで実装します。
発想:電力の足し引き
リンクバジェットは、利得(プラス)と損失(マイナス)を全部dBで足し引きするだけ。デシベル(dB)を使うと掛け算が足し算になり、見通しがよくなります。
受信電力の収支
送信電力+利得
プラス要素
自由空間損失
距離で減衰
受信電力
必要ラインと比較
準備
pip install numpy
① 自由空間損失を計算
電波は距離とともに広がって弱まります。この損失(FSPL)は距離と周波数で決まります。
import numpy as np
def fspl_db(distance_km, freq_ghz):
# 自由空間伝搬損失(dB)
return 20 * np.log10(distance_km) + 20 * np.log10(freq_ghz) + 92.45
# 低軌道衛星(高度550km、真上)とKuバンド12GHz
loss = fspl_db(550, 12)
print(f"自由空間損失: {loss:.1f} dB")
出力は約 168.8 dB。距離が遠く周波数が高いほど損失は増えます。
② リンクバジェット全体
送信電力・アンテナ利得から損失を引いて受信電力を出し、必要感度と比べます。
# すべて dB / dBW で足し引き
tx_power_dbw = 10 * np.log10(20) # 送信20W → dBW
tx_gain_db = 35 # 送信アンテナ利得
rx_gain_db = 40 # 受信アンテナ利得
misc_loss_db = 3 # ケーブル・大気などの雑損失
rx_power_dbw = (tx_power_dbw + tx_gain_db + rx_gain_db
- fspl_db(550, 12) - misc_loss_db)
print(f"受信電力: {rx_power_dbw:.1f} dBW")
required_dbw = -120 # 受信機が必要とする最低電力
margin = rx_power_dbw - required_dbw
print(f"マージン: {margin:.1f} dB", "→ 通信可能" if margin > 0 else "→ 届かない")
受信電力が必要ラインを上回れば マージンがプラス=通信可能。マージンは余裕度で、悪天候などに備えて数dB確保するのが実務です。
なぜdBで計算するのか
電波の強さは何桁も変わるため、そのままの数値では扱いにくい。dB(対数)にすると「掛け算→足し算」になり、桁違いの量を見通しよく足し引きできます。通信工学の基本ツールです。
雨・大気も効く
高い周波数(Ku/Kaバンド)は雨で大きく減衰します(降雨減衰)。実際のリンクバジェットには、大気吸収・降雨・指向誤差などの損失を加え、悪条件でもマージンが残るよう設計します。だから晴天時は余裕たっぷりに見えるのです。
まとめ
- リンクバジェットは利得と損失をdBで足し引きする収支計算
- 自由空間損失は距離と周波数で増える(例: 550km・12GHzで約169dB)
- 受信電力が必要感度を上回る=マージンプラスで通信可能
- 降雨減衰などに備えてマージンを確保するのが実務
もう少し詳しく(背景と理論)
リンクバジェットは、送信電力からアンテナ利得・伝搬損失・雑音を足し引きし、受信側で十分な信号対雑音比(SNR)が得られるかを見積もる通信設計です。基礎は Friis の伝達公式で、受信電力が送受アンテナ利得に比例し、距離の2乗と周波数の2乗に反比例します1。距離が効く項が**自由空間伝搬損失(FSPL)**で、静止衛星のような遠距離では莫大になります2。すべてをデシベル(dB)で足し算にして扱うのが実務の定石で、雨や大気による減衰、指向精度の誤差ぶんの余裕(リンクマージン)を見込みます3。受信品質の下限は熱雑音(ボルツマン定数×温度×帯域)で決まり、Shannon の限界が到達可能な通信速度を規定します。
次の一歩 🌸
衛星の基礎は衛星の基礎、用途は衛星の使い道、衛星群はメガコンステレーションへどうぞ。