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 |
Navigation Database
| 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