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
+
+
+
+