Initialisieren von Flugdaten in AIRCOM Server

Ein bisschen Theorie


ACARS (Aircraft Communications Addressing and Reporting System) ist ein digitales Kommunikationssystem, das in der Luftfahrt verwendet wird, um kurze, relativ einfache Kommunikationen zwischen einem Flugzeug und Bodenstationen entweder über direkte Funkkommunikation oder Satellitensysteme zu übertragen.
AIRCOM - Server (Gateway) -Nachrichten zwischen verschiedenen Netzwerken. Der Hersteller ist SITA. Es verbindet die Bordausrüstung von ACARS über ARINC-Netzwerke mit dem Flugplanungssystem LIDO OC (Jeppesen Jet Planner oder andere), E-Mail, SITAtex, Telefonie, Datenaustausch und anderen erforderlichen Informationssystemen der Fluggesellschaft.

So funktioniert AIRCOM Server


Das Informationssystem SITA AIRCOM Server ist in MS SQL implementiert und dient dazu, Fluglinien Daten zu Route, Wind, Wetter und zum Austausch von Nachrichten „Crew - MCC - Crew“ zur Verfügung zu stellen. AIRCOM Server ist für die ACARC-Bordausrüstung konfiguriert und wird zusammen mit dieser betrieben. AIRCOM Server ist ein kritisches Fluginformationssystem.

Für den korrekten Betrieb von AIRCOM ist es erforderlich, dass die korrekten Daten für den anstehenden (oder aktuellen) Flug in der AIRCOM-Datenbank und im FMS-Speicher des Flugzeugs gespeichert sind:

- Flugnummer;
- Flugzeugseitennummer (Aircraft);
- Start- und Zielflugplätze;
- Abfahrtszeit usw.

Stimmen die Informationen im FMS-Speicher, in der AIRCOM-Datenbank und im Flugplanungssystem nicht überein, werden einige Anfragen der Piloten nicht bearbeitet und die Besatzung erhält beispielsweise keine aktualisierten Daten zu den Winden auf Flughöhe entlang der Flugstrecke.

Daten zum anstehenden (oder aktuellen) Flug zu AIRCOM und zum Speicher des FMS-Flugzeugs müssen vom Informationssystem der Fluggesellschaft (nennen wir es „Flugplan“) empfangen werden, in dem der Flugplan erstellt und angepasst wird.

Dies kann auf zwei Arten erfolgen:

1. Manuelle Initialisierung durch die Besatzung:

Der Pilot gibt alle Daten für den bevorstehenden Flug manuell über die ACARS-Fernbedienung und den Flugarbeitsplan (OFP) ein. Gleichzeitig werden die Flugdaten an AIRCOM gesendet und in dessen Datenbank gespeichert.

Nachteile dieser Methode:

- Der Pilot kann bei der Eingabe von Daten einen Fehler machen.
- Nach dem Einschalten der Bordsysteme des Flugzeugs muss eine Weile gewartet werden (~ 15 Minuten). Erst dann müssen die Flugdaten eingegeben und die Initialisierung durchgeführt werden.

2. Automatisierte Initialisierung

Der Pilot sendet eine Initialisierungsnachricht an AIRCOM, ohne darauf zu achten, welche Daten im FMS-Speicher gespeichert sind (es kann sich um einen vorherigen Flug handeln oder gar nicht). Wichtig ist nur der Nachrichtentyp - INIT.
AIRCOM empfängt diese INIT und weiß, dass diese Anfrage von einem bestimmten Flugzeug kam (nach Bordnummer), sowie das Datum und die Uhrzeit der Anfrage.

Nachdem AIRCOM eine INIT-Anfrage vom Flugzeug erhalten hat, verwendet es die für diese Art von Nachrichten vorgesehene Downlink-Vorlage und das Modell (Model) und empfängt vom Fremdsystem die aktuell gültigen Flugplandaten für das Flugzeug (Flugnummer, Abflug- und Zielflugplatz, Datum und Abflugzeit), schreibt diese Daten in seine Datenbank und sendet diese Informationen per ACARS an das Flugzeug. Diese Daten werden im Speicher des Bordsystems gespeichert und für spätere Anfragen des Flugzeugs verwendet.

Die Aufgabe wurde gebildet - den Informationsaustausch zwischen dem Informationssystem mit dem Flugplan des Flugzeugs und AIRCOM umzusetzen.

IS AIRCOM verfügt über eine Standardfunktion: Verwenden Sie eine zusätzliche Datenbank eines Drittanbieters und führen Sie den Informationsaustausch mit zwei gespeicherten Prozeduren durch: eine zum Schreiben und eine zum Lesen. Die Parameter für die Verbindung mit dieser Datenbank werden in der AIRCOM IP-Einstellungsdatei - AircomSrv.ini angegeben. Außerdem muss ein zusätzlicher Dienst, AS Database Connector, auf dem AIRCOM-Server installiert und gestartet werden (wenn alles konfiguriert ist).

Der AS Database Connector unterstützt nur die Verbindung zu einer Datenbank vom Typ "MS SQL Server" (andere, einschließlich Oracle, werden in einigen zukünftigen Versionen angeblich unterstützt). Database Connector kann mit nur einer Datenbank verbunden werden und nur ein Paar gespeicherter Prozeduren (zum Lesen und Schreiben) zum Empfangen und Senden von Daten verwenden.

Implementierung


1. In der IS-Flugplandatenbank (Oracle) wurden eine Ansicht und ein Benutzer mit dem Recht zum Ausführen dieser Ansicht erstellt. Diese Ansicht gab eine Reihe von Daten zurück, die aus mehreren Tabellen der Schedule-Datenbank erfasst wurden. Diese enthielten:

  • id - ID des Fluges aus der Flugplandatenbank (eindeutig)
  • acft - Flugzeuge an Bord
  • Flug - Flugnummer
  • dep_icao - ICAO-Code des Abflugs
  • dest_icao - ICAO-Zielcode
  • STD - geplantes Abreisedatum und Uhrzeit
  • ETD - geplantes Abreisedatum und Uhrzeit (angepasst)
  • ETA - geplantes Datum und Uhrzeit der Ankunft

2. Auf dem AIRCOM IS-Server (MS SQL) wurde eine zusätzliche Datenbank erstellt, die 2 Tabellen und 2 gespeicherte Prozeduren sowie einen separaten Benutzer enthält, der berechtigt ist, diese Tabellen zu schreiben und zu lesen und gespeicherte Prozeduren zu starten - eine Standardimplementierung von AIRCOM IS.

2.1 Die Tabelle "Flugplan" - zum Speichern des aktuellen Flugplans aller AK-Flugzeuge (Flugdaten aus dem "Flugplan"):

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 Tabelle "Nachrichten" - zum Aufzeichnen von Daten auf von AIRCOM empfangenen INIT-Anfragen:

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

Anfragen kommen vom IS AIRCOM und enthalten nur die Seitenzahl des Flugzeugs.

2.3 msgReceive Stored Procedure - Wird ausgelöst, wenn eine INIT-Anforderung von der Sonne empfangen wird.

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

Die gespeicherte msgReceive-Prozedur ist eine Schreibprozedur. Beim Empfang einer Nachricht von AIRCOM, die die Flugnummer des Flugzeugs enthält, werden die Daten in einer neuen Zeile in die Tabelle "Nachrichten" geschrieben. In diesem Fall wird Null in die Spalte "Behandelt" geschrieben. In der Spalte dt wird der Zeitpunkt angezeigt, zu dem die Anforderung empfangen wurde.

2.4 GetSchedule Stored Procedure

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
'+sc.tail+'ZZ'+sc.flight+''+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 +''+case ISNUMERIC(sc.flight)when 1 then ' 'else RIGHT(sc.flight, 1) end+''+sc.dep_icao+''+sc.dest_icao+''+RIGHT('00'+CAST(DAY(sc.STD) as VARCHAR), 2)+''+REPLACE(left(convert(VARCHAR, sc.ETD, 108),5), ':', '')+''+REPLACE(left(convert(VARCHAR, sc.ETA-sc.ETD, 108),5), ':', '')+''
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

Die GetSchedule-Prozedur ist eine Leseprozedur und gibt Daten aus der Zeitplantabelle in der folgenden Form an AIRCOM zurück:

SUPER_INIT			– заголовок сообщения (Header), может быть любой;
AB-CDE		– бортовой номер ВС;
ZZ123		– номер рейса;
00123		– номер рейса (только цифры в 5-разрядном виде)
			– суфикс (буква или пробел)
KDFW			– ИКАО-код а/д вылета;
EHAM		– ИКАО-код а/д назначения;
21			– дата выполнения рейса по расписанию (dd);
0620			– Расчетное время вылета (UTC, hhnn);
0930			– Расчетное полетное вылета (UTC, flightime, hhnn);


Die Art der zurückgegebenen Daten kann absolut beliebig sein. Hauptsache ist, die Vorlage entsprechend zu konfigurieren.

3. Es wurde eine separate Windows-Anwendung erstellt, die über den Taskplaner auf dem AIRCOM-Server (Windows Server) ausgeführt wird. Dieses Programm startet unter Verwendung des Kontos aus Absatz 1 die Präsentation und empfängt Daten über den aktuellen Flugplan aller Fluggesellschaften für den Zeitraum von - 12 Stunden bis + 24 Stunden. Anschließend schreibt es dieses Array in die Zeitplantabelle, nachdem alle verfügbaren Daten daraus gelöscht wurden Streicher.

Damit das Programm funktioniert, muss der Standard-Micro-Client Oracle auf dem System installiert und in der Datei tnsnames.ora ein Eintrag mit Einstellungen für die Verbindung zur Datenbank des Schedule-Systems vorgenommen werden.

Das Funktionsprinzip des implementierten Initialisierungsmechanismus


- Der Pilot sendet eine INIT-Anfrage an AIRCOM.

- Nachdem AIRCOM eine INIT-Anfrage von Sun über eine Downlink-Vorlage erhalten hat, handelt es sich um eine Initialisierungsanfrage.
Basierend auf dem Modell „INIT Model“, das für diese Vorlage standardmäßig aktiviert und ausgewählt ist, nimmt AIRCOM nur die Seitennummer des Flugzeugs aus der empfangenen Nachricht und sendet sie an den Benutzer „INIT DB“ (Sonderkonten). Dieser Benutzer ist vom Typ "Datenbank".

- Der Benutzer "INIT DB" greift auf die Datenbank "INIT" zu und startet die gespeicherte Prozedur, um "msgReceive" zu schreiben, während in der Datenbank "INIT" eine neue Zeile in die Tabelle "messages" mit Null (0) in der Spalte "Treated" eingefügt wird. .

- Der gespeicherte Lesevorgang startet automatisch - alle 600 Sekunden (der Startzeitraum ist in der Datei AircomSrv.ini festgelegt und kann geändert werden) und wenn in der Tabelle „messages“ Zeilen mit dem Wert „0“ in der Spalte „Treated“ vorhanden sind, wird er auf zurückgesetzt AIRCOM Nachricht des Formulars:

SUPER_INIT
AB-CDEZZ12200223UUDDEHAM0312400340

Und in der Datenbank "INIT" in der Tabelle "messages" in der Spalte "Treated" ändert es den Wert von Null (0) auf Eins (1).

- AIRCOM, das die Nachricht AUTO-INIT erhalten hat, schreibt alle Daten in seine Datenbank und sendet mit einer bestimmten Vorlage (Uplink-Vorlage aus dem Abschnitt „Sonderkonten“) und einem bestimmten Modell standardmäßig Flugdaten an das Flugzeug.

Jetzt auch beliebt: