Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(a380x): Fix green dot speed for heavy weights and high altitudes; Fix FMS speed target for GD > CLB speed limit #9522

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
1 change: 1 addition & 0 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
1. [A380X/PFD] Add T/D Reached PFD message - @BravoMike99 (bruno_pt99)
1. [A380X/CAMERA] Showcase & pilot view camera fixes @LunakisDev (LunakisLeaks)
1. [A380X/LIGHTS] Added cockpit ambient bounce lights - @ImenesFBW (Imenes)
1. [A380X/FWS] Fix green dot speed for high weights and altitudes, fix FMS speed target for GD > climb speed limit - @flogross89 (floridude)
1. [A380X/PERF] Changed managed speeds to more realistic numbers - @slightlyclueles (abnormaltoast)
1. [A380X/MFD] Add ATCCOM connect page - @heclak (heclak)
1. [A380X/PFD] Fix CP VV button turning on VV on both PFDs - @heclak (Heclak)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -323,14 +323,15 @@ export class FmcAircraftInterface {

const taxiFuel = this.fmgc.data.taxiFuel.get() ?? 0;
const tow = (this.fmc.fmgc.getGrossWeightKg() ?? maxGw) - (this.fmgc.isAnEngineOn() ? 0 : taxiFuel);
const flapConf = this.fmgc.data.takeoffFlapsSetting.get();

return (
(this.flightPlanService.active.performanceData.v1 ?? Infinity) < Math.trunc(A380SpeedsUtils.getVmcg(zp)) ||
(this.flightPlanService.active.performanceData.vr ?? Infinity) < Math.trunc(1.05 * A380SpeedsUtils.getVmca(zp)) ||
(this.flightPlanService.active.performanceData.v2 ?? Infinity) < Math.trunc(1.1 * A380SpeedsUtils.getVmca(zp)) ||
(Number.isFinite(tow) &&
(this.flightPlanService.active.performanceData.v2 ?? Infinity) <
Math.trunc(1.13 * A380SpeedsUtils.getVs1g(tow / 1000, this.fmgc.data.takeoffFlapsSetting.get(), true)))
Math.trunc(1.13 * A380SpeedsUtils.getVs1g(tow, flapConf > 1 ? flapConf + 1 : flapConf, true)))
);
}

Expand Down Expand Up @@ -867,7 +868,9 @@ export class FmcAircraftInterface {
if (!Vtap) {
// Overspeed protection
const vMax = this.speedVmax.get();
Vtap = Math.min(this.managedSpeedTarget ?? Vmo - 5, vMax - 5);
const greenDot = this.fmgc.data.greenDotSpeed.get();
const vMin = SimVar.GetSimVarValue('L:A32NX_FLAPS_HANDLE_INDEX', 'Number') === 0 && greenDot ? greenDot : 0;
Vtap = Math.min(Math.max(this.managedSpeedTarget ?? Vmo - 5, vMin), vMax - 5);
}
SimVar.SetSimVarValue('L:A32NX_SPEEDS_MANAGED_PFD', 'knots', vPfd);
SimVar.SetSimVarValue('L:A32NX_SPEEDS_MANAGED_ATHR', 'knots', Vtap);
Expand Down Expand Up @@ -1158,7 +1161,7 @@ export class FmcAircraftInterface {

// Calculate approach speeds. Independent from ADR data
const approachSpeeds = new A380OperatingSpeeds(
ldgWeight / 1000,
ldgWeight,
0,
this.fmgc.data.approachFlapConfig.get(),
FmgcFlightPhase.Approach,
Expand Down Expand Up @@ -1187,7 +1190,7 @@ export class FmcAircraftInterface {
flaps = 5; // CONF 1
}
const speeds = new A380OperatingSpeeds(
grossWeight / 1000,
grossWeight,
cas,
flaps,
this.flightPhase.get(),
Expand Down
Loading