From 629c579b2601f00e588a1fd57696b73268aedc64 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sun, 12 Jul 2020 19:27:04 +0100 Subject: [PATCH] Optimize FMGC loop more --- Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 6 +- Nasal/FMGC/FMGC.nas | 196 +++++++++---------- Systems/fmgc-drivers.xml | 45 +++++ 3 files changed, 139 insertions(+), 108 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index 50e790c9..6fb5c914 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -74,7 +74,7 @@ var elevator_ind_right = props.globals.getNode("/ECAM/Lower/elevator-ind-right", var elevator_trim_deg = props.globals.getNode("/ECAM/Lower/elevator-trim-deg", 1); var final_deg = props.globals.getNode("/fdm/jsbsim/hydraulics/rudder/final-deg", 1); var temperature_degc = props.globals.getNode("/environment/temperature-degc", 1); -var gw = props.globals.getNode("/FMGC/internal/gw", 1); +var gw = props.globals.getNode("/fdm/jsbsim/inertia/weight-lbs", 1); var tank3_content_lbs = props.globals.getNode("/fdm/jsbsim/propulsion/tank[2]/contents-lbs", 1); var apu_master = props.globals.getNode("/controls/apu/master", 1); var ir2_knob = props.globals.getNode("/controls/adirs/ir[1]/knob", 1); @@ -567,10 +567,10 @@ var canvas_lowerECAM_base = { me["UTCh"].setText(sprintf("%02d", hour.getValue())); me["UTCm"].setText(sprintf("%02d", minute.getValue())); if (acconfig_weight_kgs.getValue() == 1) { - me["GW"].setText(sprintf("%s", math.round(gw.getValue() * LBS2KGS))); + me["GW"].setText(sprintf("%s", math.round(math.round(gw.getValue() * LBS2KGS, 100)))); me["GW-weight-unit"].setText("KG"); } else { - me["GW"].setText(sprintf("%s", math.round(gw.getValue()))); + me["GW"].setText(sprintf("%s", math.round(gw.getValue(), 100))); me["GW-weight-unit"].setText("LBS"); } }, diff --git a/Nasal/FMGC/FMGC.nas b/Nasal/FMGC/FMGC.nas index c68809e0..08a0a4b4 100644 --- a/Nasal/FMGC/FMGC.nas +++ b/Nasal/FMGC/FMGC.nas @@ -117,7 +117,6 @@ var FMGCinit = func { setprop("/FMGC/internal/mng-spd-cmd", 157); setprop("/FMGC/internal/mng-kts-mach", 0); setprop("/FMGC/internal/mach-switchover", 0); - setprop("/it-autoflight/settings/accel-agl-ft", 1500); #eventually set to 1500 above runway setprop("/FMGC/internal/loc-source", "NAV0"); setprop("/FMGC/internal/optalt", 0); setprop("/FMGC/internal/landing-time", -99); @@ -127,8 +126,7 @@ var FMGCinit = func { setprop("/FMGC/internal/block-fuel-time", -99); setprop("/FMGC/internal/fuel-pred-time", -99); masterFMGC.start(); - various.start(); - various2.start(); + radios.start(); } var FMGCInternal = { @@ -419,6 +417,93 @@ var updateFuel = func { # Flight Phase and Various # ############################ +var nav0 = func { + var freqnav0uf = getprop("/instrumentation/nav[0]/frequencies/selected-mhz"); + var freqnav0 = sprintf("%.2f", freqnav0uf); + var namenav0 = getprop("/instrumentation/nav[0]/nav-id") or ""; + if (freqnav0 >= 108.10 and freqnav0 <= 111.95) { + if (namenav0 != "") { + setprop("/FMGC/internal/ils1-mcdu", namenav0 ~ "/" ~ freqnav0); + } else { + setprop("/FMGC/internal/ils1-mcdu", freqnav0); + } + } +} + +var nav1 = func { + var freqnav1uf = getprop("/instrumentation/nav[1]/frequencies/selected-mhz"); + var freqnav1 = sprintf("%.2f", freqnav1uf); + var namenav1 = getprop("/instrumentation/nav[1]/nav-id") or ""; + if (freqnav1 >= 108.10 and freqnav1 <= 111.95) { + if (namenav1 != "") { + setprop("/FMGC/internal/ils2-mcdu", freqnav1 ~ "/" ~ namenav1); + } else { + setprop("/FMGC/internal/ils2-mcdu", freqnav1); + } + } +} + +var nav2 = func { + var freqnav2uf = getprop("/instrumentation/nav[2]/frequencies/selected-mhz"); + var freqnav2 = sprintf("%.2f", freqnav2uf); + var namenav2 = getprop("/instrumentation/nav[2]/nav-id") or ""; + if (freqnav2 >= 108.00 and freqnav2 <= 117.95) { + if (namenav2 != "") { + setprop("/FMGC/internal/vor1-mcdu", namenav2 ~ "/" ~ freqnav2); + } else { + setprop("/FMGC/internal/vor1-mcdu", freqnav2); + } + } +} + +var nav3 = func { + var freqnav3uf = getprop("/instrumentation/nav[3]/frequencies/selected-mhz"); + var freqnav3 = sprintf("%.2f", freqnav3uf); + var namenav3 = getprop("/instrumentation/nav[3]/nav-id") or ""; + if (freqnav3 >= 108.00 and freqnav3 <= 117.95) { + if (namenav3 != "") { + setprop("/FMGC/internal/vor2-mcdu", freqnav3 ~ "/" ~ namenav3); + } else { + setprop("/FMGC/internal/vor2-mcdu", freqnav3); + } + } +} + +var adf0 = func { + var freqadf0uf = getprop("/instrumentation/adf[0]/frequencies/selected-khz"); + var freqadf0 = sprintf("%.2f", freqadf0uf); + var nameadf0 = getprop("/instrumentation/adf[0]/ident") or ""; + if (freqadf0 >= 190 and freqadf0 <= 1750) { + if (nameadf0 != "") { + setprop("/FMGC/internal/adf1-mcdu", nameadf0 ~ "/" ~ freqadf0); + } else { + setprop("/FMGC/internal/adf1-mcdu", freqadf0); + } + } +} + +var adf1 = func { + var freqadf1uf = getprop("/instrumentation/adf[1]/frequencies/selected-khz"); + var freqadf1 = sprintf("%.2f", freqadf1uf); + var nameadf1 = getprop("/instrumentation/adf[1]/ident") or ""; + if (freqadf1 >= 190 and freqadf1 <= 1750) { + if (nameadf1 != "") { + setprop("/FMGC/internal/adf2-mcdu", freqadf1 ~ "/" ~ nameadf1); + } else { + setprop("/FMGC/internal/adf2-mcdu", freqadf1); + } + } +} + +var radios = maketimer(1, func() { + nav0(); + nav1(); + nav2(); + nav3(); + adf0(); + adf1(); +}); + var masterFMGC = maketimer(0.2, func { n1_left = getprop("/engines/engine[0]/n1-actual"); n1_right = getprop("/engines/engine[1]/n1-actual"); @@ -521,10 +606,10 @@ var masterFMGC = maketimer(0.2, func { ############################ flap = getprop("/controls/flight/flaps-pos"); weight_lbs = getprop("/fdm/jsbsim/inertia/weight-lbs") / 1000; - tow = getprop("/FMGC/internal/tow"); - lw = getprop("/FMGC/internal/lw"); + tow = getprop("/FMGC/internal/tow") or 0; + lw = getprop("/FMGC/internal/lw") or 0; altitude = getprop("/instrumentation/altimeter/indicated-altitude-ft"); - dest_wind = getprop("/FMGC/internal/dest-wind"); + dest_wind = getprop("/FMGC/internal/dest-wind") or 0; # current speeds clean = 2 * weight_lbs * 0.45359237 + 85; @@ -798,105 +883,6 @@ var reset_FMGC = func { setprop("systems/pressurization/cabinpsi", "0"); } -var various = maketimer(1, func { - if (getprop("/engines/engine[0]/state") == 3 and getprop("/engines/engine[1]/state") != 3) { - setprop("/it-autoflight/settings/accel-agl-ft", getprop("/FMGC/internal/eng-out-reduc")); - } else if (getprop("/engines/engine[0]/state") != 3 and getprop("/engines/engine[1]/state") == 3) { - setprop("/it-autoflight/settings/accel-agl-ft", getprop("/FMGC/internal/eng-out-reduc")); - } else { - setprop("/it-autoflight/settings/accel-agl-ft", getprop("/FMGC/internal/accel-agl-ft")); - } - - setprop("/FMGC/internal/gw", math.round(getprop("/fdm/jsbsim/inertia/weight-lbs"), 100)); -}); - -var various2 = maketimer(0.5, func { - nav0(); - nav1(); - nav2(); - nav3(); - adf0(); - adf1(); -}); - -var nav0 = func { - var freqnav0uf = getprop("/instrumentation/nav[0]/frequencies/selected-mhz"); - var freqnav0 = sprintf("%.2f", freqnav0uf); - var namenav0 = getprop("/instrumentation/nav[0]/nav-id"); - if (freqnav0 >= 108.10 and freqnav0 <= 111.95) { - if (namenav0 != "") { - setprop("/FMGC/internal/ils1-mcdu", namenav0 ~ "/" ~ freqnav0); - } else { - setprop("/FMGC/internal/ils1-mcdu", freqnav0); - } - } -} - -var nav1 = func { - var freqnav1uf = getprop("/instrumentation/nav[1]/frequencies/selected-mhz"); - var freqnav1 = sprintf("%.2f", freqnav1uf); - var namenav1 = getprop("/instrumentation/nav[1]/nav-id"); - if (freqnav1 >= 108.10 and freqnav1 <= 111.95) { - if (namenav1 != "") { - setprop("/FMGC/internal/ils2-mcdu", freqnav1 ~ "/" ~ namenav1); - } else { - setprop("/FMGC/internal/ils2-mcdu", freqnav1); - } - } -} - -var nav2 = func { - var freqnav2uf = getprop("/instrumentation/nav[2]/frequencies/selected-mhz"); - var freqnav2 = sprintf("%.2f", freqnav2uf); - var namenav2 = getprop("/instrumentation/nav[2]/nav-id"); - if (freqnav2 >= 108.00 and freqnav2 <= 117.95) { - if (namenav2 != "") { - setprop("/FMGC/internal/vor1-mcdu", namenav2 ~ "/" ~ freqnav2); - } else { - setprop("/FMGC/internal/vor1-mcdu", freqnav2); - } - } -} - -var nav3 = func { - var freqnav3uf = getprop("/instrumentation/nav[3]/frequencies/selected-mhz"); - var freqnav3 = sprintf("%.2f", freqnav3uf); - var namenav3 = getprop("/instrumentation/nav[3]/nav-id"); - if (freqnav3 >= 108.00 and freqnav3 <= 117.95) { - if (namenav3 != "") { - setprop("/FMGC/internal/vor2-mcdu", freqnav3 ~ "/" ~ namenav3); - } else { - setprop("/FMGC/internal/vor2-mcdu", freqnav3); - } - } -} - -var adf0 = func { - var freqadf0uf = getprop("/instrumentation/adf[0]/frequencies/selected-khz"); - var freqadf0 = sprintf("%.2f", freqadf0uf); - var nameadf0 = getprop("/instrumentation/adf[0]/ident"); - if (freqadf0 >= 190 and freqadf0 <= 1750) { - if (nameadf0 != "") { - setprop("/FMGC/internal/adf1-mcdu", nameadf0 ~ "/" ~ freqadf0); - } else { - setprop("/FMGC/internal/adf1-mcdu", freqadf0); - } - } -} - -var adf1 = func { - var freqadf1uf = getprop("/instrumentation/adf[1]/frequencies/selected-khz"); - var freqadf1 = sprintf("%.2f", freqadf1uf); - var nameadf1 = getprop("/instrumentation/adf[1]/ident"); - if (freqadf1 >= 190 and freqadf1 <= 1750) { - if (nameadf1 != "") { - setprop("/FMGC/internal/adf2-mcdu", freqadf1 ~ "/" ~ nameadf1); - } else { - setprop("/FMGC/internal/adf2-mcdu", freqadf1); - } - } -} - ################# # Managed Speed # ################# diff --git a/Systems/fmgc-drivers.xml b/Systems/fmgc-drivers.xml index e8836c46..f36c3a0e 100644 --- a/Systems/fmgc-drivers.xml +++ b/Systems/fmgc-drivers.xml @@ -789,5 +789,50 @@ 15 10 + + + Accel Altitude + gain + 1.0 + + + + + + /engines/engine[0]/state + 3 + + + + /engines/engine[1]/state + 3 + + + + + + + /engines/engine[0]/state + 3 + + + + /engines/engine[1]/state + 3 + + + + + + /FMGC/internal/eng-out-reduc + + + + + /FMGC/internal/accel-agl-ft + + + /it-autoflight/settings/accel-agl-ft +