AIRCOMサーバーでフライトデータを初期化する

理論のビット



ACARS (航空機通信アドレス指定および報告システム)は、直接無線通信または衛星システムのいずれかを介して、航空機と地上局の間の短い比較的単純な通信を送信するために航空で使用されるデジタル通信システムです。

AIRCOM-異なるネットワーク間のサーバー(ゲートウェイ)メッセージング。 メーカーはSITAです。 ACARS搭載機器をARINCネットワーク経由でLIDO OCフライトプランニングシステム(Jeppesen Jet Plannerなど)、電子メール、SITAtex、電話、ファイル交換、および航空会社が使用するその他の必要な情報システムと接続します。



AIRCOMサーバーの仕組み



SITA AIRCOMサーバー情報システムはMS SQLに実装されており、航空会社にルート、各階の風、天候、および「乗組員-MCC-乗組員」のメッセージ交換に関するデータを提供するために使用されます。 AIRCOMサーバーはACARC搭載機器用に構成されており、連携して動作します。 AIRCOMサーバーは重要なフライト情報システムです。



AIRCOMを正しく動作させるには、次の(または現在の)フライトに関する正しいデータがAIRCOMデータベースと航空機のFMSメモリにある必要があります。



-フライト番号。

-航空機のサイド番号(航空機);

-出発地と目的地の飛行場;

-出発時間など



FMSメモリ、AIRCOMデータベース、および飛行計画システムの情報が一致しない場合、パイロットの一部の要求は処理されず、乗組員は、たとえば、飛行ルートに沿った飛行レベルの風に関する更新データを受信しません。



AIRCOMおよびFMS航空機メモリへの今後の(または現在の)フライトに関するデータは、航空会社の情報システムから受信する必要があります(「スケジュール」と呼びましょう)。フライトスケジュールが生成および調整されます。



これは2つの方法で実行できます。



1.クルーによる手動初期化



パイロットは、ACARSリモートコントロールとFlight Operation Plan(OFP)を使用して、今後のフライトのすべてのデータを手動で入力します。その後、「INIT」ボタンを押して初期化します。 同時に、フライトデータはAIRCOMに送信され、データベースに記録されます。



この方法の短所:



-パイロットがデータを入力するときにミスをする可能性があります。

-航空機の機内システムの電源を入れてからしばらく(〜15分)待ってから、フライトデータを入力して初期化を実行する必要があります。



2.自動初期化



パイロットは、FMSメモリに保存されているデータに注意を払わずに初期化メッセージをAIRCOMに送信します(以前のフライトであるか、まったく存在しない可能性があります)。メッセージタイプのみが重要です-INIT。

AIRCOMはこのINITを受信し、このリクエストが特定の航空機(ボード番号別)からのものであることと、リクエストの日時を認識します。



AIRCOMは、航空機からINITリクエストを受信すると、このタイプのメッセージ向けのダウンリンクテンプレートとモデル(モデル)を使用し、サードパーティシステムから航空機の現在の有効なフライトスケジュールデータ(フライト番号、出発地と目的地の飛行場、日付、出発時刻)、このデータをデータベースに書き込み、この情報をACARS経由で飛行機に送信します。 これらのデータは機内システムのメモリに記録され、航空機からの後続の要求に使用されます。



タスクが形成されました-航空機とAIRCOMのフライトスケジュールと情報システム間の情報交換を実装するために。



IS AIRCOMには標準機能があります。追加のサードパーティデータベースを使用し、書き込み用と読み取り用の2つのストアドプロシージャを使用して、情報交換を実行します。 このデータベースに接続するためのパラメーターは、AIRCOM IP設定ファイル-AircomSrv.iniで指定されています。 さらに、追加のサービスであるAS Database ConnectorをAIRCOMサーバーにインストールして開始する必要があります(すべてが構成されている場合)。



AS Database Connectorは、「MS SQL Server」タイプのデータベースへの接続のみをサポートします(Oracleを含む他のものは、一部の将来のバージョンでサポートされると言われています)。 データベースコネクタは1つのデータベースにのみ接続でき、データの送受信には(読み書き用の)ストアドプロシージャのペアを1つだけ使用できます。



実装



1. ISフライトスケジュールデータベース(Oracle)で、ビューと、このビューを実行する権限を持つユーザーが作成されました。 このビューは、Scheduleデータベースのいくつかのテーブルから収集された一連のデータを返しました。



  • id-スケジュールデータベースからのフライトのID(一意)
  • ACFT-航空機に乗って
  • フライト-フライト番号
  • dep_icao-出発日/出発日のICAOコード
  • dest_icao-ICAO宛先コード
  • STD-出発予定日時
  • ETD-出発予定日時(調整済み)
  • ETA-到着予定時刻


2. AIRCOM ISサーバー(MS SQL)に追加のデータベースが作成されました。2つのテーブルと2つのストアドプロシージャ、およびこれらのテーブルを読み書きしてストアドプロシージャを開始する権利を持つ別のユーザーが含まれています。



2.1。「スケジュール」テーブル-すべてのAK航空機の現在のフライトスケジュールを保存します(「スケジュール」から取得したフライトデータ):



CREATE TABLE [dbo].[schedule]( [leg_number] [int] NOT NULL, [tail] [varchar](10) NOT NULL, [flight] [varchar](7) NOT NULL, [dep_icao] [varchar](4) NOT NULL, [dest_icao] [varchar](4) NOT NULL, [STD] [datetime] NULL, [ETD] [datetime] NULL, [ETA] [datetime] NULL, PRIMARY KEY CLUSTERED ( [leg_number] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
      
      





2.2表「メッセージ」-AIRCOMから受信したINIT要求のデータを記録する場合:



 CREATE TABLE [dbo].[messages]( [id] [int] IDENTITY(1,1) NOT NULL, [AircraftReg] [varchar](7) NOT NULL, [Treated] [bit] NOT NULL, [dt] [datetime] NULL ) ON [PRIMARY] GO
      
      





リクエストはIS AIRCOMから送信され、航空機のサイド番号のみが含まれます。



2.3 msgReceiveストアドプロシージャ-INIT要求が太陽から受信されたときにトリガーされます。



 CREATE PROCEDURE [dbo].[msgReceive]( @inMsg varchar(8000), @inTarget varchar(256)) AS BEGIN DECLARE @cnt INT; SELECT @cnt = count(*) FROM dbo.messages WHERE (AircraftReg = @inMsg)and(Treated = 0); IF (@cnt = 0) BEGIN INSERT INTO dbo.messages (AircraftReg, Treated, dt) VALUES(@inMsg, 0, GETDATE()); END; RETURN 0 END GO
      
      





msgReceiveストアドプロシージャは書き込みプロシージャです。 航空機のフライト番号を含むメッセージをAIRCOMから受信すると、データを新しい行の「メッセージ」テーブルに書き込みます。 この場合、「処理済み」列にゼロが書き込まれます。 dt列には、リクエストが受信された時間が表示されます。



2.4 GetScheduleストアドプロシージャ



 CREATE PROC [dbo].[GetSchedule] @outMsg VARCHAR(8000) = '' OUT, @outSource VARCHAR(256) = '' OUT AS BEGIN DECLARE @cnt INT; DECLARE @msID VARCHAR(7); SELECT @cnt = count(*) FROM dbo.messages WHERE Treated = 0; IF (@cnt > 0) BEGIN select top(1) @msID = ms.id, @outMsg = 'SUPER_INIT <ACFT>'+sc.tail+'</ACFT> <FLIGHT>ZZ'+sc.flight+'</FLIGHT> <FltNum>'+case ISNUMERIC (sc.flight) when 1 then REPLICATE('0', 5 - DATALENGTH(sc.flight)) + sc.flight else REPLICATE('0', 6 - DATALENGTH(sc.flight)) + LEFT(sc.flight, LEN(sc.flight)-1) end +'</FltNum> <OS>'+case ISNUMERIC(sc.flight)when 1 then ' 'else RIGHT(sc.flight, 1) end+'</OS> <DEP>'+sc.dep_icao+'</DEP> <DEST>'+sc.dest_icao+'</DEST> <STD>'+RIGHT('00'+CAST(DAY(sc.STD) as VARCHAR), 2)+'</STD> <ETD>'+REPLACE(left(convert(VARCHAR, sc.ETD, 108),5), ':', '')+'</ETD> <ETE>'+REPLACE(left(convert(VARCHAR, sc.ETA-sc.ETD, 108),5), ':', '')+'</ETE>' from dbo.schedule sc INNER JOIN dbo.messages ms ON sc.tail = ms.AircraftReg where (ms.Treated = 0) and ((getutcdate() between ETD and ETA) or (getutcdate() < ETD)) ORDER BY sc.ETD; UPDATE dbo.messages SET Treated = 1 WHERE id = @msID; END END GO
      
      





GetScheduleプロシージャは読み取りプロシージャで、次の形式でスケジュールテーブルからAIRCOMにデータを返します。



 SUPER_INIT –   (Header),   ; <ACFT>AB-CDE</ACFT> –   ; <FLIGHT>ZZ123</FLIGHT> –  ; <FltNum>00123</FltNum> –   (   5- ) <OS> </OS> –  (  ) <DEP>KDFW</DEP> – - / ; <DEST>EHAM</DEST> – - / ; <STD>21</STD> –      (dd); <ETD>0620</ETD> –    (UTC, hhnn); <ETE>0930</ETE> –    (UTC, flightime, hhnn);
      
      







返されるデータのタイプは、絶対に何でもかまいません。主なことは、それに応じてテンプレートを構成することです。



3.別のWindowsアプリケーションが作成され、タスクスケジューラを介してAIRCOMサーバー(Windowsサーバー)で実行されます。 このプログラムは、パラグラフ1のアカウントを使用して、プレゼンテーションを起動し、-12時間から+ 24時間までのすべての航空会社の現在のフライトスケジュールに関するデータを受け取ります。その後、利用可能なすべてを削除した後、この配列をシェッドテーブルに書き込みます文字列。



プログラムを機能させるには、標準のマイクロクライアントOracleをシステムにインストールし、スケジュールシステムのDBに接続するための設定でtnsnames.oraファイルにエントリを作成する必要があります。



実装された初期化メカニズムの動作原理



-パイロットはINIT要求をAIRCOMに送信します。



-AIRCOMは、ダウンリンクテンプレートを使用してSunからINIT要求を受信したため、これが初期化要求であることを理解しています。

このテンプレートに対してアクティブでデフォルトで選択されている「INITモデル」モデルに基づいて、AIRCOMは受信したメッセージから航空機のサイド番号のみを取得し、ユーザー「INIT DB」(特殊アカウント)に送信します。 このユーザーのタイプは「データベース」です。



-ユーザー "INIT DB"はデータベース "INIT"にアクセスし、ストアドプロシージャを開始して "msgReceive"を書き込みます。一方、データベース "INIT"では、テーブル "messages"に新しい列が追加されます。 。



-保存された読み取り手順は自動的に開始されます-600秒ごと(起動期間はAircomSrv.iniファイルで指定され、変更可能)、「メッセージ」テーブルに「処理済み」列の値「0」の行がある場合、次の形式のAIRCOMメッセージ:



 SUPER_INIT <ACFT>AB-CDE</ACFT> <FLIGHT>ZZ122</FLIGHT> <FltNum>00223</FltNum> <OS> </OS> <DEP>UUDD</DEP> <DEST>EHAM</DEST> <STD>03</STD> <ETD>1240</ETD> <ETE>0340</ETE>
      
      





また、「処理済み」列の「メッセージ」テーブルの「INIT」データベースでは、値をゼロ(0)から1(1)に変更します。



-AIRCOMは、AUTO-INITメッセージを受信すると、すべてのデータをデータベースに書き込み、特定のテンプレート(「特別なアカウント」セクションのアップリンクテンプレート)と特定のモデルを使用して、デフォルトで航空機にフライトデータを送信します。



All Articles