Zum Inhalt

FMGC — Flight Management and Guidance Computer

Übersicht

Das FMGC ist das zentrale Modul des AirSimTech A320 Simulators. Es berechnet Flugpläne mit 4D-Trajektorieprofilen, rendert MCDU-Seiten für Captain und First Officer, verarbeitet MCDU-Eingaben, berechnet Fluggeschwindigkeiten und liefert VNAV-Guidance.

Die Implementierung nutzt das Akka.NET Actor Model für Multithreading, sodass MCDU-Seiten unabhängig von laufenden Trajektorie-Berechnungen sofort reagieren (< 100ms).

Architektur

classDiagram
    class FmgcSupervisor {
        +New(formMain, config)
        Erstellt und überwacht alle Actors
    }
    class KernelActor {
        +New()
        Zentraler Zustandsmanager
        Routet Nachrichten zwischen Actors
    }
    class McduActor {
        +New(side)
        MCDU-Seiten rendern
        LSK-Eingaben verarbeiten
    }
    class TmpyActor {
        +New()
        Temporary Flight Plan Verwaltung
    }
    class FlightPlanActor {
        +New(planName)
        Flugplan-Zustand verwalten
    }
    class TrajectoryActor {
        +New()
        Climb/Cruise/Descent Profile
        4D-Trajektorie berechnen
    }
    class GuidanceActor {
        +New()
        LNAV/VNAV Guidance
        Speed Commands
    }
    class INetActor {
        +New()
        INET-Register senden/empfangen
        UDP-Kommunikation
    }
    class NavDbActor {
        +New(dbPath, userDataPath)
        Navigation Database Abfragen
    }
    class AcarsActor {
        +New(acarsDbPath, metarPath, inetActor)
        ACARS/Wetter Daten
    }
    class SimBriefActor {
        +New()
        SimBrief OFP Import
    }
    class UserdataActor {
        +New(userdataPath)
        Company Routes, Situationen
    }

    FmgcSupervisor --> KernelActor : erstellt
    FmgcSupervisor --> McduActor : erstellt (CPT + FO)
    FmgcSupervisor --> FlightPlanActor : erstellt (Primary + Secondary)
    FmgcSupervisor --> TrajectoryActor : erstellt
    FmgcSupervisor --> GuidanceActor : erstellt
    FmgcSupervisor --> INetActor : erstellt
    FmgcSupervisor --> NavDbActor : erstellt
    FmgcSupervisor --> AcarsActor : erstellt
    FmgcSupervisor --> SimBriefActor : erstellt
    FmgcSupervisor --> UserdataActor : erstellt
    KernelActor --> McduActor : State Updates
    KernelActor --> TrajectoryActor : Trajectory Request
    KernelActor --> FlightPlanActor : FPLN Commands
    McduActor --> TmpyActor : TMPY Edits
    McduActor --> INetActor : Screen Render
    TrajectoryActor --> GuidanceActor : Trajectory Result
    GuidanceActor --> INetActor : Speed/Alt Commands
    McduActor --> NavDbActor : DB Queries

Module und Klassen

Kernel

Klasse Datei Beschreibung
FmgcSupervisor Kernel/FmgcSupervisor.vb Top-Level Supervisor, erstellt und überwacht alle Actors
KernelActor Kernel/KernelActor.vb Zentraler Zustandsmanager, routet Nachrichten
KernelMessages Kernel/KernelMessages.vb Message-Klassen für Kernel-Kommunikation

MCDU

Klasse Datei Beschreibung
McduActor Mcdu/McduActor.vb Haupt-Actor für MCDU-Rendering und Eingabeverarbeitung
TmpyActor Mcdu/TmpyActor.vb Verwaltet temporären Flugplan (TMPY)
McduContext Mcdu/McduContext.vb Zustandsdaten für MCDU-Seiten
McduCommand Mcdu/McduCommand.vb Command-Klassen für MCDU-Aktionen
McduCommandParser Mcdu/McduCommandParser.vb Parst MCDU-Befehle und rendert in Buffer
McduRenderHelpers Mcdu/McduRenderHelpers.vb Hilfsfunktionen für MCDU-Rendering
WaypointInputParser Mcdu/WaypointInputParser.vb Parst Wegpunkt-Eingaben
IPage Mcdu/IPage.vb Interface für alle MCDU-Seiten

MCDU Pages

Klasse Datei Beschreibung
InitAPage Mcdu/Pages/InitAPage.vb INIT A Seite (Route, Flight Number)
InitBPage Mcdu/Pages/InitBPage.vb INIT B Seite (Fuel, ZFW/CG)
FplnPage Mcdu/Pages/FplnPage.vb Flight Plan Anzeige
LatRevPage Mcdu/Pages/LatRevPage.vb Lateral Revision
VertRevPage Mcdu/Pages/VertRevPage.vb Vertical Revision
DirPage Mcdu/Pages/DirPage.vb Direct To
HoldPage Mcdu/Pages/HoldPage.vb Holding Pattern
ProgPage Mcdu/Pages/ProgPage.vb Progress Page
Perf1-6Page Mcdu/Pages/Perf*.vb Performance Pages (Takeoff bis Go-Around)
RadNavPage Mcdu/Pages/RadNavPage.vb Radio Navigation
SidPage / SidTransPage Mcdu/Pages/Sid*.vb SID Selection
StarPage / StarTransPage Mcdu/Pages/Star*.vb STAR Selection
ViaPage Mcdu/Pages/ViaPage.vb Approach/VIA Selection
AirwaysPage Mcdu/Pages/AirwaysPage.vb Airways Entry
WindPages Mcdu/Pages/*WindPage.vb Wind Entry (Climb/Cruise/Descend/History)
SimPages Mcdu/Pages/SimPages.vb Simulator-Funktionen (Save/Load)
StatusPage Mcdu/Pages/StatusPage.vb FMGC Status

Flight Plan

Klasse Datei Beschreibung
FlightPlanActor FlightPlan/FlightPlanActor.vb Verwaltet den aktiven Flugplan
FlightPlan (Model) FlightPlan/FlightPlanModels.vb Immutable Flugplan-Datenstruktur
ComputedFlightPlan FlightPlan/ComputedFlightPlanModels.vb Berechneter Flugplan mit Trajektorie-Daten
FlightPlanMessages FlightPlan/FlightPlanMessages.vb Nachrichten für Flugplan-Operationen

Trajectory

Klasse Datei Beschreibung
TrajectoryActor Trajectory/TrajectoryActor.vb Berechnet Climb/Cruise/Descent Profile
SpeedCalculations Trajectory/SpeedCalculations.vb V-Speed Berechnungen (V1, VR, V2, etc.)
EngineCalculations Trajectory/EngineCalculations.vb Triebwerksleistung und Fuel Flow
GeoCalculations Trajectory/GeoCalculations.vb Geodätische Berechnungen
LegGeometry Trajectory/LegGeometry.vb Fly-by/Fly-over Geometrie
Perf1Engine Trajectory/Perf1Engine.vb Performance-Daten Interpolation
PerfDataStore Trajectory/PerfDataStore.vb Performance-Datenbank
EngineDataStore Trajectory/EngineDataStore.vb Triebwerksdaten

Guidance

Klasse Datei Beschreibung
GuidanceActor Guidance/GuidanceActor.vb LNAV/VNAV Guidance Berechnung
RadioNavModule Guidance/RadioNavModule.vb VOR/ILS/ADF Empfang
GuidanceModels Guidance/GuidanceModels.vb Guidance-Datenstrukturen
Klasse Datei Beschreibung
NavDbActor NavDb/NavDbActor.vb Actor für DB-Anfragen
AirportQueryHandler NavDb/AirportQueryHandler.vb Flughafen-Abfragen
NavaidQueryHandler NavDb/NavaidQueryHandler.vb Navaid/Waypoint-Abfragen
ProcedureQueryHandler NavDb/ProcedureQueryHandler.vb SID/STAR/Approach-Abfragen

INET / Kommunikation

Klasse Datei Beschreibung
INetActor Inet/INetActor.vb INET-Register Kommunikation
Arinc429ScreenBuffer Inet/Arinc429ScreenBuffer.vb MCDU Screen Buffer (ARINC 429 Format)
Arinc429UdpSender Inet/Arinc429UdpSender.vb UDP Sender für ARINC 429 Daten
Arinc429Constants Inet/Arinc429Constants.vb Konstanten und Zeichenmapping

Weitere Module

Klasse Datei Beschreibung
AcarsActor Acars/AcarsActor.vb ACARS Nachrichten und Wetterdaten
SimBriefActor SimBrief/SimBriefActor.vb SimBrief OFP Import
SimBriefXmlParser SimBrief/SimBriefXmlParser.vb XML Parser für SimBrief Daten
UserdataActor Userdata/UserdataActor.vb Company Routes und Situation Save/Load
IniConfiguration Common/IniConfiguration.vb INI-Konfigurationsdatei Parser
RecordingService Recording/RecordingService.vb Flight Recording
ReplayService Recording/ReplayService.vb Flight Replay

Sub-Dokumentation

Detaillierte Dokumentation aller Public Subs und Functions: FMGC Subs