Airbus A320

Der A320 aus der A320-family bildet die Systeme des Flugzeugs sehr genau nach und bringt Autopilot, Autoschub und automatische Landung mit. Ein Skript muss ihn deshalb nicht steuern, sondern nur die richtigen Tasten drücken. Die Grundlagen dazu stehen unter Steuerung mit Python.

A320 in eigener Lackierung

Installation

Das Modell kommt als A320-family aus dem Standard-Hangar im FlightGear-Launcher und steht unter der GPL. Es gehört als Ordner nach $FG_BASIS/Aircraft. Ich fliege die Fassung A320neo-PW:

"$FG_BASIS/werkzeuge/starten.sh" --aircraft=A320neo-PW --airport=EDDE --runway=10 \
  --prop:/systems/start-up-on-start=true

Mit start-up-on-start steht er startklar auf der Bahn. Bei mir liefen beide Triebwerke gut eine Minute nach dem Start.

Tasten des Autopiloten

Alle Tasten der FCU liegen unter /it-autoflight/input/:

from fg_steuerung import Fg

fg = Fg()
fg.set("/it-autoflight/input/alt", 7000)    # Höhe
fg.set("/it-autoflight/input/kts", 250)     # Fahrt
fg.set("/it-autoflight/input/hdg", 80)      # Kurs, magnetisch
fg.set("/it-autoflight/input/ap1", "true")  # Autopilot 1
fg.set("/it-autoflight/input/vert", 4)      # 4 = OP CLB/DES

vert

Bedeutung

1

V/S, Sinkrate über /it-autoflight/input/vs

2

APPR: LOC und G/S scharf

4

OP CLB/DES

Was gerade aktiv ist, steht in /it-autoflight/output/lat und /it-autoflight/output/vert. lat 0 ist HDG, 2 ist LOC, vert 2 ist G/S.

ILS-Anflug

Frequenz und Kurs am Radio setzen, mit HDG auf die Anfluglinie fliegen und APPR drücken:

fg.set("/instrumentation/nav[0]/frequencies/selected-mhz", 111.90)
fg.set("/instrumentation/nav[0]/radials/selected-deg", 81)   # magnetischer Bahnkurs
fg.set("/it-autoflight/input/vert", 2)
fg.set("/it-autoflight/input/ap2", "true")                   # für die automatische Landung

Seitenwind: nicht parallel neben die Linie fliegen

Das Modell fängt den Landekurs nur unter diesen Bedingungen ein (checkLoc in Nasal/FMGC/FMGC-b.nas):

  • Signalgüte mindestens 0,99, das war bei mir etwa ab 14 nm

  • Ausschlag bis 0,25, oder bis 0,95, wenn der Kurs zur Linie hin zeigt

Mein erster Regler rechnete den Kurs nur aus der seitlichen Ablage. Bei 15 kt quer braucht es aber rund 4,5° Vorhalt, also blieb er 226 m neben der Linie und flog parallel. Der Landekurs fing nicht ein, und 4 nm vor der Bahn brach das Skript ab. Abhilfe ist ein langsamer I-Anteil, einmal pro Sekunde gerechnet:

vorhalt = clamp(vorhalt - ablage_m / 50 * 0.01, -15, 15)
kurs = bahnkurs + clamp(-ablage_m / 50 + vorhalt, -30, 30)

Danach fing er den Landekurs bei 14,9 nm ein und setzte 1,8 m neben der Mittellinie auf.

Master Caution nach dem Neustart

Stellt man die Triebwerke am Gate ab und lässt sie über den Panel-State des Modells neu an, leuchtet die Master Caution den ganzen nächsten Flug: AIR ENG 1 BLEED NOT CLSD. Das schnelle Anlassen setzt eine Sperre im Modell, die von selbst nicht mehr weggeht. Sie löst sich, wenn die Bleed-Schalter kurz aus sind, also genau das, was das ECAM verlangt:

import time

for schalter in ("bleed-1", "bleed-2"):
    fg.set(f"/controls/pneumatics/switches/{schalter}", 0)
time.sleep(3)
for schalter in ("bleed-1", "bleed-2"):
    fg.set(f"/controls/pneumatics/switches/{schalter}", 1)

Geprüft habe ich das am Boden, dort blieb die Caution bis zur Startbahn aus. Die aktuellen Meldungen stehen in /ECAM/msg/line1 bis line8, die Warnleuchte in /ECAM/warnings/master-caution-light.

Ergebnisse

Flug

Aufsetzen

Neben der Mittellinie

Erfurt → Leipzig, Nebel 600 m Sicht

−94 ft/min

0,3 m

Erfurt → Leipzig, Seitenwind 13 kt

−130 ft/min

1,8 m

Leipzig → Erfurt, Seitenwind 14 kt

−164 ft/min

2,7 m