メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

ADS-B出力用航空機対衛星通信

この例では、ニューヨークの JFK 国際空港からバミューダの L.F. ウェイド国際空港までのフライトの自動従属監視ブロードキャスト (ADS-B) 出力接続を調べます。ADS-B Out システムは、空港や Iridium NEXT衛星コンスタレーションなどのさまざまなターゲットに接続できます。その結果、地球の曲率により航空機が開水面上ではどの地上局とも直接視線が利かない場合でも、衛星ADS-B 接続により、航空機は継続的に姿勢、 GPS位置、およびステータスを、航空機の状態に関心のある他のすべての航空機および空港に提供できます。ADS-B Out システムは、最も強力な ADS-B 更新イニシエーターに応答します。航空機の上部と下部にある全方向性アンテナが ADS-B 更新を開始するためにブロードキャストします。

この例は、主に 3 つの部分から構成されます。

  1. 航空機、空港、イリジウム衛星ネットワークを含むシナリオを作成します。

  2. アクセス解析を実行して、航空機が Iridium ネットワーク内の空港または衛星と LOS (見通し) アクセスできるかどうかを判断します。

  3. 空港および衛星との ADS-B Out システムのリンク閉鎖解析を実行します。

この例では、次を使用します。

  • Satellite Communications Toolbox satelliteScenario オブジェクトを使用して、衛星、航空機、地上局の結果を解析および可視化します。

  • (オプション) Aerospace Toolbox を使用して satelliteScenario (Aerospace Toolbox) オブジェクトを作成することもできます。

  • 通信リンクを決定するための Satellite Communications Toolbox link および linkIntervals 関数。

  • (オプション) Phased Array System Toolbox phased.CosineAntennaElement (Phased Array System Toolbox) は、イリジウム衛星の 48ビームアンテナ パターンを近似する機能です。

Iridium NEXT衛星コンスタレーションとネットワークの詳細については、https://www.iridium.com/network/ を参照してください。

シナリオを作成する

衛星シナリオを作成します。シナリオの開始日と期間を指定します。所要時間をニューヨークからバミューダまでの飛行時間と同じ約 2 時間に設定します。

startTime = datetime(2023,10,9,7,10,0,TimeZone="America/New_York");
stopTime = startTime + hours(2) + minutes(2);
sampleTime = 10;                                      %seconds
sc = satelliteScenario(startTime,stopTime,sampleTime);
viewer = satelliteScenarioViewer(sc);

空港

シナリオで使用する空港のプロパティを設定します。

airportName = ["JFK International (New York)";...
    "L.F. Wade International (Bermuda)"];
airportLat = [40.6413;32.3634];
airportLon = [-73.7781;-64.7053];

groundStation 関数を使用してシナリオに空港を追加します。

airports = groundStation(sc,airportLat,airportLon,Name=airportName);

航空機

JFK 国際空港を離陸し、LF ウェイド国際空港に着陸する、飛行の典型的なウェイポイントと到着時刻のセットから geoTrajectory (Sensor Fusion and Tracking Toolbox) System object ™ を作成します。geoTrajectory System object は測地経緯度のウェイポイントに基づいて軌跡を生成します。シナリオの期間に基づいて飛行時間を設定します。

waypoints = [... % Latitude (deg), Longitude (deg), Altitude (meters)
    40.6289,-73.7738,3;...
   40.6325,-73.7819,3;...
   40.6341,-73.7852,44;...
   40.6400,-73.7974,265;...
   40.6171,-73.8618,1012;...
   40.5787,-73.8585,1698;...
   39.1452,-71.6083,11270;...
   34.2281,-66.0839,11264;...
   32.4248,-64.4389,970;...
   32.3476,-64.4565,574;...
   32.3320,-64.4915,452;...
   32.3459,-64.5712,453;...
   32.3610,-64.6612,18;...
   32.3621,-64.6678,3;...
   32.3639,-64.6777,3];

timeOfArrival = duration([... % time (HH:mm:ss)
   "00:00:00";...
   "00:00:20";...
   "00:00:27";...
   "00:00:43";...
   "00:01:47";...
   "00:02:21";...
   "00:21:25";...
   "01:32:39";...
   "01:54:27";...
   "01:55:47";...
   "01:56:27";...
   "01:57:48";...
   "01:59:49";...
   "01:59:55";...
   "02:00:15"]);

trajectory = geoTrajectory(waypoints,seconds(timeOfArrival),AutoPitch=true,AutoBank=true);

シナリオのサンプル レートで、航空機の軌跡の緯度、経度、高度(LLA)ウェイポイントを出力します。

LLA = lookupPose(trajectory,0:sc.SampleTime:max(seconds(timeOfArrival)));

geoplot を使用して航空機の軌道を可視化します。

geoplot(LLA(:,1), LLA(:,2), "b-")
geolimits([31,42],[-76,-63]);
geobasemap topographic;

platform 関数を使用して、シナリオに航空機を追加します。platform 機能を使用すると、航空機、自動車、船舶などのプラットフォームをシナリオに追加し、衛星、地上局、その他のプラットフォームを使用してアクセス解析を実行できます。Visual3DModel プロパティを使用して、シナリオに航空機の視覚的表現を追加します。この例では、NarrowBodyAirliner .glb ファイルを使用します。

aircraft = platform(sc,trajectory, Name="Aircraft", Visual3DModel="NarrowBodyAirliner.glb");
camtarget(viewer,aircraft);

airplane.png

衛星

2018年から2019年にかけて打ち上げられたイリジウムNEXT衛星ネットワーク[1]には、以下の66機の稼働中のLEO衛星が含まれています。

  • 約86.6度の傾斜角を持つ6つの軌道面があり、面間のRAANの差は約30度です[1]。

  • 軌道面あたり11個の衛星があり、衛星間の真近点角の差はおおよそ32.7度です[1]。

アクティブな Iridium NEXT衛星をシナリオに追加します。Iridium ネットワーク内の衛星の軌道要素を作成し、satellite 関数を使用して衛星を作成します。

numSatellitesPerOrbitalPlane = 11;
numOrbits = 6;

orbitIdx = repelem(1:numOrbits,1,numSatellitesPerOrbitalPlane);
planeIdx = repmat(1:numSatellitesPerOrbitalPlane,1,numOrbits);

RAAN = 180*(orbitIdx-1)/numOrbits;
trueanomaly = 360*(planeIdx-1 + 0.5*(mod(orbitIdx,2)-1))/numSatellitesPerOrbitalPlane;
semimajoraxis = repmat((6371 + 780)*1e3,size(RAAN)); % meters
inclination = repmat(86.4,size(RAAN)); % degrees
eccentricity = zeros(size(RAAN)); % degrees
argofperiapsis = zeros(size(RAAN)); % degrees

iridiumSatellites = satellite(sc,...
    semimajoraxis,eccentricity,inclination,RAAN,argofperiapsis,trueanomaly,...
    Name="Iridium " + string(1:66)');

Aerospace Toolbox のライセンスをお持ちの場合は、walkerStar (Aerospace Toolbox) 関数を使用して Iridiumコンスタレーションを作成することもできます。

多くの衛星が共通の軌道面を共有しているため、各面の最初の衛星の軌道経路のみを表示します。

hide(iridiumSatellites.Orbit,viewer);
show(iridiumSatellites(1:numSatellitesPerOrbitalPlane:end).Orbit,viewer);

イリジウム衛星にコニカル センサーを追加してカメラとして機能させ、衛星と航空機間の視覚アクセスを確立します。

iridiumConicalSensors = conicalSensor(iridiumSatellites,"MaxViewAngle",125);

航空機アクセス解析

シナリオを使用して、航空機、空港、衛星間のアクセス解析を決定します。航空機が空港への LOS (見通し) アクセスを持つ時間に基づいて、access および accessIntervals 関数を使用して、航空機と空港間のアクセス間隔を計算します。JFK 空港と LF ウェイド空港では、それぞれ飛行の最初の 2 時間および最後の 2 時間に航空機を見ることができます。そうしないと、航空機は地球の曲率によってブロックされてしまいます。

acAirport = access(aircraft,sc.GroundStations);
airportAccessIntvls = accessIntervals(acAirport)

円錐形センサーの視野内での航空機の可視性に基づいて、航空機と衛星間の同様のアクセス解析を計算します。これは、次のセクションに示すイリジウム マルチビーム アンテナの第一段階の近似として機能します。ビューア内の破線は、航空機の機体から空港や衛星までの LOS (見通し) アクセスを示しています。

acSatellite = access(aircraft,iridiumConicalSensors);
satelliteAccessIntvls = accessIntervals(acSatellite);

Screenshot 2023-10-22 125530.png

[sSatellite,time] = accessStatus(acSatellite); 
satVisPlotData = double(sSatellite);
satVisPlotData(satVisPlotData == false) = NaN; % Hide invisible satellites.
satVisPlotData = satVisPlotData + (0:numel(iridiumSatellites)-1)'; % Add space to satellites to be stacked.

plot(time,satVisPlotData," .",Color="blue")
yticks(1:5:66)
yticklabels(iridiumSatellites.Name(1:5:66))
title("Satellite Visibility")
grid on
xlabel("Time")
axis tight

アクセス間隔の計算により、航空機が航空機上にあるときは、イリジウム ネットワークとの衛星通信に継続的にアクセスできることがわかります。空港へのアクセスと組み合わせることで、航空機は飛行中ずっと LOS (見通し) アクセスが可能になります。

航空機リンク解析

飛行中、航空機がいずれかの空港および Iridium ネットワークとの直接接続を維持していることを確認した後、それぞれの地上および衛星ベースの ADS-B Out システムのリンク バジェットを生成します。ADS-B Out システムは、航空機の上部と下部にそれぞれ配置されている既存のモード A/C およびモード Sトランスポンダーアンテナを使用します。ADS-B はトランスポンダーのモード S を使用し、最小実効等方放射電力 (EIRP) が 125 ワットの 1090 MHz の周波数で ADS-B Out を操作します。

fADSB = 1090e6; % 1090 MHz

この例では、モード Sトランスポンダーのペアを、航空機の上部前面付近に配置された単一の等方性トランスミッタとしてモデル化します。取り付け位置は、一般的な民間航空機の上部に取り付けられた ADS-B トランシーバーのおおよその位置に対応します。等方性アンテナの有効ゲインは 0 dBi であるため、送信増幅器の電力出力を 125 ワットに設定すると、アンテナからの放射電力も 125 ワットになります。

aircraftADSBAntenna = arrayConfig("Size",[1 1]); % Create an isotropic antenna element

aircraftADSBTransmitter = transmitter(aircraft, ...
    Antenna = aircraftADSBAntenna, ...
    Frequency = fADSB,...
    Power=10*log10(125),...     % ADS-B Out minimum as EIRP of 125 Watts
    MountingLocation=[8,0,-2.7],...
    Name="ADS-B Aircraft Transmitter");

航空機から空港へのADS-B出力リンク

空港に等方性アンテナと受信機を追加します。

% Airport Antenna 
airportADSBAntenna = arrayConfig("Size",[1 1]); % Create an isotropic antenna element
airportADSBReceiver = receiver(...
    airports, ...
    Antenna=airportADSBAntenna, ...    
    Name=airports.Name + " Receiver");
pattern(airportADSBReceiver,fADSB,Size=1000);

航空機から衛星へのADS-B出力リンク

衛星 Communication Toolbox を使用すると、Iridium衛星のアンテナを等方性アンテナとしてモデル化できます。Phased Array System Toolboxのライセンスをお持ちの場合は、イリジウムNEXT衛星[2]で使用されているカスタム48ビームアンテナの近似値をモデル化できます。ドロップダウン リストを使用して、モデル化するアンテナを選択します。ビューア内の実線は、航空機のアンテナから空港および衛星までの実行可能なリンクを示しています。

antennaType = "Isotropic";

等方性アンテナを使用したイリジウム衛星リンクのシミュレーション

等方性アンテナ受信機を作成し、Iridium衛星に追加します。

if antennaType == "Isotropic"
    % Create and add an isotropic antenna receiver to the Iridium satellites.
    satelliteADSBAntenna = arrayConfig("Size",[1 1]); % Add code comment    
    satelliteADSBReceiver = receiver(iridiumSatellites, ...
        Antenna=satelliteADSBAntenna, ...
        MountingAngles=[0,0,0], ...
        Name=iridiumSatellites.Name + " Receiver");
    pattern(satelliteADSBReceiver,fADSB,Size=50000);    

    % Play the scenario.
    play(sc);
end

Screenshot 2023-10-22 122214.png

カスタム48ビームアンテナを使用したイリジウム衛星リンクのシミュレーション

HelperCustom48BeamAntenna 便利関数を使用して、カスタム アンテナ要素受信機を作成し、Iridium衛星に追加します。

注: 取り付け角度は、Phased Array System ToolboxおよびSatellite Communications Toolboxのデフォルトフレームと一致します。

if antennaType == "Custom 48-Beam"
    % Use Custom Antenna Element on 48-spot beam    
    satelliteADSBAntenna = HelperCustom48BeamAntenna(fADSB);
    satelliteADSBReceiver = receiver(iridiumSatellites, ...
        Antenna=satelliteADSBAntenna, ...
        MountingAngles=[0,-90,0], ...
        Name=iridiumSatellites.Name + " Receiver");
    pattern(satelliteADSBReceiver,fADSB,Size=200000);    

    % Play the scenario.
    play(sc);
end

Screenshot 2023-10-22 124447.png

ADS-B 出力リンク クロージャー時間

航空機から空港および衛星までの ADS-B Out リンク解析を追加します。

lnkADSB = link(aircraftADSBTransmitter, [airportADSBReceiver, satelliteADSBReceiver]);

利用可能な受信機へのリンクの最大マージンをプロットします。マージンは、受信した Eb/No からその受信機に必要な Eb/No を差し引いた値です。

[eL,time] = ebno(lnkADSB);
marginADSB = eL - repmat([airportADSBReceiver.RequiredEbNo,satelliteADSBReceiver.RequiredEbNo]',[1,size(eL,2)]);
figure;
plot(time,max(marginADSB),"b")
axis tight
grid on
xlabel("Time");
ylabel("Margin (dB)");
title("ADS-B Out Link Margin vs. Time");

航空機追跡ビュー

オプションで、航空機を追跡したり追跡したりして、航空機本体に対するアクセスとリンクを可視化するための 2 番目のビューアーを作成します。次に、画像に示すように、マウスを使用して航空機のビューを調整できます。

aircraftViewer = satelliteScenarioViewer(sc);
aircraftViewer.Position = aircraftViewer.Position + [200 200 0 0]; % Reposition aircraft viewer
aircraftViewer.PlaybackSpeedMultiplier = 5;
aircraftViewer.play();
camtarget(aircraftViewer,aircraft);

参考文献

[1] 添付資料エンジニアリングステートメント SAT-MOD-20131227-00148https://fcc.report/IBFS/SAT-MOD-20131227-00148/1031348。2023年1月17日にアクセス。

[2] 添付書類A SAT-MOD-20131227-00148https://fcc.report/IBFS/SAT-MOD-20131227-00148/1031240。2023年1月17日にアクセス。