diff --git a/Aircraft/Generic/century3.nas b/Aircraft/Generic/century3.nas index ede1e0bd6..6088a75cb 100644 --- a/Aircraft/Generic/century3.nas +++ b/Aircraft/Generic/century3.nas @@ -86,7 +86,9 @@ var pitchControl = propAutopilotControls.getNode("pitch", 1); # values 0 (PITCH switch off) 1 (PITCH switch on) var headingNeedleDeflection = "/instrumentation/nav/heading-needle-deflection"; +var gsInRange = "/instrumentation/nav/gs-in-range"; var gsNeedleDeflection = "/instrumentation/nav/gs-needle-deflection-deg"; +var elapsedTimeSec = "/sim/time/elapsed-sec"; var indicatedPitchDeg = "/instrumentation/attitude-indicator/indicated-pitch-deg"; var staticPressure = "/systems/static/pressure-inhg"; var altitudePressure = "/autopilot/CENTURYIII/settings/target-alt-pressure"; @@ -96,7 +98,6 @@ var filteredHeadingNeedleDeflection = "/autopilot/internal/filtered-heading-need var pressureUnits = { "inHg" : 0, "hPa" : 1 }; var altPressure = 0.0; -var gsTimeCheck = 0.0; var valueTest = 0; var lastValue = 0; var newValue = 0; @@ -104,6 +105,8 @@ var minVoltageLimit = 8.0; var newMode = 2; var oldMode = 2; var deviation = 0; +var LocModeTimeSec = 0; +var AltTimeSec = 0; rollControl.setDoubleValue(0.0); hdgControl.setDoubleValue(0.0); altControl.setDoubleValue(0.0); @@ -507,6 +510,12 @@ var aprButton = func { ##print("aprButton"); # Disable button if too little power if (getprop(power) < minVoltageLimit) { return; } + ## + # Save the elapsed time when mode switch was set to LOC Norm. + # This is used to delay the gsArm at least 20 sec after the mode is set to LOC Norm. + # See comment by Figure 24, page 30 in "CENTURY II Autopilot Flight System POH". + ## + LocModeTimeSec = getprop(elapsedTimeSec); ## # The Mode Selector and DG Course Selector should be set before switching the HDG @@ -521,7 +530,6 @@ var aprButton = func { lockRollAxis.setBoolValue(1); lockRollArm.setIntValue(rollArmModes["APR"]); lockRollMode.setIntValue(rollModes["APR"]); - gsTimeCheck = -1; aprArmFromHdg(); } @@ -533,16 +541,10 @@ var aprArmFromHdg = func # else than APR-ARM. ## if (lockRollArm.getValue() != rollArmModes["APR"] - or !lockAltHold.getValue() - or getprop(gsNeedleDeflection) < 0.0) + or !lockAltHold.getValue()) { return; } - gsTimeCheck = gsTimeCheck + 1; - if (gsTimeCheck < 20) - { - settimer(aprArmFromHdg, 1.0); - } ## # Activate the apr-hold controller and check the needle deviation. @@ -564,6 +566,7 @@ var aprArmFromHdg = func elsif (abs(deviation) < 2.5) { lockPitchArm.setIntValue(pitchArmModes["GS"]); + gsArm(); } } @@ -577,21 +580,45 @@ var gsArm = func { { return; } - + ## + # Loop until the LOC Norm mode has been set for at least 20 seconds + # and the Alt switch has been on for at least 20 seconds. + # See page 30 in "CENTURY II Autopilot Flight System POH". + ## + if ( (getprop(elapsedTimeSec) - LocModeTimeSec) < 20 + or (getprop(elapsedTimeSec) - AltTimeSec) < 20 ) + { + settimer(gsArm, 2); + return; + } + ## + # Loop until gs is in range + ## + if (!getprop(gsInRange)) + { + settimer(gsArm, 2); + return; + } deviation = getprop(gsNeedleDeflection); ## - # If the deflection is more than 0.1 degrees wait 1 seconds and check again. + # Abort if above the glide slope as you have passed the gs intercept + if (deviation < 0) + { + return; + } ## - if (abs(deviation) > 0.1) + # If the deflection is more than 0.2 degrees wait 2 seconds and check again. + ## + if (abs(deviation) > 0.2) { #print("deviation"); - settimer(gsArm, 1); + settimer(gsArm, 2); return; } ## # If the deviation is less than 0.1 then activate the GS pitch mode. ## - elsif (abs(deviation) < 0.1) + elsif (abs(deviation) < 0.2) { #print("capture"); lockAltHold.setBoolValue(0); @@ -675,6 +702,12 @@ var altButton = func(switch_on) { if (getprop(power) < minVoltageLimit) { return; } if (switch_on) { + ## + # Save the elapsed time when Alt switch was turned on. + # This is used to delay the gsArm at least 20 sec after the Alt switch is turned on. + # See comment by Figure 25, page 30 in "CENTURY II Autopilot Flight System POH". + ## + AltTimeSec = getprop(elapsedTimeSec); lockAltHold.setBoolValue(1); lockPitchAxis.setBoolValue(1); # lockPitchMode.setIntValue(pitchModes["ALT"]); @@ -685,6 +718,11 @@ var altButton = func(switch_on) { if ( getprop(enableAutoTrim) ) { settingAutoPitchTrim.setDoubleValue(1); } + ## + # Handle case where mode is LOC Norm and ALT switch is turned off and then back on. + # e.g. When descending to a lower GS intercept altitude in a step-down approach + ## + if (oldMode == 3) { apModeControlsSet(); } } else { lockAltHold.setBoolValue(0); lockPitchAxis.setBoolValue(0); diff --git a/Aircraft/Instruments-3d/vor/GS.rgb b/Aircraft/Instruments-3d/vor/GS.rgb new file mode 100644 index 000000000..ca0e8460f Binary files /dev/null and b/Aircraft/Instruments-3d/vor/GS.rgb differ diff --git a/Aircraft/Instruments-3d/vor/TO-FR.rgb b/Aircraft/Instruments-3d/vor/TO-FR.rgb index 3844fefb6..dfaa4b72c 100644 Binary files a/Aircraft/Instruments-3d/vor/TO-FR.rgb and b/Aircraft/Instruments-3d/vor/TO-FR.rgb differ diff --git a/Aircraft/Instruments-3d/vor/vor.ac b/Aircraft/Instruments-3d/vor/vor.ac index d60e7c5d4..20bb58919 100644 --- a/Aircraft/Instruments-3d/vor/vor.ac +++ b/Aircraft/Instruments-3d/vor/vor.ac @@ -1,12 +1,32 @@ AC3Db +MATERIAL "ac3dmat1" rgb 1 1 1 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.2 0.2 0.2 shi 16 trans 0 MATERIAL "ac3dmat1" rgb 1 1 1 amb 0.2 0.2 0.2 emis 0 0 0 spec 0 0 0 shi 10 trans 0 MATERIAL "ac3dmat6" rgb 0 1 0 amb 0.2 0.2 0.2 emis 0 0 0 spec 0 0 0 shi 10 trans 1 MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0.15 0.15 0.15 spec 0.5 0.5 0.5 shi 64 trans 0 OBJECT world -kids 11 +kids 13 +OBJECT poly +name "GS_out_of_range" +loc -0.00480549 1.74623e-10 0.0198121 +texture "GS.rgb" +crease 45.000000 +numvert 4 +0 0.00572082 -0.00379381 +0 0.00572082 0.00307118 +0 -0.00503432 0.00307118 +0 -0.00503432 -0.00379381 +numsurf 1 +SURF 0x30 +mat 0 +refs 4 +0 1 1 +1 0.515625 1 +2 0.515625 0.078125 +3 1 0.078125 +kids 0 OBJECT poly name "Face" -texture "/usr/local/FlightGear-0.9/data/Aircraft/Instruments-3d/vor/vor02.rgb" +texture "vor02.rgb" crease 45.000000 numvert 6 -0.004518 0.04 -0.04 @@ -17,14 +37,14 @@ numvert 6 -0.004518 0 -0.04 numsurf 2 SURF 0x0 -mat 2 +mat 3 refs 4 0 0.966797 0.958984 3 0.00976562 0.958984 4 0.00976562 0.480469 5 0.966797 0.480469 SURF 0x0 -mat 2 +mat 3 refs 4 1 0.966797 0 5 0.966797 0.480469 @@ -33,7 +53,7 @@ refs 4 kids 0 OBJECT poly name "Front" -texture "/usr/local/FlightGear-0.9/data/Aircraft/Instruments-3d/vor/vor03.rgb" +texture "vor03.rgb" crease 45.000000 numvert 6 0 0.04 -0.04 @@ -44,14 +64,14 @@ numvert 6 0 0 -0.04 numsurf 2 SURF 0x0 -mat 2 +mat 3 refs 4 0 0.998047 1 3 0 1 4 0 0.5 5 0.998047 0.5 SURF 0x0 -mat 2 +mat 3 refs 4 1 0.998047 0 5 0.998047 0.5 @@ -60,7 +80,7 @@ refs 4 kids 0 OBJECT poly name "Ring" -texture "/usr/local/FlightGear-0.9/data/Aircraft/Instruments-3d/vor/vor01.rgb" +texture "vor01.rgb" crease 45.000000 numvert 6 -0.001596 0.04 -0.04 @@ -71,14 +91,14 @@ numvert 6 -0.001596 0 -0.04 numsurf 2 SURF 0x0 -mat 2 +mat 3 refs 4 0 0.998047 1 3 0 1 4 0 0.5 5 0.998047 0.5 SURF 0x0 -mat 2 +mat 3 refs 4 1 0.998047 0 5 0.998047 0.5 @@ -97,14 +117,14 @@ numvert 6 -0.003005 0.000533 0.029784 numsurf 2 SURF 0x0 -mat 2 +mat 3 refs 4 0 0 0 3 0 0 4 0 0 2 0 0 SURF 0x0 -mat 2 +mat 3 refs 4 0 0 0 2 0 0 @@ -123,14 +143,14 @@ numvert 6 -0.003005 0.004974 -0.000532 numsurf 2 SURF 0x0 -mat 2 +mat 3 refs 4 0 0 0 2 0 0 5 0 0 4 0 0 SURF 0x0 -mat 2 +mat 3 refs 4 1 0 0 4 0 0 @@ -140,7 +160,7 @@ kids 0 OBJECT poly name "TO" loc -0.00674026 0.0040441 -0.0124104 -texture "/usr/local/FlightGear-0.9/data/Aircraft/Instruments-3d/vor/TO-FR.rgb" +texture "TO-FR.rgb" crease 45.000000 numvert 4 0 -0.00271994 -0.00739644 @@ -149,7 +169,7 @@ numvert 4 0 0.00271994 -0.00739644 numsurf 1 SURF 0x20 -mat 0 +mat 1 refs 4 3 0.609375 0.922173 2 0.125 0.922173 @@ -159,7 +179,7 @@ kids 0 OBJECT poly name "NAV" loc -0.0063754 0.0042357 -0.0122067 -texture "/usr/local/FlightGear-0.9/data/Aircraft/Instruments-3d/vor/TO-FR.rgb" +texture "TO-FR.rgb" crease 45.000000 numvert 4 0 0.00239354 -0.00417537 @@ -168,7 +188,7 @@ numvert 4 0 -0.00239354 -0.00417537 numsurf 1 SURF 0x20 -mat 0 +mat 1 refs 4 0 0.619696 0.618841 1 0.179834 0.618841 @@ -178,7 +198,7 @@ kids 0 OBJECT poly name "FR" loc -0.00589943 0.00404461 -0.0128874 -texture "/usr/local/FlightGear-0.9/data/Aircraft/Instruments-3d/vor/TO-FR.rgb" +texture "TO-FR.rgb" crease 45.000000 numvert 4 0 -0.00299626 -0.00718548 @@ -187,7 +207,7 @@ numvert 4 0 0.00299626 -0.00718548 numsurf 1 SURF 0x20 -mat 0 +mat 1 refs 4 3 0.65189 0.306457 2 0.150411 0.306457 @@ -197,7 +217,7 @@ kids 0 OBJECT poly name "disk" loc 0 -0.0292413 0.0272215 -texture "/usr/local/FlightGear-0.9/data/Aircraft/Instruments-3d/vor/knob.rgb" +texture "knob.rgb" crease 101.000000 numvert 20 0.01 0.00396059 0.00479285 @@ -222,172 +242,172 @@ numvert 20 0.01 9.31323e-09 0 numsurf 27 SURF 0x10 -mat 0 +mat 1 refs 3 19 0.484454 0.5 0 0.879385 0.826352 7 1 0.5 SURF 0x10 -mat 0 +mat 1 refs 3 19 0.484454 0.5 1 0.573978 1 0 0.879385 0.826352 SURF 0x10 -mat 0 +mat 1 refs 3 19 0.484454 0.5 2 0.226682 0.939693 1 0.573978 1 SURF 0x10 -mat 0 +mat 1 refs 3 19 0.484454 0.5 3 0 0.673648 2 0.226682 0.939693 SURF 0x10 -mat 0 +mat 1 refs 3 19 0.484454 0.5 4 0 0.326352 3 0 0.673648 SURF 0x10 -mat 0 +mat 1 refs 3 19 0.484454 0.5 5 0.226682 0.0603074 4 0 0.326352 SURF 0x10 -mat 0 +mat 1 refs 3 19 0.484454 0.5 6 0.573978 0 5 0.226682 0.0603074 SURF 0x10 -mat 0 +mat 1 refs 3 19 0.484454 0.5 8 0.879385 0.173648 6 0.573978 0 SURF 0x10 -mat 0 +mat 1 refs 3 19 0.484454 0.5 7 1 0.5 8 0.879385 0.173648 SURF 0x10 -mat 0 +mat 1 refs 4 7 0 0 0 0 0 10 0 0 9 0 0 SURF 0x10 -mat 0 +mat 1 refs 4 0 0 0 1 0 0 11 0 0 10 0 0 SURF 0x10 -mat 0 +mat 1 refs 4 1 0 0 2 0 0 12 0 0 11 0 0 SURF 0x10 -mat 0 +mat 1 refs 4 2 0 0 3 0 0 13 0 0 12 0 0 SURF 0x10 -mat 0 +mat 1 refs 4 3 0 0 4 0 0 14 0 0 13 0 0 SURF 0x10 -mat 0 +mat 1 refs 4 4 0 0 5 0 0 15 0 0 14 0 0 SURF 0x10 -mat 0 +mat 1 refs 4 5 0 0 6 0 0 16 0 0 15 0 0 SURF 0x10 -mat 0 +mat 1 refs 4 6 0 0 8 0 0 17 0 0 16 0 0 SURF 0x10 -mat 0 +mat 1 refs 4 8 0 0 7 0 0 9 0 0 17 0 0 SURF 0x10 -mat 0 +mat 1 refs 3 18 0.484454 0.5 10 0.879385 0.826352 9 1 0.5 SURF 0x10 -mat 0 +mat 1 refs 3 18 0.484454 0.5 11 0.573978 1 10 0.879385 0.826352 SURF 0x10 -mat 0 +mat 1 refs 3 18 0.484454 0.5 12 0.226682 0.939693 11 0.573978 1 SURF 0x10 -mat 0 +mat 1 refs 3 18 0.484454 0.5 13 0 0.673648 12 0.226682 0.939693 SURF 0x10 -mat 0 +mat 1 refs 3 18 0.484454 0.5 14 0 0.326352 13 0 0.673648 SURF 0x10 -mat 0 +mat 1 refs 3 18 0.484454 0.5 15 0.226682 0.0603074 14 0 0.326352 SURF 0x10 -mat 0 +mat 1 refs 3 18 0.484454 0.5 16 0.573978 0 15 0.226682 0.0603074 SURF 0x10 -mat 0 +mat 1 refs 3 18 0.484454 0.5 17 0.879385 0.173648 16 0.573978 0 SURF 0x10 -mat 0 +mat 1 refs 3 18 0.484454 0.5 9 1 0.5 @@ -408,7 +428,7 @@ numvert 4 0 0.00702053 0.0302027 numsurf 1 SURF 0x30 -mat 1 +mat 2 refs 4 3 0 1 1 0 0 @@ -430,10 +450,29 @@ numvert 4 0 -0.00702053 0.0226521 numsurf 1 SURF 0x30 -mat 1 +mat 2 refs 4 0 0 1 2 0 0 3 0.125 0 1 0.125 1 kids 0 +OBJECT poly +name "GS_in_range" +loc -0.00526316 -0.000915332 0.0210526 +texture "GS.rgb" +crease 45.000000 +numvert 4 +0 -0.00503432 -0.00480549 +0 -0.00503432 0.00389016 +0 0.00572082 0.00389016 +0 0.00572082 -0.00480549 +numsurf 1 +SURF 0x30 +mat 0 +refs 4 +3 0.484375 0.828125 +2 0.046875 0.828125 +1 0.046875 0.109375 +0 0.484375 0.109375 +kids 0 diff --git a/Aircraft/Instruments-3d/vor/vor.xml b/Aircraft/Instruments-3d/vor/vor.xml index 5697fb62e..2ace44fed 100644 --- a/Aircraft/Instruments-3d/vor/vor.xml +++ b/Aircraft/Instruments-3d/vor/vor.xml @@ -9,6 +9,7 @@ /instrumentation/nav[0]/gs-needle-deflection-norm /instrumentation/nav[0]/heading-needle-deflection /instrumentation/nav[0]/in-range + /instrumentation/nav[0]/gs-in-range vor.ac @@ -23,6 +24,8 @@ TO FR NAV + GS_out_of_range + GS_in_range 1.0 0.2 @@ -64,7 +67,25 @@ select GlidescopeNeedle - + + + + + + select + GS_in_range + + + + + + + select + GS_out_of_range + + + + diff --git a/Aircraft/Instruments-3d/vor/vor02.rgb b/Aircraft/Instruments-3d/vor/vor02.rgb index cd65660b1..d45c5a4fa 100644 Binary files a/Aircraft/Instruments-3d/vor/vor02.rgb and b/Aircraft/Instruments-3d/vor/vor02.rgb differ diff --git a/Aircraft/Instruments-3d/vor/vor2.xml b/Aircraft/Instruments-3d/vor/vor2.xml index 42aa20699..f978f115a 100644 --- a/Aircraft/Instruments-3d/vor/vor2.xml +++ b/Aircraft/Instruments-3d/vor/vor2.xml @@ -9,6 +9,7 @@ /instrumentation/nav[1]/gs-needle-deflection-norm /instrumentation/nav[1]/heading-needle-deflection /instrumentation/nav[1]/in-range + /instrumentation/nav[1]/gs-in-range vor.ac @@ -23,6 +24,8 @@ TO FR NAV + GS_out_of_range + GS_in_range 1.0 0.2 @@ -64,7 +67,25 @@ select GlidescopeNeedle - + + + + + + select + GS_in_range + + + + + + + select + GS_out_of_range + + + +