Was ist eure Meinung dazu? 2
Das Ergebnis ist nur für Teilnehmer sichtbar.
Mein eigener F-16-Cockpit-Server-Client für Falcon BMS – Teil 1/3
Achtung, viel Text – aber für Cockpitbauer sicherlich ein interessantes Thema!
Eine zentrale Verwaltungs-, Anzeige- und Netzwerkplattform für mein vollständiges F-16-Cockpit
Wer mich schon länger kennt, weiß, dass ich bereits einiges für Falcon BMS entwickelt habe. Dabei sind durchaus interessante Programme entstanden.
Rückblickend waren viele davon jedoch fehleranfällig, nur halb durchdacht oder nie wirklich konsequent zu Ende gebaut.
Oft habe ich einfach mit dem Programmieren begonnen, ohne vorher die vollständige Architektur festzulegen.
Irgendwann hatte ich mich so tief in meinem eigenen Code verlaufen, dass selbst für mich kaum noch nachvollziehbar war, welcher Teil eigentlich wofür verantwortlich war.
Neue Funktionen verursachten an anderer Stelle Probleme, Datenwege waren nicht sauber getrennt und der Code wurde immer schwieriger zu pflegen.
Bei diesem Projekt bin ich bewusst einen anderen Weg gegangen:
ZitatErst planen, gründlich durchdenken und anschließend gezielt umsetzen.
Falcon-Telemetrie, Instrumentendarstellung, Funk und IVC, Netzwerkübertragung, Testbetrieb, Produktivbetrieb und die spätere Hardwareausgabe besitzen jeweils einen eigenen, klar definierten Bereich.
Auch Verbindungsabbrüche, Missionswechsel, Falcon-Neustarts, unterschiedliche Aktualisierungswege und langsame Netzwerkempfänger wurden bereits bei der Architektur berücksichtigt.
Das Ergebnis ist für mich persönlich hundert Prozent besser als alles, was ich bisher für Falcon BMS gebaut habe.
Warum ich einen eigenen Server/Client entwicklet habe?
Für Cockpitanzeigen gibt es bereits Lösungen wie Helios.
Helios bietet viele Möglichkeiten, ist für meinen speziellen Anwendungsfall jedoch zu leistungshungrig und beim Aufbau der Profile und Schnittstellen zu komplex.
Mein Cockpit ist ausschließlich auf die F-16 ausgelegt. Ich benötige daher keine Universalplattform für zahlreiche Simulatoren und Flugzeugtypen.
Auch Falcon BMS bringt verschiedene Tools und Exportmöglichkeiten für Instrumente, Displays und Shared-Memory-Daten mit.
Diese lösen jedoch meistens nur einzelne Teilaufgaben: Ein Tool stellt Instrumente dar, ein anderes kümmert sich um Displays und ein weiteres wird für Diagnose oder Datenexport benötigt.
Dadurch müssen mehrere unabhängige Programme gleichzeitig gestartet, konfiguriert und überwacht werden.
Genau dieses Problem löse ich mit meinem eigenen Server/Client.
Alles aus einer Hand
Der eigentliche Kracher ist für mich, dass ich für die komplette Verwaltung meines Cockpits nur noch eine zentrale Anwendung benötige.
Instrumente, Displays, Warnleuchten, Funkgeräte, IVC-Status, Test- und Produktivbetrieb sowie die Netzwerkverteilung werden in einem gemeinsamen System zusammengeführt.
Der zentrale Datenweg lautet:
Der BMS Live Monitor liest die benötigten Daten einmal zentral ein, bereitet sie auf und verteilt sie anschließend an die verschiedenen Anzeigen und Netzwerkempfänger.
Dadurch muss nicht jedes Instrument und nicht jeder angeschlossene Rechner selbst auf das Falcon Shared Memory zugreifen.
Es laufen keine verschiedenen Cockpitprogramme mehr nebeneinander, die dieselben Daten unabhängig voneinander einlesen.
Falcon BMS und der IVC-Sprachclient bleiben natürlich eigenständige Programme.
Für Anzeige, Aufbereitung, Diagnose und Verteilung meiner Cockpitdaten benötige ich jedoch nur noch den BMS Live Monitor.
In einer Anwendung kann ich kontrollieren:
- ob Falcon BMS läuft und ein aktiver 3D-Flug erkannt wurde
- ob Falcon pausiert oder eingefroren ist
- ob IVC läuft und mit dem Server verbunden ist
- welche Funkfrequenzen aktiv sind
- ob Instrumente aktuelle Daten erhalten
- ob der LAN-Server läuft und wie viele Clients verbunden sind
- welche Datenmodule übertragen werden
- wie viele Datenbilder und Bytes gesendet wurden
- wann die letzte Übertragung stattgefunden hat
Direkter Falcon-BMS-Datenweg
Der BMS Live Monitor wurde ausdrücklich für Falcon BMS 4.38 und die F-16 entwickelt.
Die Telemetrie wird direkt aus den Windows-Shared-Memory-Bereichen von Falcon BMS gelesen.
Der zentrale Scanner arbeitet mit rund 100 Hz und kommt ohne normalen WinForms-Timer aus.
Kontinuierliche grafische Anzeigen laufen mit bis zu 120 FPS. Zahlenwerte besitzen einen getrennten Aktualisierungsweg.
Lampen, DED, PFL, RWR und andere Zustände werden ereignisgesteuert aktualisiert. Verändert sich beispielsweise nur eine Kontrollleuchte, muss nicht die gesamte Oberfläche neu aufgebaut werden.
Die Software prüft außerdem, ob tatsächlich ein Falcon-Prozess läuft. Ein veralteter Shared-Memory-Bereich wird nicht fälschlicherweise als aktive Verbindung behandelt.
Wird Falcon beendet oder neu gestartet, gibt der Client die zugehörigen Verbindungen einschließlich der RTT-Textur frei und verbindet sich anschließend frisch mit dem neuen Prozess.
Alte Instrumenten- oder MFD-Daten werden nicht unbemerkt weiterverwendet.
F-16-Instrumente und Anzeigen
Der Client deckt alle für mein F-16-Cockpit relevanten Instrumente, Daten und Kontrollanzeigen ab.
Dazu gehören unter anderem:
- das große F-16-Instrumentenbrett
- ADI, HSI, Höhenmesser, Fahrtmesser, Variometer und AOA
- Triebwerks- und Kraftstoffinstrumente
- Fuel Flow, Fuel Total, RPM, FTIT und Nozzle Position
- Öl- und Hydraulikdruck, EPU-Kraftstoff und Kabinendruck
- Kompass und Speedbrake
- das rechte MFD über den RTT-Textur-Export
- DED und PFL mit jeweils fünf vollständigen Zeilen
- positionsgenau invertierte DED- und PFL-Zeichen
- RWR-Rundanzeige mit bis zu 40 Kontakten
- Peilungen, Bedrohungsstufen, Missile Activity und Missile Launch
- Threat Warning Prime Panel und ALR-56M-Selbsttest
- AOA-Indexer, AR/NWS-Indexer und Caution Panel
- 93 grafische Cockpit-Statusfelder
- Fahrwerksstatus und einzelne Fahrwerksverriegelungen
- CMDS/EWS mit Chaff, Flare, Betriebsarten und Statusanzeigen
- fünf ECM-Programme und ECM-Betriebszustand
- Power-, Blink-, Misc- und Betty-Bitfelder
- Diagnosewerte wie Leserate, Lesezeit und UI-Latenz
Geometrie, Beschriftung, Skalierung, Zustände und Datenquellen sind ausdrücklich auf die F-16 zugeschnitten.
Herauslösbares Instrumentenfenster
Das große Instrumentenbrett kann aus dem Hauptfenster herausgelöst, frei verschoben, skaliert und auf einem beliebigen Cockpit-Monitor platziert werden.
Es bleibt auch dann aktiv, wenn ich im Hauptprogramm die Registerkarte wechsle.
Mit F11 lässt es sich auf dem aktuellen Bildschirm rahmenlos im Vollbild darstellen. Mit Esc geht es zurück in den Fenstermodus.
Das herausgelöste Fenster benötigt keine zweite Verbindung zu Falcon BMS, sondern wird weiterhin von derselben zentralen Datenquelle versorgt.
Zusätzlich kann der LAN-Display-Client auf weiteren Bildschirmen oder Rechnern ausgeführt werden.