CVS: data/Aircraft/Lightning/Systems instrumentation-fine.nas, 1.10, 1.11 lightning-controls.nas, 1.14, 1.15 lightning-electrical.nas, 1.6, 1.7 lightning-lights.nas, 1.2, 1.3
Vivian Meazza <[email protected]>
| Newsgroups | gmane.games.flightgear.cvc |
|---|---|
| Message-ID | <[email protected]> |
Update of /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems
In directory baron.flightgear.org:/tmp/cvs-serv3024
Modified Files:
instrumentation-fine.nas lightning-controls.nas
lightning-electrical.nas lightning-lights.nas
Log Message:
Clean up by Alan Teeder
Index: instrumentation-fine.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems/instrumentation-fine.nas,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- instrumentation-fine.nas 24 Nov 2007 17:29:49 -0000 1.10
+++ instrumentation-fine.nas 27 Mar 2010 08:42:11 -0000 1.11
@@ -1,216 +1,219 @@
-# $Id$
-
-# ==================================== timer stuff =========================================
-
-# set the update period
-
-var UPDATE_PERIOD = 0;
-
-# set the timer for the selected function
-
-var registerTimer = func {
-
- settimer(gmeterUpdate, UPDATE_PERIOD);
- settimer(setRPM, UPDATE_PERIOD);
- settimer(icewarn, UPDATE_PERIOD);
- settimer(gearLights, UPDATE_PERIOD);
- settimer(func {navdisplay("comm")}, UPDATE_PERIOD);
- settimer(func {navdisplay("nav")}, UPDATE_PERIOD);
-
-}
-
-# =============================== end timer stuff ===========================================
-
-# =============================== G-Meter stuff =============================================
-
-var gmeterUpdate = func {
-
- var GCurrent = props.globals.getNode("/accelerations/pilot-g[0]").getValue();
- var GMin = props.globals.getNode("/accelerations/pilot-gmin[0]").getValue();
- var GMax = props.globals.getNode("/accelerations/pilot-gmax[0]").getValue();
-
- if(GCurrent < 1 and GCurrent < GMin){setprop("/accelerations/pilot-gmin[0]", GCurrent);}
- else {if(GCurrent > GMax){setprop("/accelerations/pilot-gmax[0]", GCurrent);}}
-
-registerTimer();
-
-}
-
-# ====================== Standby / Master AI ===============================
-
-var setRPM = func{
-
- var sb_volts = getprop("/systems/electrical/outputs/standby_instruments") ;
- if (sb_volts == nil ){ sb_volts = 0;}
- if (sb_volts > 22){ rpm = 2000; }
- else { rpm = 0; }
-
- setprop("/engines/engine/rpm", rpm);
-
-} # end function
-
-#### Ice Warning Light - values taken from RAF "Pilot's Notes General, 3rd ed. 1946" ####
-#### Any suggestions for improvement welcomed! ####
-
-var icewarn = func {
-
- var temp = getprop("environment/temperature-degc");
- var volts = getprop("systems/electrical/outputs/annunciators");
-
- if (temp < -1 and temp > -8 and volts > 23 ) { warn = 1 }
- else {warn = 0}
-
- setprop("sim/model/lightning/lights/ice_warn", warn);
-
-} # End func
-
-# ==================== Undercarriage Indicator Lights =======================
-
-var gearLights = func {
-
- var volts = getprop("systems/electrical/outputs/undercarriage");
- if (volts == nil) {volts = 0}
- if (volts > 1) {power = 1}
- else {power = 0}
-
- var dayNight = getprop("controls/switches/dayNight");
- var changeLamps = getprop("controls/switches/changeLamps");
- var port = getprop("gear/gear[0]/position-norm");
- var nose = getprop("gear/gear[1]/position-norm");
- var stbd = getprop("gear/gear[2]/position-norm");
-
- var brightness = power * (dayNight + 0.5);
-
- # Port Leg
- if (port < 1) {
- setprop("sim/model/lightning/lights/port-red",brightness);
- setprop("sim/model/lightning/lights/port-green-1",0);
- setprop("sim/model/lightning/lights/port-green-2",0);
- } elsif (changeLamps < 1){
- setprop("sim/model/lightning/lights/port-red",0);
- setprop("sim/model/lightning/lights/port-green-1",brightness);
- setprop("sim/model/lightning/lights/port-green-2",0);
- } else {
- setprop("sim/model/lightning/lights/port-red",0);
- setprop("sim/model/lightning/lights/port-green-1",0);
- setprop("sim/model/lightning/lights/port-green-2",brightness);
- }
- # Nose Leg
- if (nose < 1) {
- setprop("sim/model/lightning/lights/nose-red",brightness);
- setprop("sim/model/lightning/lights/nose-green-1",0);
- setprop("sim/model/lightning/lights/nose-green-2",0);
- } elsif (changeLamps < 1){
- setprop("sim/model/lightning/lights/nose-red",0);
- setprop("sim/model/lightning/lights/nose-green-1",brightness);
- setprop("sim/model/lightning/lights/nose-green-2",0);
- } else {
- setprop("sim/model/lightning/lights/nose-red",0);
- setprop("sim/model/lightning/lights/nose-green-1",0);
- setprop("sim/model/lightning/lights/nose-green-2",brightness);
- }
- # Starboard Leg
- if (stbd < 1) {
- setprop("sim/model/lightning/lights/stbd-red",brightness);
- setprop("sim/model/lightning/lights/stbd-green-1",0);
- setprop("sim/model/lightning/lights/stbd-green-2",0);
- } elsif (changeLamps < 1){
- setprop("sim/model/lightning/lights/stbd-red",0);
- setprop("sim/model/lightning/lights/stbd-green-1",brightness);
- setprop("sim/model/lightning/lights/stbd-green-2",0);
- } else {
- setprop("sim/model/lightning/lights/stbd-red",0);
- setprop("sim/model/lightning/lights/stbd-green-1",0);
- setprop("sim/model/lightning/lights/stbd-green-2",brightness);
- }
-
-} # End of Function
-
-# ==================== Nav Radio Frequency Display =========================
-
-var navdisplay = func(radio) {
- var total=getprop("/instrumentation/"~radio~"[0]/frequencies/selected-mhz");
- var digit1=int(total/100);
- var digit2=int((total/10)-(10*digit1));
- var digit3=int(total-(100*digit1)-(10*digit2));
- var digit4=int(10*(total-int(total)));
- var digit5=int(10*(10*(total-int(total)))-(10*digit4));
- setprop("sim/model/lightning/radios/"~radio~"[0]/digit1",digit1);
- setprop("sim/model/lightning/radios/"~radio~"[0]/digit2",digit2);
- setprop("sim/model/lightning/radios/"~radio~"[0]/digit3",digit3);
- setprop("sim/model/lightning/radios/"~radio~"[0]/digit4",digit4);
- setprop("sim/model/lightning/radios/"~radio~"[0]/digit5",digit5);
-}
-
-####################### Initialise ##############################################
-
-var initialize = func {
-
- ### Initialise gmeter stuff ###
- props.globals.getNode("accelerations/pilot-g[0]", 1).setDoubleValue(1.01);
- props.globals.getNode("accelerations/pilot-gmin[0]", 1).setDoubleValue(1);
- props.globals.getNode("accelerations/pilot-gmax[0]", 1).setDoubleValue(1);
- props.globals.getNode("/sim/rendering/redout/alpha", 1).setDoubleValue(0.0);
- props.globals.getNode("/sim/rendering/redout/red", 1).setDoubleValue(0.0);
- props.globals.getNode("/sim/rendering/redout/blue", 1).setDoubleValue(0.0);
- props.globals.getNode("/sim/rendering/redout/green", 1).setDoubleValue(0.0);
-
- ### Initialise Gear ###
- props.globals.getNode("sim/lightning/controls/gear", 1).setIntValue(1);
-
- ### Initialise fuel stuff ###
- props.globals.getNode("instrumentation/fuel/bingo[0]", 1).setIntValue(0);
- props.globals.getNode("instrumentation/fuel/bingo[1]", 1).setIntValue(0);
-
- ### Initialise RPM (Vacuum) stuff ###
- props.globals.getNode("engines/engine[0]/rpm", 1).setIntValue(0);
-
- ### Initialise Ice Warning stuff ###
- props.globals.getNode("sim/model/lightning/lights/ice_warn", 1).setIntValue(0);
-
- ### Initialise Seat stuff ###
- props.globals.getNode("sim/model/lightning/controls/seat", 1).setIntValue(0);
-
- ### Initialise Instrumentation stuff ###
- props.globals.getNode("sim/model/lightning/controls/radarview", 1).setIntValue(0);
- props.globals.getNode("sim/model/lightning/controls/syn-knob", 1).setIntValue(0);
- props.globals.getNode("instrumentation/heading-indicator/heading-source", 1).setBoolValue(0);
-
- ### Initialise Radio stuff ###
- props.globals.getNode("sim/model/lightning/radios/nav[0]/vol", 1).setDoubleValue(0.5);
- props.globals.getNode("sim/model/lightning/radios/comm[0]/vol", 1).setDoubleValue(0.5);
-
- ### Initialise Chute stuff ###
- props.globals.getNode("sim/model/lightning/controls/flight/chute_open", 1).setIntValue(0);
- props.globals.getNode("sim/model/lightning/controls/flight/chute_deployed", 1).setIntValue(0);
- props.globals.getNode("sim/model/lightning/controls/flight/chute_jettisoned", 1).setBoolValue(0);
-
- ### Initialise Tank stuff ###
- props.globals.getNode("sim/model/lightning/controls/tank_jettisoned_lever", 1).setIntValue(0);
-
- ### Initialise Gear stuff ###
- props.globals.getNode("sim/model/lightning/controls/emergency_uc_selected", 1).setBoolValue(0);
-
- ### Initialise AP stuff ###
- props.globals.getNode("sim/model/lightning/controls/flight/ap_ILS", 1).setIntValue(0);
- props.globals.getNode("sim/model/lightning/controls/flight/ap_glide", 1).setIntValue(0);
- props.globals.getNode("sim/model/lightning/controls/flight/ap_pitch", 1).setIntValue(0);
- props.globals.getNode("sim/model/lightning/controls/flight/ap_ry", 1).setIntValue(0);
-
- ### Initialise Camera stuff ###
- props.globals.getNode("sim/model/lightning/controls/camera-start-time", 1).setIntValue(0);
-
- ### Initialise Dialogue stuff ###
- Lightning.dialog.open();
-
- ### Initialise Steering stuff ###
- aircraft.steering.init();
-
- registerTimer();
- # Finished Initialising
- initialized = 1;
-
-} #end func
-
-######################### Fire it up ############################################
-setlistener("/sim/model/lightning/electrical-initialized",initialize);
+# $Id$
+
+# ==================================== timer stuff =========================================
+
+# set the update period
+
+var UPDATE_PERIOD = 0;
+
+# set the timer for the selected function
+
+var registerTimer = func {
+
+ settimer(gmeterUpdate, UPDATE_PERIOD);
+ settimer(setRPM, UPDATE_PERIOD);
+ settimer(icewarn, UPDATE_PERIOD);
+ settimer(gearLights, UPDATE_PERIOD);
+ settimer(func {navdisplay("comm")}, UPDATE_PERIOD);
+ settimer(func {navdisplay("nav")}, UPDATE_PERIOD);
+
+}
+
+# =============================== end timer stuff ===========================================
+
+# =============================== G-Meter stuff =============================================
+
+var gmeterUpdate = func {
+
+ var GCurrent = props.globals.getNode("/accelerations/pilot-g[0]").getValue();
+ var GMin = props.globals.getNode("/accelerations/pilot-gmin[0]").getValue();
+ var GMax = props.globals.getNode("/accelerations/pilot-gmax[0]").getValue();
+
+ if(GCurrent < 1 and GCurrent < GMin){setprop("/accelerations/pilot-gmin[0]", GCurrent);}
+ else {if(GCurrent > GMax){setprop("/accelerations/pilot-gmax[0]", GCurrent);}}
+
+registerTimer();
+
+}
+
+# ====================== Standby / Master AI ===============================
+
+var setRPM = func{
+
+ var sb_volts = getprop("/systems/electrical/outputs/standby_instruments") ;
+ if (sb_volts == nil ){ sb_volts = 0;}
+ if (sb_volts > 22){ rpm = 2000; }
+ else { rpm = 0; }
+
+ setprop("/engines/engine/rpm", rpm);
+
+} # end function
+
+#### Ice Warning Light - values taken from RAF "Pilot's Notes General, 3rd ed. 1946" ####
+#### Any suggestions for improvement welcomed! ####
+
+var icewarn = func {
+
+ var temp = getprop("environment/temperature-degc");
+ var volts = getprop("systems/electrical/outputs/annunciators");
+ var warn = 0;
+
+ if (temp < -1 and temp > -8 and volts > 23 ) { warn = 1 }
+ else {warn = 0}
+
+ setprop("sim/model/lightning/lights/ice_warn", warn);
+
+} # End func
+
+# ==================== Undercarriage Indicator Lights =======================
+
+var gearLights = func {
+
+ var volts = getprop("systems/electrical/outputs/undercarriage");
+ var power = 0;
+ if (volts == nil) {volts = 0}
+ if (volts > 1) {power = 1}
+ else {power = 0}
+
+ var dayNight = getprop("controls/switches/dayNight");
+ var changeLamps = getprop("controls/switches/changeLamps");
+ var port = getprop("gear/gear[0]/position-norm");
+ var nose = getprop("gear/gear[1]/position-norm");
+ var stbd = getprop("gear/gear[2]/position-norm");
+
+ var brightness = power * (dayNight + 0.5);
+
+ # Port Leg
+ if (port < 1) {
+ setprop("sim/model/lightning/lights/port-red",brightness);
+ setprop("sim/model/lightning/lights/port-green-1",0);
+ setprop("sim/model/lightning/lights/port-green-2",0);
+ } elsif (changeLamps < 1){
+ setprop("sim/model/lightning/lights/port-red",0);
+ setprop("sim/model/lightning/lights/port-green-1",brightness);
+ setprop("sim/model/lightning/lights/port-green-2",0);
+ } else {
+ setprop("sim/model/lightning/lights/port-red",0);
+ setprop("sim/model/lightning/lights/port-green-1",0);
+ setprop("sim/model/lightning/lights/port-green-2",brightness);
+ }
+ # Nose Leg
+ if (nose < 1) {
+ setprop("sim/model/lightning/lights/nose-red",brightness);
+ setprop("sim/model/lightning/lights/nose-green-1",0);
+ setprop("sim/model/lightning/lights/nose-green-2",0);
+ } elsif (changeLamps < 1){
+ setprop("sim/model/lightning/lights/nose-red",0);
+ setprop("sim/model/lightning/lights/nose-green-1",brightness);
+ setprop("sim/model/lightning/lights/nose-green-2",0);
+ } else {
+ setprop("sim/model/lightning/lights/nose-red",0);
+ setprop("sim/model/lightning/lights/nose-green-1",0);
+ setprop("sim/model/lightning/lights/nose-green-2",brightness);
+ }
+ # Starboard Leg
+ if (stbd < 1) {
+ setprop("sim/model/lightning/lights/stbd-red",brightness);
+ setprop("sim/model/lightning/lights/stbd-green-1",0);
+ setprop("sim/model/lightning/lights/stbd-green-2",0);
+ } elsif (changeLamps < 1){
+ setprop("sim/model/lightning/lights/stbd-red",0);
+ setprop("sim/model/lightning/lights/stbd-green-1",brightness);
+ setprop("sim/model/lightning/lights/stbd-green-2",0);
+ } else {
+ setprop("sim/model/lightning/lights/stbd-red",0);
+ setprop("sim/model/lightning/lights/stbd-green-1",0);
+ setprop("sim/model/lightning/lights/stbd-green-2",brightness);
+ }
+
+} # End of Function
+
+# ==================== Nav Radio Frequency Display =========================
+
+var navdisplay = func(radio) {
+ var total=getprop("/instrumentation/"~radio~"[0]/frequencies/selected-mhz");
+ var digit1=int(total/100);
+ var digit2=int((total/10)-(10*digit1));
+ var digit3=int(total-(100*digit1)-(10*digit2));
+ var digit4=int(10*(total-int(total)));
+ var digit5=int(10*(10*(total-int(total)))-(10*digit4));
+ setprop("sim/model/lightning/radios/"~radio~"[0]/digit1",digit1);
+ setprop("sim/model/lightning/radios/"~radio~"[0]/digit2",digit2);
+ setprop("sim/model/lightning/radios/"~radio~"[0]/digit3",digit3);
+ setprop("sim/model/lightning/radios/"~radio~"[0]/digit4",digit4);
+ setprop("sim/model/lightning/radios/"~radio~"[0]/digit5",digit5);
+}
+
+####################### Initialise ##############################################
+
+var initialize = func {
+ var initialized = 0;
+
+ ### Initialise gmeter stuff ###
+ props.globals.getNode("accelerations/pilot-g[0]", 1).setDoubleValue(1.01);
+ props.globals.getNode("accelerations/pilot-gmin[0]", 1).setDoubleValue(1);
+ props.globals.getNode("accelerations/pilot-gmax[0]", 1).setDoubleValue(1);
+ props.globals.getNode("/sim/rendering/redout/alpha", 1).setDoubleValue(0.0);
+ props.globals.getNode("/sim/rendering/redout/red", 1).setDoubleValue(0.0);
+ props.globals.getNode("/sim/rendering/redout/blue", 1).setDoubleValue(0.0);
+ props.globals.getNode("/sim/rendering/redout/green", 1).setDoubleValue(0.0);
+
+ ### Initialise Gear ###
+ props.globals.getNode("sim/lightning/controls/gear", 1).setIntValue(1);
+
+ ### Initialise fuel stuff ###
+ props.globals.getNode("instrumentation/fuel/bingo[0]", 1).setIntValue(0);
+ props.globals.getNode("instrumentation/fuel/bingo[1]", 1).setIntValue(0);
+
+ ### Initialise RPM (Vacuum) stuff ###
+ props.globals.getNode("engines/engine[0]/rpm", 1).setIntValue(0);
+
+ ### Initialise Ice Warning stuff ###
+ props.globals.getNode("sim/model/lightning/lights/ice_warn", 1).setIntValue(0);
+
+ ### Initialise Seat stuff ###
+ props.globals.getNode("sim/model/lightning/controls/seat", 1).setIntValue(0);
+
+ ### Initialise Instrumentation stuff ###
+ props.globals.getNode("sim/model/lightning/controls/radarview", 1).setIntValue(0);
+ props.globals.getNode("sim/model/lightning/controls/syn-knob", 1).setIntValue(0);
+ props.globals.getNode("instrumentation/heading-indicator/heading-source", 1).setBoolValue(0);
+
+ ### Initialise Radio stuff ###
+ props.globals.getNode("sim/model/lightning/radios/nav[0]/vol", 1).setDoubleValue(0.5);
+ props.globals.getNode("sim/model/lightning/radios/comm[0]/vol", 1).setDoubleValue(0.5);
+
+ ### Initialise Chute stuff ###
+ props.globals.getNode("sim/model/lightning/controls/flight/chute_open", 1).setIntValue(0);
+ props.globals.getNode("sim/model/lightning/controls/flight/chute_deployed", 1).setIntValue(0);
+ props.globals.getNode("sim/model/lightning/controls/flight/chute_jettisoned", 1).setBoolValue(0);
+
+ ### Initialise Tank stuff ###
+ props.globals.getNode("sim/model/lightning/controls/tank_jettisoned_lever", 1).setIntValue(0);
+
+ ### Initialise Gear stuff ###
+ props.globals.getNode("sim/model/lightning/controls/emergency_uc_selected", 1).setBoolValue(0);
+
+ ### Initialise AP stuff ###
+ props.globals.getNode("sim/model/lightning/controls/flight/ap_ILS", 1).setIntValue(0);
+ props.globals.getNode("sim/model/lightning/controls/flight/ap_glide", 1).setIntValue(0);
+ props.globals.getNode("sim/model/lightning/controls/flight/ap_pitch", 1).setIntValue(0);
+ props.globals.getNode("sim/model/lightning/controls/flight/ap_ry", 1).setIntValue(0);
+
+ ### Initialise Camera stuff ###
+ props.globals.getNode("sim/model/lightning/controls/camera-start-time", 1).setIntValue(0);
+
+ ### Initialise Dialogue stuff ###
+ Lightning.dialog.open();
+
+ ### Initialise Steering stuff ###
+ aircraft.steering.init();
+
+ registerTimer();
+ # Finished Initialising
+ initialized = 1;
+
+} #end func
+
+######################### Fire it up ############################################
+setlistener("/sim/model/lightning/electrical-initialized",initialize);
Index: lightning-controls.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems/lightning-controls.nas,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- lightning-controls.nas 7 Oct 2008 20:17:25 -0000 1.14
+++ lightning-controls.nas 27 Mar 2010 08:42:12 -0000 1.15
@@ -1,522 +1,525 @@
-# ==================================== timer stuff =========================================
-
-# set the update period
-
-var UPDATE_PERIOD = 0.5;
-var UPDATE_PERIOD_FINE = 0.1;
-var UPDATE_PERIOD_NIL = 0.0;
-
-# set the timer for the selected function
-
-var registerTimerControls = func {
[...1016 lines suppressed...]
+ }
+
+} # end of function
+
+var emergencyGearDown = func(set){
+
+ if (set < 1){
+ setprop("sim/model/lightning/controls/emergency_uc_selected", 0);
+ } else {
+ setprop("sim/model/lightning/controls/emergency_uc_selected", 1);
+ setprop("controls/gear/gear-down", 1);
+ }
+} # End Func
+
+# ========================= Rudder Trim =====================================
+controls.rudderTrim = func(direction){
+ var volts = getprop("systems/electrical/outputs/control_pos_indicator");
+ setprop("sim/model/lightning/controls/flight/rudder-trim", direction);
+ controls.slewProp("controls/flight/rudder-trim", direction * 0.6 * (volts/28));
+} # end
Index: lightning-electrical.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems/lightning-electrical.nas,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- lightning-electrical.nas 1 Aug 2007 18:51:32 -0000 1.6
+++ lightning-electrical.nas 27 Mar 2010 08:42:12 -0000 1.7
@@ -1,483 +1,473 @@
-##
-# Lightning electrical system.
-# From the F.6 Pilot's Notes; making educated guesses about F.1A
-# Used Syd Adams' DHC2 as initial template
-##
-
-# Initialize internal values
-#
-
-external = nil;
-battery = nil;
-alternator = nil;
-
-last_time = 0.0;
-
-vbus_volts = 0.0;
-
-ammeter_ave = 0.0;
-
-##
-# Initialize the electrical system
-#
-
-init_electrical = func {
- print("Initializing Nasal Electrical System");
- external = ExternalClass.new();
- battery = BatteryClass.new();
- alternator = AlternatorClass.new();
-
- props.globals.getNode("systems/electrical/suppliers/rpm_source", 1).setDoubleValue(1);
- props.globals.getNode("systems/electrical/outputs/standby_instruments", 1).setDoubleValue(0);
- props.globals.getNode("systems/electrical/outputs/annunciators", 1).setDoubleValue(0);
- props.globals.getNode("controls/switches/dayNight", 1).setBoolValue(1);
- props.globals.getNode("controls/switches/changeLamps", 1).setBoolValue(0);
-
- setprop("controls/electric/engine/generator", "true");
- setprop("controls/switches/autopilot", "0");
- setprop("controls/switches/battery", "0");
- setprop("controls/switches/cabin_air", 0);
- setprop("controls/switches/chute_jett", "0");
- setprop("controls/switches/eng_start_master", "0");
- setprop("controls/switches/engine_start_0", 0);
- setprop("controls/switches/engine_start_1", 0);
- setprop("controls/switches/gw_fcr", 0);
- setprop("controls/switches/ignition", 0);
- setprop("controls/switches/iris", 0);
- setprop("controls/switches/instrument_master", 1);
- setprop("controls/switches/inverter_normal", 1);
- setprop("controls/switches/rain_dispersal", 0);
- setprop("controls/switches/taxi-lights", 0);
- setprop("controls/switches/nav_lights", 0);
- setprop("controls/anti-ice/pitot_heater", 0);
- setprop("controls/anti-ice/standby_pitot_heat", 0);
- setprop("controls/switches/instr-lights-port", 0);
- setprop("controls/switches/instr-lights-stbd", 0);
- setprop("controls/switches/wscreen_front", 0);
- setprop("controls/switches/wscreen_side", 0);
-
- setprop("systems/electrical/suppliers/gen_online", 0);
- setprop("systems/electrical/suppliers/external", 0);
- setprop("controls/electric/external-power", 1);
-
- setprop("sim/model/lightning/electrical-initialized", "true");
-
- # Request that the update fuction be called next frame
- settimer(update_electrical, 0);
-}
-
-ExternalClass = {};
-
-ExternalClass.new = func {
- obj = { parents : [ExternalClass],
- extvolts : getprop("/systems/electrical/suppliers/external")};
- return obj;
-}
-
-ExternalClass.get_output_volts = func {
-
- me.extvolts = getprop("systems/electrical/suppliers/external");
-
- return me.extvolts * 29;
-
-}
-
-BatteryClass = {};
-
-BatteryClass.new = func {
- obj = { parents : [BatteryClass],
- ideal_volts : 24.0,
- ideal_amps : 30.0,
- amp_hours : 25.0,
- charge_percent : 1.0,
- charge_amps : 7.0 };
- return obj;
-}
-
-
-BatteryClass.apply_load = func( amps, dt ) {
- amphrs_used = amps * dt / 3600.0;
- percent_used = amphrs_used / me.amp_hours;
- me.charge_percent -= percent_used;
- if ( me.charge_percent < 0.0 ) {
- me.charge_percent = 0.0;
- } elsif ( me.charge_percent > 1.0 ) {
- me.charge_percent = 1.0;
- }
- #print( "battery percent = ", me.charge_percent);
- return me.amp_hours * me.charge_percent;
-}
-
-
-BatteryClass.get_output_volts = func {
- x = 1.0 - me.charge_percent;
- tmp = -(3.0 * x - 1.0);
- factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
- return me.ideal_volts * factor ;
-}
-
-
-BatteryClass.get_output_amps = func {
- x = 1.0 - me.charge_percent;
- tmp = -(3.0 * x - 1.0);
- factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
- return me.ideal_amps * factor;
-}
-
-
-AlternatorClass = {};
-
-AlternatorClass.new = func {
- obj = { parents : [AlternatorClass],
- rpm_source : "/systems/electrical/suppliers/rpm_source",
- rpm_upper_threshold : 58,
- rpm_lower_threshold : 57,
- ideal_volts : 28.0,
- ideal_amps : 200.0 };
- setprop( obj.rpm_source, 0.0 );
- return obj;
-}
-
-AlternatorClass.update_source = func( dt ) {
- # Choose fastest spinning engine to supply, prefer no2
- rpm1 = getprop("/engines/engine[0]/n1");
- rpm2 = getprop("/engines/engine[1]/n1");
- if (rpm1 == nil){rpm1="0"};
- if (rpm2 == nil){rpm2="0"};
-
- if (rpm2 < rpm1) {
- setprop("/systems/electrical/suppliers/rpm_source", rpm1);
- if (rpm1 > 58) {
- setprop("/systems/electrical/suppliers/gen_online", 1);
- } else {
- setprop("/systems/electrical/suppliers/gen_online", 0);
- }
- }
- else {
- setprop("/systems/electrical/suppliers/rpm_source", rpm2);
- if (rpm2 > 58) {
- setprop("/systems/electrical/suppliers/gen_online", 1);
- } else {
- setprop("/systems/electrical/suppliers/gen_online", 0);
- }
- }
-}
-
-AlternatorClass.apply_load = func( amps, dt ) {
- # give full output. This is as documented in the Pilot's Notes.
- rpm = getprop( me.rpm_source );
- factor = rpm / me.rpm_upper_threshold;
- if ( factor > 1.0 ) {
- factor = 1.0;
- }
- if ( rpm < me.rpm_lower_threshold ) {
- factor = 0.000001;
- }
- # print( "alternator amps = ", me.ideal_amps * factor );
- available_amps = me.ideal_amps * factor;
- return available_amps - amps;
-}
-
-
-AlternatorClass.get_output_volts = func {
- # give full output. This is as documented in the Pilot's Notes.
- rpm = getprop( me.rpm_source );
- factor = rpm / me.rpm_upper_threshold;
- if ( factor > 1.0 ) {
- factor = 1.0;
- }
- # print( "alternator volts = ", me.ideal_volts * factor );
- if ( rpm < me.rpm_lower_threshold ) {
- factor = 0.000001;
- }
- return me.ideal_volts * factor;
-}
-
-
-AlternatorClass.get_output_amps = func {
- # give full output.
- rpm = getprop( me.rpm_source );
- factor = rpm / me.rpm_upper_threshold;
- if ( factor > 1.0 ) {
- factor = 1.0;
- }
- # print( "alternator amps = ", ideal_amps * factor );
- if ( rpm < me.rpm_lower_threshold ) {
- factor = 0.000001;
- }
- return me.ideal_amps * factor;
-}
-
-
-update_electrical = func {
- time = getprop("/sim/time/elapsed-sec");
- dt = time - last_time;
- last_time = time;
-
- update_virtual_bus( dt );
-
- # Request that the update fuction be called again next frame
- settimer(update_electrical, 0);
-}
-
-
-
-update_virtual_bus = func( dt ) {
- battery_volts = battery.get_output_volts();
- alternator_source = alternator.update_source(dt);
- alternator_volts = alternator.get_output_volts();
- external_volts = external.get_output_volts();
- load = 0.0;
-
- # switch state
- master_bat = getprop("/controls/switches/battery");
- master_alt = getprop("/controls/electric/engine/generator");
-
- # determine power source
-
-
- bus_volts = 0.0;
- power_source = nil;
- if ( master_bat > 0) {
- bus_volts = battery_volts;
- power_source = "battery";
- }
- if ( master_alt and (alternator_volts > bus_volts) ) {
- bus_volts = alternator_volts;
- power_source = "alternator";
- }
- if ( external_volts > bus_volts ) {
- bus_volts = external_volts;
- power_source = "external";
- }
-
- # print( "virtual bus volts = ", bus_volts );
-
- # bus network (1. these must be called in the right order, 2. the
- # bus routine itself determins where it draws power from.)
- load += electrical_28VDC_bus();
- load += electrical_115VAC3phase_unswitched_bus();
- load += electrical_115VAC3phase_with_standby_inverter_bus();
- load += electrical_115VAC3phase_without_standby_inverter_bus();
- load += electrical_115VAC1phase_bus();
- load += electrical_28VAC1phase_bus();
-
- # system loads and ammeter gauge
- ammeter = 0.0;
- if ( bus_volts > 1.0 ) {
- # normal load
- load += 15.0;
-
- # ammeter gauge
- if ( power_source == "battery" ) {
- ammeter = -load;
- } else {
- ammeter = battery.charge_amps;
- }
- }
- # print( "ammeter = ", ammeter );
-
- # charge/discharge the battery
- if ( power_source == "battery" ) {
- battery.apply_load( load, dt );
- } elsif ( bus_volts > battery_volts ) {
- battery.apply_load( -battery.charge_amps, dt );
- }
-
- # filter ammeter needle pos
- ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter;
-
- # outputs
- #setprop("/systems/electrical/amps", ammeter_ave);
- #setprop("/systems/electrical/volts", bus_volts);
- vbus_volts = bus_volts;
-
- return load;
-}
-
-electrical_28VDC_bus = func() {
-
- engSw = (getprop("controls/switches/eng_start_master"));
- ignSw = (getprop("controls/switches/ignition"));
- start = engSw * ignSw;
- portlightSw = getprop("controls/switches/instr-lights-port");
- stbdlightSw = getprop("controls/switches/instr-lights-stbd");
-
- bus_volts = vbus_volts ;
- load = 0.0;
-
- # Voltmeter
- setprop("/systems/electrical/outputs/annunciators", bus_volts);
- # Airbrakes control and position indicator
- setprop("/systems/electrical/outputs/airbrakes", bus_volts);
- # Armament circuits
- setprop("systems/electrical/outputs/armaments", bus_volts);
- # Standby AI and Direction Indicator
- setprop("systems/electrical/outputs/standby_instruments", bus_volts);
- # Brake Chute Jettison
- setprop("systems/electrical/outputs/chute_jett", bus_volts);
- # Camera Controls
- setprop("systems/electrical/outputs/camera", bus_volts);
- # Com 1 Power
- setprop("systems/electrical/outputs/comm[0]", bus_volts);
- # Com 2 Power
- setprop("systems/electrical/outputs/comm[1]", bus_volts);
- # Controls and Trim indication
- setprop("systems/electrical/outputs/control_pos_indicator", bus_volts);
- # DME Power
- setprop("systems/electrical/outputs/dme[0]", bus_volts);
- # Engine Start and Relight
- setprop("systems/electrical/outputs/ignition[0]", bus_volts * start);
- setprop("systems/electrical/outputs/ignition[1]", bus_volts * start);
- # Flaps power and indication
- setprop("systems/electrical/outputs/flaps", bus_volts);
- # HSI Power
- setprop("systems/electrical/outputs/hsi", bus_volts);
- # Instruments Lights-Port
- setprop("systems/electrical/outputs/instr-lights-port", bus_volts * portlightSw);
- # Instruments Lights-Stbd
- setprop("systems/electrical/outputs/instr-lights-stbd", bus_volts * stbdlightSw);
- # Nav Lights
- if( getprop("controls/switches/nav_lights") != "0"){
- setprop("systems/electrical/outputs/nav_lights", bus_volts);
- load +=1;
- }
- else {setprop("systems/electrical/outputs/nav_lights",0);}
- # Nav 1 Power
- setprop("systems/electrical/outputs/nav[0]", bus_volts);
- setprop("systems/electrical/outputs/adf", bus_volts);
- # Nav 2 Power
- setprop("systems/electrical/outputs/nav[1]", bus_volts);
- # Seat
- setprop("systems/electrical/outputs/seat", bus_volts);
- # TACAN
- setprop("systems/electrical/outputs/tacan", bus_volts);
- # Taxi Lights
- if( getprop("controls/switches/taxi-lights") != "0"){
- setprop("systems/electrical/outputs/taxi-lights", bus_volts);
- load +=3;
- }
- else {setprop("systems/electrical/outputs/taxi-lights",0);}
- # Turn Co-ordinator
- setprop("systems/electrical/outputs/turn-coordinator[0]", bus_volts);
- # Undercarriage operation and indicators
- setprop("systems/electrical/outputs/undercarriage", bus_volts);
-
-
- # return cumulative load
- return load;
-}
-
-electrical_115VAC3phase_unswitched_bus = func() {
- gen_online = getprop("systems/electrical/suppliers/gen_online");
- bus_volts = vbus_volts * gen_online * 4.1072;
- load = 0.0;
-
- # A.I. 23B Radar
- setprop("systems/electrical/outputs/radar", bus_volts);
- if(bus_volts > 114){setprop("instrumentation/radar/switch","on" );}
- else{setprop("instrumentation/radar/switch","off");}
- # G.W. Supply
- setprop("systems/electrical/outputs/gw", bus_volts);
- # Ventral Pack Fuel Pump
- setprop("systems/electrical/outputs/ventral_fuel_pump", bus_volts);
- # Windscreen Heaters Side and Centre
- setprop("systems/electrical/outputs/windscreen_heaters", bus_volts);
- # Anti-icing
- if ( getprop("/controls/switches/rain_dispersal") == "-1") {
- setprop("systems/electrical/outputs/de-ice", bus_volts);
- load += 3.5;
- }
- else {setprop("systems/electrical/outputs/de-ice", 0 );}
-
- # return cumulative load
- return load;
-}
-
-electrical_115VAC3phase_with_standby_inverter_bus = func() {
- # Can run from either main or standby inverter
- ins_master_switch = getprop("controls/switches/instrument_master");
- inverter_norm_switch = getprop("controls/switches/inverter_normal");
- if (inverter_norm_switch != 0) {
- inv_switch = 1;
- }
- else { inv_switch = 0 }
- bus_volts = vbus_volts * 4.1072 * ins_master_switch * inv_switch ;
- load = 0.0;
-
- # Fuel Contents Display
- setprop("systems/electrical/outputs/fuel_contents", bus_volts);
- #Also Cockpit Temp - not implementing for now :-)
-
- # return cumulative load
- return load;
-}
-
-electrical_115VAC3phase_without_standby_inverter_bus = func() {
- # Contains instruments with no standby AC power available
- switch = getprop("controls/switches/instrument_master");
- switch2 = getprop("controls/switches/inverter_normal");
- gen_online = getprop("systems/electrical/suppliers/gen_online");
- bus_volts = vbus_volts * 4.1072 * gen_online * switch * switch2;
- load = 0.0;
-
- # Autopilot Power
-
- if( getprop("controls/switches/autopilot") != "0"){
- setprop("systems/electrical/outputs/autopilot", bus_volts);}
- else {setprop("systems/electrical/outputs/autopilot",0);}
-
- # Autothrottle Servos (Don't require main AP to be switched on)
- setprop("/systems/electrical/outputs/autothrottle", bus_volts);
-
- # Main AI and HSI - Automatic Failover to 28VDC on loss of AC
- #if( bus_volts < 113 )
- #if( gen_online < 1) {
- # setprop("/systems/electrical/outputs/", vbus_volts);
- # }
- #else {
- # setprop("/systems/electrical/outputs/standby_instruments", bus_volts);
- #}
-
- # MRG (Master Reference Gyro) - feeds AI (and NAV display on F.6)
- setprop("/systems/electrical/outputs/MRG", bus_volts);
- setprop("/systems/electrical/outputs/DG", bus_volts);
-
- # JPT Control
- setprop("/systems/electrical/outputs/JPT", bus_volts);
-
- # return cumulative load
- return load;
-}
-
-electrical_115VAC1phase_bus = func() {
- gen_online = getprop("/systems/electrical/suppliers/gen_online");
- bus_volts = vbus_volts * 4.1072 * gen_online;
- load = 0.0;
-
- # TACAN Power
- setprop("/systems/electrical/outputs/TACAN", bus_volts);
- # I.F.F
- # Spraymat Auto Temp. Control
-
- # return cumulative load
- return load;
-}
-
-electrical_28VAC1phase_bus = func() {
- gen_online = getprop("/systems/electrical/suppliers/gen_online");
- bus_volts = vbus_volts * gen_online;
- load = 0.0;
-
- # Pitot Heaters
- setprop("/systems/electrical/outputs/pitot-heat", bus_volts);
- # Services Hydraulic Pressure Gauge
- setprop("/systems/electrical/outputs/Hydraulic_services_gauge", bus_volts);
-
- # return cumulative load
- return load;
-}
-# Setup a timer based call to initialized the electrical system as
-# soon as possible.
-#settimer(init_electrical, 0);
-setlistener("/sim/signals/fdm-initialized",init_electrical);
+##
+# Lightning electrical system.
+# From the F.6 Pilot's Notes; making educated guesses about F.1A
+# Used Syd Adams' DHC2 as initial template
+##
+
+# Initialize internal values
+#
+
+var external = nil;
+var battery = nil;
+var alternator = nil;
+var last_time = 0.0;
+var vbus_volts = 0.0;
+var ammeter_ave = 0.0;
+
+##
+# Initialize the electrical system
+#
+
+var init_electrical = func {
+ print("Initializing Nasal Electrical System");
+ external = ExternalClass.new();
+ battery = BatteryClass.new();
+ alternator = AlternatorClass.new();
+
+ props.globals.getNode("systems/electrical/suppliers/rpm_source", 1).setDoubleValue(1);
+ props.globals.getNode("systems/electrical/outputs/standby_instruments", 1).setDoubleValue(0);
+ props.globals.getNode("systems/electrical/outputs/annunciators", 1).setDoubleValue(0);
+ props.globals.getNode("controls/switches/dayNight", 1).setBoolValue(1);
+ props.globals.getNode("controls/switches/changeLamps", 1).setBoolValue(0);
+
+ setprop("controls/electric/engine/generator", "true");
+ setprop("controls/switches/autopilot", "0");
+ setprop("controls/switches/battery", "0");
+ setprop("controls/switches/cabin_air", 0);
+ setprop("controls/switches/chute_jett", "0");
+ setprop("controls/switches/eng_start_master", "0");
+ setprop("controls/switches/engine_start_0", 0);
+ setprop("controls/switches/engine_start_1", 0);
+ setprop("controls/switches/gw_fcr", 0);
+ setprop("controls/switches/ignition", 0);
+ setprop("controls/switches/iris", 0);
+ setprop("controls/switches/instrument_master", 1);
+ setprop("controls/switches/inverter_normal", 1);
+ setprop("controls/switches/rain_dispersal", 0);
+ setprop("controls/switches/taxi-lights", 0);
+ setprop("controls/switches/nav_lights", 0);
+ setprop("controls/anti-ice/pitot_heater", 0);
+ setprop("controls/anti-ice/standby_pitot_heat", 0);
+ setprop("controls/switches/instr-lights-port", 0);
+ setprop("controls/switches/instr-lights-stbd", 0);
+ setprop("controls/switches/wscreen_front", 0);
+ setprop("controls/switches/wscreen_side", 0);
+ setprop("systems/electrical/suppliers/gen_online", 0);
+ setprop("systems/electrical/suppliers/external", 0);
+ setprop("controls/electric/external-power", 1);
+ setprop("sim/model/lightning/electrical-initialized", "true");
+
+ # Request that the update fuction be called next frame
+ settimer(update_electrical, 0);
+}
+
+var ExternalClass = {
+
+new: func {
+ var obj = { parents : [ExternalClass],
+ extvolts : getprop("/systems/electrical/suppliers/external")};
+ return obj;
+},
+
+get_output_volts: func {
+ me.extvolts = getprop("systems/electrical/suppliers/external");
+ return me.extvolts * 29;
+ },
+};
+var BatteryClass = {
+
+new: func {
+ var obj = { parents : [BatteryClass],
+ ideal_volts : 24.0,
+ ideal_amps : 30.0,
+ amp_hours : 25.0,
+ charge_percent : 1.0,
+ charge_amps : 7.0 };
+ return obj;
+ },
+
+apply_load: func( amps, dt ) {
+# print("Battery Apply Load ", me.amp_hours );
+ var amphrs_used = amps * dt / 3600000.0;
+ var percent_used = amphrs_used / me.amp_hours;
+ me.charge_percent -= percent_used;
+ if ( me.charge_percent < 0.0 ) {
+ me.charge_percent = 0.0;
+ } elsif ( me.charge_percent > 1.0 ) {
+ me.charge_percent = 1.0;
+ }
+ #print( "battery percent = ", me.charge_percent);
+ return me.amp_hours * me.charge_percent;
+ },
+
+get_output_volts: func {
+ var x = 1.0 - me.charge_percent;
+ var tmp = -(3.0 * x - 1.0);
+ var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
+ return me.ideal_volts * factor ;
+ },
+
+get_output_amps: func {
+ var x = 1.0 - me.charge_percent;
+ var tmp = -(3.0 * x - 1.0);
+ var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
+ return me.ideal_amps * factor;
+ },
+};
+
+
+var AlternatorClass = {
+
+new: func {
+ var obj = { parents : [AlternatorClass],
+ rpm_source : "/systems/electrical/suppliers/rpm_source",
+ rpm_upper_threshold : 58,
+ rpm_lower_threshold : 57,
+ ideal_volts : 28.0,
+ ideal_amps : 200.0 };
+ setprop( obj.rpm_source, 0.0 );
+ return obj;
+},
+
+update_source: func( dt ) {
+ # Choose fastest spinning engine to supply, prefer no2
+ var rpm1 = getprop("/engines/engine[0]/n1");
+ var rpm2 = getprop("/engines/engine[1]/n1");
+ if (rpm1 == nil){rpm1="0"};
+ if (rpm2 == nil){rpm2="0"};
+ if (rpm2 < rpm1) {
+ setprop("/systems/electrical/suppliers/rpm_source", rpm1);
+ if (rpm1 > 58) {
+ setprop("/systems/electrical/suppliers/gen_online", 1);
+ } else {
+ setprop("/systems/electrical/suppliers/gen_online", 0);
+ }
+ }
+ else {
+ setprop("/systems/electrical/suppliers/rpm_source", rpm2);
+ if (rpm2 > 58) {
+ setprop("/systems/electrical/suppliers/gen_online", 1);
+ } else {
+ setprop("/systems/electrical/suppliers/gen_online", 0);
+ }
+ }
+},
+
+apply_load: func( amps, dt ) {
+ # give full output. This is as documented in the Pilot's Notes.
+ var rpm = getprop( me.rpm_source );
+ # print("Alternator Apply Load ", me.rpm_upper_threshold );
+ var factor = rpm / me.rpm_upper_threshold;
+ if ( factor > 1.0 ) {
+ factor = 1.0;
+ }
+ if ( rpm < me.rpm_lower_threshold ) {
+ factor = 0.000001;
+ }
+ # print( "alternator amps = ", me.ideal_amps * factor );
+ var available_amps = me.ideal_amps * factor;
+ return available_amps - amps;
+},
+
+get_output_volts: func {
+ # give full output. This is as documented in the Pilot's Notes.
+ var rpm = getprop( me.rpm_source );
+ # print("Get Alternator Output Volts ", me.rpm_upper_threshold );
+ var factor = rpm / me.rpm_upper_threshold;
+ if ( factor > 1.0 ) {
+ factor = 1.0;
+ }
+ # print( "alternator volts = ", me.ideal_volts * factor );
+ if ( rpm < me.rpm_lower_threshold ) {
+ factor = 0.000001;
+ }
+ return me.ideal_volts * factor;
+},
+
+get_output_amps: func {
+ # give full output.
+ var rpm = getprop( me.rpm_source );
+# print("Get Alternator Output Amps ", me.rpm_upper_threshold );
+ var factor = rpm / me.rpm_upper_threshold;
+ if ( factor > 1.0 ) {
+ factor = 1.0;
+ }
+ # print( "alternator amps = ", ideal_amps * factor );
+ if ( rpm < me.rpm_lower_threshold ) {
+ factor = 0.000001;
+ }
+ return me.ideal_amps * factor;
+ },
+};
+
+var update_electrical = func {
+ var time = getprop("/sim/time/elapsed-sec"); ## NB this is time in miliiseconds since sim started
+ var dt = time - last_time;
+ last_time = time;
+ update_virtual_bus( dt );
+ # Request that the update fuction be called again next frame
+ settimer(update_electrical, 0);
+}
+
+var update_virtual_bus = func( dt ) {
+# print ("update virtual bus");
+ var battery_volts = battery.get_output_volts();
+ var alternator_source = alternator.update_source(dt);
+ var alternator_volts = alternator.get_output_volts();
+ var external_volts = external.get_output_volts();
+ var load = 0.0;
+
+ # switch state
+ var master_bat = getprop("/controls/switches/battery");
+ var master_alt = getprop("/controls/electric/engine/generator");
+
+ # determine power source
+
+ var bus_volts = 0.0;
+ var power_source = nil;
+ if ( master_bat > 0) {
+ bus_volts = battery_volts;
+ power_source = "battery";
+ }
+ if ( master_alt and (alternator_volts > bus_volts) ) {
+ bus_volts = alternator_volts;
+ power_source = "alternator";
+ }
+ if ( external_volts > bus_volts ) {
+ bus_volts = external_volts;
+ power_source = "external";
+ }
+
+ # print( "virtual bus volts = ", bus_volts );
+
+ # bus network (1. these must be called in the right order, 2. the
+ # bus routine itself determins where it draws power from.)
+ load += electrical_28VDC_bus();
+ load += electrical_115VAC3phase_unswitched_bus();
+ load += electrical_115VAC3phase_with_standby_inverter_bus();
+ load += electrical_115VAC3phase_without_standby_inverter_bus();
+ load += electrical_115VAC1phase_bus();
+ load += electrical_28VAC1phase_bus();
+
+ # system loads and ammeter gauge
+ var ammeter = 0.0;
+ if ( bus_volts > 1.0 ) {
+ # normal load
+ load += 15.0;
+
+ # ammeter gauge
+ if ( power_source == "battery" ) {
+ ammeter = -load;
+ } else {
+ ammeter = battery.charge_amps;
+ }
+ }
+ # print( "ammeter = ", ammeter );
+
+ # charge/discharge the battery
+ if ( power_source == "battery" ) {
+ battery.apply_load( load, dt );
+ } elsif ( bus_volts > battery_volts ) {
+ battery.apply_load( -battery.charge_amps, dt );
+ }
+
+ # filter ammeter needle pos
+ ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter;
+
+ # outputs
+ setprop("/systems/electrical/amps", ammeter_ave);
+ setprop("/systems/electrical/volts", bus_volts);
+ vbus_volts = bus_volts;
+
+ return load;
+}
+
+var electrical_28VDC_bus = func() {
+
+ var engSw = (getprop("controls/switches/eng_start_master"));
+ var ignSw = (getprop("controls/switches/ignition"));
+ var start = engSw * ignSw;
+ if (start == nil){start="0"};
+ var portlightSw = getprop("controls/switches/instr-lights-port");
+ var stbdlightSw = getprop("controls/switches/instr-lights-stbd");
+ if (vbus_volts == nil){vbus_volts="0"};
+ var bus_volts = vbus_volts ;
+ var load = 0.0;
+
+
+ # Voltmeter
+ setprop("/systems/electrical/outputs/annunciators", bus_volts);
+ # Airbrakes control and position indicator
+ setprop("/systems/electrical/outputs/airbrakes", bus_volts);
+ # Armament circuits
+ setprop("systems/electrical/outputs/armaments", bus_volts);
+ # Standby AI and Direction Indicator
+ setprop("systems/electrical/outputs/standby_instruments", bus_volts);
+ # Brake Chute Jettison
+ setprop("systems/electrical/outputs/chute_jett", bus_volts);
+ # Camera Controls
+ setprop("systems/electrical/outputs/camera", bus_volts);
+ # Com 1 Power
+ setprop("systems/electrical/outputs/comm[0]", bus_volts);
+ # Com 2 Power
+ setprop("systems/electrical/outputs/comm[1]", bus_volts);
+ # Controls and Trim indication
+ setprop("systems/electrical/outputs/control_pos_indicator", bus_volts);
+ # DME Power
+ setprop("systems/electrical/outputs/dme[0]", bus_volts);
+ # Engine Start and Relight
+ setprop("systems/electrical/outputs/ignition[0]", bus_volts * start);
+ setprop("systems/electrical/outputs/ignition[1]", bus_volts * start);
+ # Flaps power and indication
+ setprop("systems/electrical/outputs/flaps", bus_volts);
+ # HSI Power
+ setprop("systems/electrical/outputs/hsi", bus_volts);
+ # Instruments Lights-Port
+ setprop("systems/electrical/outputs/instr-lights-port", bus_volts * portlightSw);
+ # Instruments Lights-Stbd
+ setprop("systems/electrical/outputs/instr-lights-stbd", bus_volts * stbdlightSw);
+ # Nav Lights
+ if( getprop("controls/switches/nav_lights") != "0"){
+ setprop("systems/electrical/outputs/nav_lights", bus_volts);
+ load +=1;
+ }
+ else {setprop("systems/electrical/outputs/nav_lights",0);}
+ # Nav 1 Power
+ setprop("systems/electrical/outputs/nav[0]", bus_volts);
+ setprop("systems/electrical/outputs/adf", bus_volts);
+ # Nav 2 Power
+ setprop("systems/electrical/outputs/nav[1]", bus_volts);
+ # Seat
+ setprop("systems/electrical/outputs/seat", bus_volts);
+ # TACAN
+ setprop("systems/electrical/outputs/tacan", bus_volts);
+ # Taxi Lights
+ if( getprop("controls/switches/taxi-lights") != "0"){
+ setprop("systems/electrical/outputs/taxi-lights", bus_volts);
+ load +=3;
+ }
+ else {setprop("systems/electrical/outputs/taxi-lights",0);}
+ # Turn Co-ordinator
+ setprop("systems/electrical/outputs/turn-coordinator[0]", bus_volts);
+ # Undercarriage operation and indicators
+ setprop("systems/electrical/outputs/undercarriage", bus_volts);
+
+
+ # return cumulative load
+ return load;
+}
+
+var electrical_115VAC3phase_unswitched_bus = func() {
+ var gen_online = getprop("systems/electrical/suppliers/gen_online");
+ var bus_volts = vbus_volts * gen_online * 4.1072;
+ var load = 0.0;
+
+ # A.I. 23B Radar
+ setprop("systems/electrical/outputs/radar", bus_volts);
+####### if(bus_volts > 114){setprop("instrumentation/radar/switch","on" );} # this can crash flightgear !!!!
+####### else{setprop("instrumentation/radar/switch","off");}
+ # G.W. Supply
+ setprop("systems/electrical/outputs/gw", bus_volts);
+ # Ventral Pack Fuel Pump
+ setprop("systems/electrical/outputs/ventral_fuel_pump", bus_volts);
+ # Windscreen Heaters Side and Centre
+ setprop("systems/electrical/outputs/windscreen_heaters", bus_volts);
+ # Anti-icing
+ if ( getprop("/controls/switches/rain_dispersal") == "-1") {
+ setprop("systems/electrical/outputs/de-ice", bus_volts);
+ load += 3.5;
+ }
+ else {setprop("systems/electrical/outputs/de-ice", 0 );}
+
+ # return cumulative load
+ return load;
+}
+
+var electrical_115VAC3phase_with_standby_inverter_bus = func() {
+ # Can run from either main or standby inverter
+ var ins_master_switch = getprop("controls/switches/instrument_master");
+ var inverter_norm_switch = getprop("controls/switches/inverter_normal");
+ var inv_switch = 0;
+ if (inverter_norm_switch != 0) {
+ inv_switch = 1;
+ }
+ else { inv_switch = 0 }
+ var bus_volts = vbus_volts * 4.1072 * ins_master_switch * inv_switch ;
+ var load = 0.0;
+
+ # Fuel Contents Display
+ setprop("systems/electrical/outputs/fuel_contents", bus_volts);
+ #Also Cockpit Temp - not implementing for now :-)
+
+ # return cumulative load
+ return load;
+}
+
+var electrical_115VAC3phase_without_standby_inverter_bus = func() {
+ # Contains instruments with no standby AC power available
+ var switch = getprop("controls/switches/instrument_master");
+ var switch2 = getprop("controls/switches/inverter_normal");
+ var gen_online = getprop("systems/electrical/suppliers/gen_online");
+ var bus_volts = vbus_volts * 4.1072 * gen_online * switch * switch2;
+ var load = 0.0;
+
+ # Autopilot Power
+
+ if( getprop("controls/switches/autopilot") != "0"){
+ setprop("systems/electrical/outputs/autopilot", bus_volts);}
+ else {setprop("systems/electrical/outputs/autopilot",0);}
+
+ # Autothrottle Servos (Don't require main AP to be switched on)
+ setprop("/systems/electrical/outputs/autothrottle", bus_volts);
+
+ # Main AI and HSI - Automatic Failover to 28VDC on loss of AC
+ #if( bus_volts < 113 )
+ #if( gen_online < 1) {
+ # setprop("/systems/electrical/outputs/", vbus_volts);
+ # }
+ #else {
+ # setprop("/systems/electrical/outputs/standby_instruments", bus_volts);
+ #}
+
+ # MRG (Master Reference Gyro) - feeds AI (and NAV display on F.6)
+ setprop("/systems/electrical/outputs/MRG", bus_volts);
+ setprop("/systems/electrical/outputs/DG", bus_volts);
+
+ # JPT Control
+ setprop("/systems/electrical/outputs/JPT", bus_volts);
+
+ # return cumulative load
+ return load;
+}
+
+var electrical_115VAC1phase_bus = func() {
+ var gen_online = getprop("/systems/electrical/suppliers/gen_online");
+ var bus_volts = vbus_volts * 4.1072 * gen_online;
+ var load = 0.0;
+
+ # TACAN Power
+ setprop("/systems/electrical/outputs/TACAN", bus_volts);
+ # I.F.F
+ # Spraymat Auto Temp. Control
+
+ # return cumulative load
+ return load;
+}
+
+var electrical_28VAC1phase_bus = func() {
+ var gen_online = getprop("/systems/electrical/suppliers/gen_online");
+ var bus_volts = vbus_volts * gen_online;
+ var load = 0.0;
+
+ # Pitot Heaters
+ setprop("/systems/electrical/outputs/pitot-heat", bus_volts);
+ # Services Hydraulic Pressure Gauge
+ setprop("/systems/electrical/outputs/Hydraulic_services_gauge", bus_volts);
+
+ # return cumulative load
+ return load;
+}
+# Setup a timer based call to initialized the electrical system as
+# soon as possible.
+#settimer(init_electrical, 0);
+setlistener("/sim/signals/fdm-initialized",init_electrical);
Index: lightning-lights.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems/lightning-lights.nas,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- lightning-lights.nas 24 Nov 2007 17:29:49 -0000 1.2
+++ lightning-lights.nas 27 Mar 2010 08:42:13 -0000 1.3
@@ -1,40 +1,41 @@
-# Control Lightning Lights
-
-# Initialise properties
-setprop("sim/model/lightning/lights/nav_lights",0);
-
-#Flasher borrowed from Concorde and heavily modified
-var NavLights = func {
- var switch = getprop("controls/switches/nav_lights");
- var light = getprop("sim/model/lightning/lights/nav_lights");
- var volts = getprop("systems/electrical/outputs/nav_lights");
-
- # Off
- if (switch == "0" or switch == "nil") {
- setprop ("sim/model/lightning/lights/nav_lights",0);
- }
- # Steady
- elsif (switch == "-1" ) {
- setprop ("sim/model/lightning/lights/nav_lights",volts);
- settimer(Lightning.NavLights, 2);
- }
- # Flashing
- elsif (switch > "0") {
- if( light == nil or light == "0") {
- light = "1";
- lightsec = 3;
- }
- else {
- light = "0";
- lightsec = 6;
- }
- var value = volts*light;
- setprop("sim/model/lightning/lights/nav_lights",value);
-
- # re-schedule the next call
- settimer(Lightning.NavLights, lightsec);
- }
-
-} #End Func
-setlistener("controls/switches/nav_lights", NavLights);
-
+# Control Lightning Lights
+
+# Initialise properties
+setprop("sim/model/lightning/lights/nav_lights",0);
+
+#Flasher borrowed from Concorde and heavily modified
+var NavLights = func {
+ var switch = getprop("controls/switches/nav_lights");
+ var light = getprop("sim/model/lightning/lights/nav_lights");
+ var volts = getprop("systems/electrical/outputs/nav_lights");
+ var lightsec = 3;
+
+ # Off
+ if (switch == "0" or switch == "nil") {
+ setprop ("sim/model/lightning/lights/nav_lights",0);
+ }
+ # Steady
+ elsif (switch == "-1" ) {
+ setprop ("sim/model/lightning/lights/nav_lights",volts);
+ settimer(Lightning.NavLights, 2);
+ }
+ # Flashing
+ elsif (switch > "0") {
+ if( light == nil or light == "0") {
+ light = "1";
+ lightsec = 3;
+ }
+ else {
+ light = "0";
+ lightsec = 6;
+ }
+ var value = volts*light;
+ setprop("sim/model/lightning/lights/nav_lights",value);
+
+ # re-schedule the next call
+ settimer(Lightning.NavLights, lightsec);
+ }
+
+} #End Func
+setlistener("controls/switches/nav_lights", NavLights);
+
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev