This is a 2D instrumentation view of the same fly-by-wire architecture as the 3D cockpit sim: a rate-command roll law and a load-factor pitch law, each with envelope protection, driving a synthetic primary flight display and a roll phase-plane plot instead of a 3D airframe.
Roll rate-demand law:
p_cmd = P_max · δ_roll
dp/dt = (p_cmd − p) / τ_p (actuator + aero lag)
dφ/dt = p, |φ| ≤ 67° in Normal Law (p forced to 0 at the wall)
Pitch load-factor law (C*-type):
Nz_cmd = 1 + (Nz_max−1)·δ_pitch (or Nz_min side)
high-AoA protection clamps Nz_cmd so that α ≤ α_max
dNz/dt = (Nz_cmd − Nz) / τ_Nz (independent pitch-axis lag)
δe_cmd = Ke·(Nz_cmd − Nz), dδe/dt = (δe_cmd − δe) / τ_e
α = α₀ + (Nz − 1)·k_α (quasi-static lift-curve relation)
Yaw / turn coordination:
dβ/dt = ( −β + k_adv·p − k_r·δr ) / τ_β
dδr/dt = (Ke_r·δ_rudder − δr) / τ_r
- Primary flight display (top) — a synthetic artificial horizon: the sky/ground line banks with φ and slides with the pitch attitude implied by the current load factor, exactly like a real fly-by-wire jet's PFD.
- Roll phase-plane (bottom) — plots bank angle φ against roll rate p as the aircraft flies. In Normal Law the trace is trapped inside the ±67° protection walls: hit one, and p is forced to zero right there. In Direct Law the walls move out to the mechanical stop and the trace can swing much further before saturating.
- Normal Law (protected): bank clamped to ±67°, angle of attack clamped to αmax no matter how far aft you pull.
- Direct Law (protections off): stick maps straight to a commanded g/roll rate with no ceiling — pull far enough and α exceeds αmax into a genuine aerodynamic stall region.
Note versus the 3D cockpit build: here Nz relaxes toward its command with its own pitch-axis time constant τNz, independent of the elevator-actuator lag τe — a cleaner separation of "surface moves" from "aircraft responds" than tying both to the same time constant.