5 # Project Tupolev for FlightGear
7 # Yurik V. Nikiforoff, yurik.nsk@gmail.com
14 var FUEL_UPDATE_PERIOD = 1.0;
15 var PORTIONER_TIME = 5.0;
17 var AUTO_LEVEL_1 = 1566;
18 var AUTO_LEVEL_2 = 264;
19 var AUTO_LEVEL_3 = 20;
22 var TANK_2_CONST = 4.0;
23 var TANK_3_CONST = 2.0;
24 var TANK_4_CONST = 2.0;
26 var TRANSFER_CONST = 0.74;
27 var ADJUST_CONST = 26.7;
29 var FUEL_ALT = 16404; # ft
33 var fuel_handler = func{
34 settimer( fuel_handler, FUEL_UPDATE_PERIOD );
36 # Check electrical power
38 var pwr = getprop("tu154/systems/electrical/buses/DC27-bus-L/volts");
39 if( pwr == nil ) return;
40 # check 27V and exit if power off
47 var ac200_1 = getprop("tu154/systems/electrical/buses/AC3x200-bus-1L/volts");
48 if( ac200_1 == nil ) ac200_1 = 0.0;
49 var ac200_2 = getprop("tu154/systems/electrical/buses/AC3x200-bus-2/volts");
50 if( ac200_2 == nil ) ac200_2 = 0.0;
51 var ac200_3 = getprop("tu154/systems/electrical/buses/AC3x200-bus-3L/volts");
52 if( ac200_3 == nil ) ac200_3 = 0.0;
54 pwr = ac200_1 + ac200_2 + ac200_3;
55 if( pwr < 130.0 ) pwr = 0.0;
57 var altitude = getprop("position/altitude-ft");
58 if( altitude == nil ) altitude = 0.0;
63 var total = getprop("consumables/fuel/tank[0]/capacity-gal_us" );
64 if( total == nil ) total = 0.0;
65 var level = getprop("consumables/fuel/tank[0]/level-gal_us");
66 if( level == nil ) level = 0.0;
67 var total_consumed = getprop("tu154/systems/fuel/total-consumed-gal_us");
68 if( total_consumed == nil ) total_consumed = 0.0;
69 var total_fill = getprop("tu154/systems/fuel/total-fill-gal_us");
70 if( total_fill == nil ) total_fill = 0.0;
73 var tank_2_l = getprop("consumables/fuel/tank[1]/level-gal_us" );
74 if( tank_2_l == nil ) tank_2_l = 0.0;
75 var tank_3_l = getprop("consumables/fuel/tank[2]/level-gal_us" );
76 if( tank_3_l == nil ) tank_3_l = 0.0;
78 var tank_2_r = getprop("consumables/fuel/tank[3]/level-gal_us" );
79 if( tank_2_r == nil ) tank_2_r = 0.0;
80 var tank_3_r = getprop("consumables/fuel/tank[4]/level-gal_us" );
81 if( tank_3_r == nil ) tank_3_r = 0.0;
83 var tank_4 = getprop("consumables/fuel/tank[5]/level-gal_us" );
84 if( tank_4 == nil ) tank_4_level = 0.0;
86 var density = getprop("consumables/fuel/tank[0]/density-ppg" );
87 if( density == nil ) density = 0.0;
88 density = density * 0.454; # kg/gallon
91 var portioner_flag = getprop("tu154/systems/fuel/portioner");
92 if( portioner_flag == nil ) portioner_flag = 0.0;
94 var ext_fuel_pump = getprop("tu154/systems/fuel/ecn-319-1");
95 if( ext_fuel_pump == nil ) ext_fuel_pump = 0.0;
96 var apu_fuel_pump = getprop("tu154/systems/fuel/ecn-319-2");
97 if( apu_fuel_pump == nil ) apu_fuel_pump = 0.0;
100 var autocon_ok = getprop("tu154/switches/fuel-autoconsumption-serviceable");
101 if( autocon_ok == nil ) autocon_ok = 0;
102 var autocon_selected = getprop("tu154/switches/fuel-autoconsumption-mode");
103 if( autocon_selected == nil ) autocon_selected = 0;
104 var autolevel = getprop("tu154/switches/fuel-autolevel-serviceable");
105 if( autolevel == nil ) autolevel = 0;
107 var trans_valve_1 = getprop("tu154/switches/transfer-valve-1");
108 if( trans_valve_1 == nil ) trans_valve_1 = 0;
109 var trans_valve_2 = getprop("tu154/switches/transfer-valve-2");
110 if( trans_valve_2 == nil ) trans_valve_2 = 0;
112 var fuel_meter = getprop("tu154/switches/fuel-meter-serviceable");
113 if( fuel_meter == nil ) fuel_meter = 0;
114 var cons_meter = getprop("tu154/switches/fuel-consumption-meter");
115 if( cons_meter == nil ) fuel_meter = 0;
122 var autolevel_failure = 0;
125 var cv1 = getprop("tu154/switches/fuel-cutoff-valve-1");
126 if( cv1 == nil ) cv1 = 0;
127 var cv2 = getprop("tu154/switches/fuel-cutoff-valve-2");
128 if( cv2 == nil ) cv2 = 0;
129 var cv3 = getprop("tu154/switches/fuel-cutoff-valve-3");
130 if( cv3 == nil ) cv3 = 0;
133 var cl1 = getprop("tu154/switches/cutoff-lever-1");
134 if( cl1 == nil ) cl1 = 0;
135 var cl2 = getprop("tu154/switches/cutoff-lever-2");
136 if( cl2 == nil ) cl2 = 0;
137 var cl3 = getprop("tu154/switches/cutoff-lever-3");
138 if( cl3 == nil ) cl3 = 0;
142 var apu_cv = getprop("tu154/switches/APU-cutoff-valve-delay");
143 if( apu_cv == nil ) apu_cv = 0;
144 if( apu_cv > 0.9 ) apu_fuel_pump = 1.0;
145 else apu_fuel_pump = 0.0;
146 setprop("tu154/systems/fuel/ecn-319-2", apu_fuel_pump );
149 var p_1_1 = getprop("tu154/switches/pump-1-serviceable");
150 if( p_1_1 == nil ) p_1_1 = 0;
151 var p_1_2 = getprop("tu154/switches/pump-2-serviceable");
152 if( p_1_2 == nil ) p_1_2 = 0;
153 var p_1_3 = getprop("tu154/switches/pump-3-serviceable");
154 if( p_1_3 == nil ) p_1_3 = 0;
155 var p_1_4 = getprop("tu154/switches/pump-4-serviceable");
156 if( p_1_4 == nil ) p_1_4 = 0;
158 var p_2_l = getprop("tu154/switches/tank-2-left-serviceable");
159 if( p_2_l == nil ) p_2_l = 0;
160 var p_2_r = getprop("tu154/switches/tank-2-right-serviceable");
161 if( p_2_r == nil ) p_2_r = 0;
162 var p_3_l = getprop("tu154/switches/tank-3-left-serviceable");
163 if( p_3_l == nil ) p_3_l = 0;
164 var p_3_r = getprop("tu154/switches/tank-3-right-serviceable");
165 if( p_3_r == nil ) p_3_r = 0;
166 var p_4 = getprop("tu154/switches/tank-4-serviceable");
167 if( p_4 == nil ) p_4 = 0;
169 # Auto consume procedure
170 # check fuel and select auto consume mode
171 var auto_cons_state = 0;
173 if( (tank_2_l + tank_2_r) > AUTO_LEVEL_1 ) auto_cons_state = 1;
174 else auto_cons_state = 2;
175 if( (tank_2_l + tank_2_r) < 1.0 ) auto_cons_state = 3;
176 if( ((tank_3_l + tank_3_r) < 1.0) and ((tank_2_l + tank_2_r) < 1.0) ) auto_cons_state = 4;
177 if( tank_4 < 1.0 ) auto_cons_state = 5;
178 if( autocon_ok == 0 ) auto_cons_state = 5;
187 if( autocon_ok == 1 ) {
188 if( auto_cons_state == 1 ) { k2_l = TANK_2_CONST;
189 k2_r = TANK_2_CONST; }
191 if( auto_cons_state == 2 ) { k2_l = TANK_2_CONST;
194 k3_r = TANK_3_CONST; }
196 if( auto_cons_state == 3 ) { k3_l = TANK_3_CONST;
197 k3_r = TANK_3_CONST; }
199 if( auto_cons_state == 4 ) { k4 = TANK_4_CONST; }
204 if( abs( tank_2_l - tank_2_r ) > AUTO_LEVEL_3 )
206 if( tank_2_l < tank_2_r ) autolevel_1 = 1;
207 else autolevel_2 = 1;
209 if( abs( tank_3_l - tank_3_r ) > AUTO_LEVEL_3 )
211 if( tank_3_l < tank_3_r ) autolevel_3 = 1;
212 else autolevel_4 = 1;
214 if( abs( tank_2_l - tank_2_r ) > AUTO_LEVEL_2 ) autolevel_failure = 1;
215 if( abs( tank_3_l - tank_3_r ) > AUTO_LEVEL_2 ) autolevel_failure = 1;
219 if( autolevel_failure == 0 )
221 # stop pump for auto level
222 if( autolevel_1 == 1 ) k2_l = 0;
223 if( autolevel_2 == 1 ) k2_r = 0;
224 if( autolevel_3 == 1 ) k3_l = 0;
225 if( autolevel_4 == 1 ) k3_r = 0;
227 else { # clear flags cause autolevel failure at all
233 # if auto mode deselected, let's set pumps manually
234 if( autocon_selected == 0 ) {
235 k2_l = p_2_l * TANK_2_CONST; # 3 pumps per tanks 2, 2 per tanks 3, 2 per tank 4
236 k2_r = p_2_r * TANK_2_CONST;
237 k3_l = p_3_l * TANK_3_CONST;
238 k3_r = p_3_r * TANK_3_CONST;
239 k4 = p_4 * TANK_4_CONST;
244 if( tank_2_l == 0.0 ) k2_l = 0.0;
245 if( tank_2_r == 0.0 ) k2_r = 0.0;
246 if( tank_3_l == 0.0 ) k3_l = 0.0;
247 if( tank_3_r == 0.0 ) k3_r = 0.0;
248 if( tank_4 == 0.0 ) k4 = 0.0;
252 { # stop all pumps, automatic and manual mode
271 setprop( "tu154/lamps/pump-l-5", 1.0 );
272 setprop( "tu154/lamps/pump-l-6", 1.0 );
275 setprop( "tu154/lamps/pump-l-5", 0.0 );
276 setprop( "tu154/lamps/pump-l-6", 0.0 );
280 setprop( "tu154/lamps/pump-r-5", 1.0 );
281 setprop( "tu154/lamps/pump-r-6", 1.0 );
284 setprop( "tu154/lamps/pump-r-5", 0.0 );
285 setprop( "tu154/lamps/pump-r-6", 0.0 );
289 setprop( "tu154/lamps/pump-l-7", 1.0 );
290 setprop( "tu154/lamps/pump-l-8", 1.0 );
291 setprop( "tu154/lamps/pump-l-9", 1.0 );
294 setprop( "tu154/lamps/pump-l-7", 0.0 );
295 setprop( "tu154/lamps/pump-l-8", 0.0 );
296 setprop( "tu154/lamps/pump-l-9", 0.0 );
300 setprop( "tu154/lamps/pump-r-7", 1.0 );
301 setprop( "tu154/lamps/pump-r-8", 1.0 );
302 setprop( "tu154/lamps/pump-r-9", 1.0 );
305 setprop( "tu154/lamps/pump-r-7", 0.0 );
306 setprop( "tu154/lamps/pump-r-8", 0.0 );
307 setprop( "tu154/lamps/pump-r-9", 0.0 );
311 setprop( "tu154/lamps/pump-10", 1.0 );
312 setprop( "tu154/lamps/pump-11", 1.0 );
315 setprop( "tu154/lamps/pump-10", 0.0 );
316 setprop( "tu154/lamps/pump-11", 0.0 );
319 if( autocon_ok == 1 ) setprop( "tu154/lamps/auto-consumption-failure", 0.0 );
320 else setprop( "tu154/lamps/auto-consumption-failure", 1.0 );
322 if( auto_cons_state == 1 )
324 setprop( "tu154/lamps/consumption-tank-2", 1.0 );
325 setprop( "tu154/lamps/consumption-tank-3", 0.0 );
326 setprop( "tu154/lamps/consumption-tank-4", 0.0 );
328 if( auto_cons_state == 2 )
330 setprop( "tu154/lamps/consumption-tank-2", 1.0 );
331 setprop( "tu154/lamps/consumption-tank-3", 1.0 );
332 setprop( "tu154/lamps/consumption-tank-4", 0.0 );
334 if( auto_cons_state == 3 )
336 setprop( "tu154/lamps/consumption-tank-2", 0.0 );
337 setprop( "tu154/lamps/consumption-tank-3", 1.0 );
338 setprop( "tu154/lamps/consumption-tank-4", 0.0 );
340 if( auto_cons_state == 4 )
342 setprop( "tu154/lamps/consumption-tank-2", 0.0 );
343 setprop( "tu154/lamps/consumption-tank-3", 0.0 );
344 setprop( "tu154/lamps/consumption-tank-4", 1.0 );
346 if( auto_cons_state == 5 )
348 setprop( "tu154/lamps/consumption-tank-2", 0.0 );
349 setprop( "tu154/lamps/consumption-tank-3", 0.0 );
350 setprop( "tu154/lamps/consumption-tank-4", 0.0 );
353 if( autolevel_1 == 1 ) setprop( "tu154/lamps/tank-2-l-level", 1.0 );
354 else setprop( "tu154/lamps/tank-2-l-level", 0.0 );
355 if( autolevel_2 == 1 ) setprop( "tu154/lamps/tank-2-r-level", 1.0 );
356 else setprop( "tu154/lamps/tank-2-r-level", 0.0 );
357 if( autolevel_3 == 1 ) setprop( "tu154/lamps/tank-3-l-level", 1.0 );
358 else setprop( "tu154/lamps/tank-3-l-level", 0.0 );
359 if( autolevel_4 == 1 ) setprop( "tu154/lamps/tank-3-r-level", 1.0 );
360 else setprop( "tu154/lamps/tank-3-r-level", 0.0 );
364 if( autocon_ok == 1 ) { setprop( "tu154/lamps/fuel-level-auto", 1.0 ); }
366 setprop( "tu154/lamps/fuel-level-auto", 0.0 );
367 setprop( "tu154/lamps/tank-2-l-level", 0.0 );
368 setprop( "tu154/lamps/tank-2-r-level", 0.0 );
369 setprop( "tu154/lamps/tank-3-l-level", 0.0 );
370 setprop( "tu154/lamps/tank-3-r-level", 0.0 );
374 setprop( "tu154/lamps/fuel-level-auto", 0.0 );
375 setprop( "tu154/lamps/tank-2-l-level", 0.0 );
376 setprop( "tu154/lamps/tank-2-r-level", 0.0 );
377 setprop( "tu154/lamps/tank-3-l-level", 0.0 );
378 setprop( "tu154/lamps/tank-3-r-level", 0.0 );
381 if( autolevel_failure == 1 )
383 setprop( "tu154/lamps/tank-2-l-level", 1.0 );
384 setprop( "tu154/lamps/tank-2-r-level", 1.0 );
385 setprop( "tu154/lamps/tank-3-l-level", 1.0 );
386 setprop( "tu154/lamps/tank-3-r-level", 1.0 );
387 setprop( "tu154/lamps/fuel-level-auto", 0.0 );
390 if( trans_valve_1 > 0 )
392 setprop( "tu154/lamps/valve-l-1", 1.0 );
393 setprop( "tu154/lamps/valve-r-1", 1.0 );
396 setprop( "tu154/lamps/valve-l-1", 0.0 );
397 setprop( "tu154/lamps/valve-r-1", 0.0 );
399 if( trans_valve_2 > 0 )
401 setprop( "tu154/lamps/valve-l-2", 1.0 );
402 setprop( "tu154/lamps/valve-r-2", 1.0 );
405 setprop( "tu154/lamps/valve-l-2", 0.0 );
406 setprop( "tu154/lamps/valve-r-2", 0.0 );
409 if( p_1_1 > 0 ) setprop( "tu154/lamps/pump-1", 1.0 );
410 else setprop( "tu154/lamps/pump-1", 0.0 );
411 if( p_1_2 > 0 ) setprop( "tu154/lamps/pump-2", 1.0 );
412 else setprop( "tu154/lamps/pump-2", 0.0 );
413 if( p_1_3 > 0 ) setprop( "tu154/lamps/pump-3", 1.0 );
414 else setprop( "tu154/lamps/pump-3", 0.0 );
415 if( p_1_4 > 0 ) setprop( "tu154/lamps/pump-4", 1.0 );
416 else setprop( "tu154/lamps/pump-4", 0.0 );
418 if( cv1 > 0 ) setprop( "tu154/lamps/fuel-cutoff-1", 1.0 );
419 else setprop( "tu154/lamps/fuel-cutoff-1", 0.0 );
420 if( cv2 > 0 ) setprop( "tu154/lamps/fuel-cutoff-2", 1.0 );
421 else setprop( "tu154/lamps/fuel-cutoff-2", 0.0 );
422 if( cv3 > 0 ) setprop( "tu154/lamps/fuel-cutoff-3", 1.0 );
423 else setprop( "tu154/lamps/fuel-cutoff-3", 0.0 );
428 # portioner procedure
429 var pumps_pressure = k2_l + k2_r + k3_l + k3_r + k4;
430 var consumed = total - level;
431 var consumed_norm = level/total;
434 if( consumed_norm < 0.9545 ) # -150 kg in tank 1
436 if( portioner_flag == 0.0 ) # avoid multiple start portioner procedure
438 if( pumps_pressure > 0 ) # deny portioner procedure if tanks 2,3,4 are empty
440 # total consume value - only for consume gauge
441 setprop("tu154/systems/fuel/total-consumed-gal_us", total_consumed + consumed );
443 # start portioner procedure
444 consumed = consumed/pumps_pressure;
445 portioner_flag = 1.0;
446 setprop( "tu154/systems/fuel/portioner", portioner_flag );
447 interpolate( "tu154/systems/fuel/portioner", 0.0, PORTIONER_TIME );
449 setprop( "consumables/fuel/tank[0]/last-gal_us", total);
450 interpolate( "consumables/fuel/tank[0]/level-gal_us", total, PORTIONER_TIME );
451 # get fuel from tanks 2
452 tank_2_l = tank_2_l - consumed * k2_l;
453 if( tank_2_l < 1.0 ) tank_2_l = 0.0;
454 interpolate( "consumables/fuel/tank[1]/level-gal_us", tank_2_l, PORTIONER_TIME );
455 tank_2_r = tank_2_r - consumed * k2_r;
456 if( tank_2_r < 1.0 ) tank_2_r = 0.0;
457 interpolate( "consumables/fuel/tank[3]/level-gal_us", tank_2_r, PORTIONER_TIME );
458 # get fuel from tanks 3
459 tank_3_l = tank_3_l - consumed * k3_l;
460 if( tank_3_l < 1.0 ) tank_3_l = 0.0;
461 interpolate( "consumables/fuel/tank[2]/level-gal_us", tank_3_l, PORTIONER_TIME );
462 tank_3_r = tank_3_r - consumed * k3_r;
463 if( tank_3_r < 1.0 ) tank_3_r = 0.0;
464 interpolate( "consumables/fuel/tank[4]/level-gal_us", tank_3_r, PORTIONER_TIME );
465 # get fuel from tank 4
466 tank_4 = tank_4 - consumed * k4;
467 if( tank_4 < 1.0 ) tank_4 = 0.0;
468 interpolate( "consumables/fuel/tank[5]/level-gal_us", tank_4, PORTIONER_TIME );
471 } # end portioner procedure
473 # fuel transfer procedure
474 if( portioner_flag == 0.0 ) # don't transfer if portioner in operate
476 # From 3 to 2 fuel transfer
477 if( trans_valve_1 == 1.0 )
480 consumed = ( k3_l + k3_r ) * TRANSFER_CONST;
481 tank_3_l = tank_3_l - k3_l * TRANSFER_CONST;
482 if( tank_3_l < 1.0 ) tank_3_l = 0.0;
483 setprop( "consumables/fuel/tank[2]/level-gal_us", tank_3_l );
484 tank_3_r = tank_3_r - k3_r * TRANSFER_CONST;
485 if( tank_3_r < 1.0 ) tank_3_r = 0.0;
486 setprop( "consumables/fuel/tank[4]/level-gal_us", tank_3_r );
488 level = level + consumed;
490 overfull = level - total;
493 setprop( "consumables/fuel/tank[0]/level-gal_us", level );
496 if( trans_valve_2 == 1.0 )
499 consumed = k4 * TRANSFER_CONST;
500 tank_4 = tank_4 - consumed;
501 if( tank_4 < 1.0 ) tank_4 = 0.0;
502 setprop( "consumables/fuel/tank[5]/level-gal_us", tank_4 );
504 level = level + consumed;
506 overfull = overfull + level - total;
509 setprop( "consumables/fuel/tank[0]/level-gal_us", level );
512 tank_2_l = tank_2_l + overfull/2;
513 tank_2_r = tank_2_r + overfull/2;
514 setprop( "consumables/fuel/tank[1]/level-gal_us", tank_2_l );
515 setprop( "consumables/fuel/tank[3]/level-gal_us", tank_2_r );
517 # end fuel transfer procedure
519 # fuel level meters support
520 setprop("tu154/systems/fuel/fuel-meter-serviceable", fuel_meter );
521 setprop("tu154/systems/fuel/fuel-consumption-serviceable", cons_meter );
522 # reload fuel level of cons tank
523 level = getprop("consumables/fuel/tank[0]/level-gal_us");
524 if( level == nil ) level = 0.0;
526 if( fuel_meter == 1.0 ) {
527 interpolate("tu154/systems/fuel/tank-1-kg", level * density, FUEL_UPDATE_PERIOD );
528 interpolate("tu154/systems/fuel/tank-2-l-kg", tank_2_l * density, FUEL_UPDATE_PERIOD );
529 interpolate("tu154/systems/fuel/tank-2-r-kg", tank_2_r * density, FUEL_UPDATE_PERIOD );
530 interpolate("tu154/systems/fuel/tank-3-l-kg", tank_3_l * density, FUEL_UPDATE_PERIOD );
531 interpolate("tu154/systems/fuel/tank-3-r-kg", tank_3_r * density, FUEL_UPDATE_PERIOD );
532 interpolate("tu154/systems/fuel/tank-4-kg", tank_4 * density, FUEL_UPDATE_PERIOD );
534 interpolate( "tu154/systems/fuel/total-kg",
535 ( level + tank_2_l + tank_2_r + tank_3_l + tank_3_r + tank_4 ) * density,
536 FUEL_UPDATE_PERIOD );
539 interpolate("tu154/systems/fuel/tank-1-kg", 0.0, FUEL_UPDATE_PERIOD );
540 interpolate("tu154/systems/fuel/tank-2-l-kg", 0.0, FUEL_UPDATE_PERIOD );
541 interpolate("tu154/systems/fuel/tank-2-r-kg", 0.0, FUEL_UPDATE_PERIOD );
542 interpolate("tu154/systems/fuel/tank-3-l-kg", 0.0, FUEL_UPDATE_PERIOD );
543 interpolate("tu154/systems/fuel/tank-3-r-kg", 0.0, FUEL_UPDATE_PERIOD );
544 interpolate("tu154/systems/fuel/tank-4-kg", 0.0, FUEL_UPDATE_PERIOD );
545 interpolate( "tu154/systems/fuel/total-kg", 0.0, FUEL_UPDATE_PERIOD );
548 # Fuel consume meter procedure
550 if( cons_meter == 1.0 ) {
551 total_consumed = getprop("tu154/systems/fuel/total-consumed-gal_us" );
552 if( total_consumed == nil ) total_consumed = 0.0;
553 level = ( total_fill - total_consumed ) * density;
554 if( level < 0.0 ) level = 0.0;
555 interpolate("tu154/systems/fuel/rest-kg", level, FUEL_UPDATE_PERIOD );
558 interpolate("tu154/systems/fuel/rest-kg", 0.0, FUEL_UPDATE_PERIOD );
562 if( cv1 < 1.0 ) setprop( "controls/engines/engine[0]/cutoff", 1 );
563 if( cv2 < 1.0 ) setprop( "controls/engines/engine[1]/cutoff", 1 );
564 if( cv3 < 1.0 ) setprop( "controls/engines/engine[2]/cutoff", 1 );
566 if( cl1 < 1.0 ) setprop( "controls/engines/engine[0]/cutoff", 1 );
567 if( cl2 < 1.0 ) setprop( "controls/engines/engine[1]/cutoff", 1 );
568 if( cl3 < 1.0 ) setprop( "controls/engines/engine[2]/cutoff", 1 );
571 var tank_1_pumps = p_1_1 + p_1_2 + p_1_3 + p_1_4 + ext_fuel_pump;
572 if( tank_1_pumps < 1.0 )
574 if( altitude > FUEL_ALT ) {
575 setprop( "controls/engines/engine[0]/cutoff", 1 );
576 setprop( "controls/engines/engine[1]/cutoff", 1 );
577 setprop( "controls/engines/engine[2]/cutoff", 1 );
581 # reload fuel level of cons tank
582 level = getprop("consumables/fuel/tank[0]/level-gal_us");
583 if( level == nil ) level = 0.0;
587 if( apu_fuel_pump > 0 )
588 setprop( "tu154/systems/electrical/indicators/apu-fuel-pressure", 1.0 );
589 else setprop( "tu154/systems/electrical/indicators/apu-fuel-pressure", 0.0 );
590 if( tank_1_pumps > 0.0 ){
591 if( cv1 > 0.0 ){ setprop( "tu154/systems/electrical/indicators/engine-1/p-fuel", 0 ); }
592 else { setprop( "tu154/systems/electrical/indicators/engine-1/p-fuel", 1 ); }
593 if( cv2 > 0.0 ){ setprop( "tu154/systems/electrical/indicators/engine-2/p-fuel", 0 ); }
594 else { setprop( "tu154/systems/electrical/indicators/engine-2/p-fuel", 1 ); }
595 if( cv3 > 0.0 ){ setprop( "tu154/systems/electrical/indicators/engine-3/p-fuel", 0 ); }
596 else { setprop( "tu154/systems/electrical/indicators/engine-3/p-fuel", 1 ); }
599 setprop( "tu154/systems/electrical/indicators/engine-1/p-fuel", 1 );
600 setprop( "tu154/systems/electrical/indicators/engine-2/p-fuel", 1 );
601 setprop( "tu154/systems/electrical/indicators/engine-3/p-fuel", 1 );
605 setprop( "tu154/systems/electrical/indicators/engine-1/p-fuel", 1 );
606 setprop( "tu154/systems/electrical/indicators/engine-2/p-fuel", 1 );
607 setprop( "tu154/systems/electrical/indicators/engine-3/p-fuel", 1 );
608 setprop( "tu154/systems/electrical/indicators/apu-fuel-pressure", 0.0 );
612 # end cutoff procedure
615 var blank_fuel_lamps = func{
616 setprop( "tu154/lamps/pump-l-5", 0.0 );
617 setprop( "tu154/lamps/pump-l-6", 0.0 );
618 setprop( "tu154/lamps/pump-r-5", 0.0 );
619 setprop( "tu154/lamps/pump-r-6", 0.0 );
620 setprop( "tu154/lamps/pump-l-7", 0.0 );
621 setprop( "tu154/lamps/pump-l-8", 0.0 );
622 setprop( "tu154/lamps/pump-l-9", 0.0 );
623 setprop( "tu154/lamps/pump-r-7", 0.0 );
624 setprop( "tu154/lamps/pump-r-8", 0.0 );
625 setprop( "tu154/lamps/pump-r-9", 0.0 );
626 setprop( "tu154/lamps/pump-10", 0.0 );
627 setprop( "tu154/lamps/pump-11", 0.0 );
628 setprop( "tu154/lamps/auto-consumption-failure", 0.0 );
629 setprop( "tu154/lamps/consumption-tank-2", 0.0 );
630 setprop( "tu154/lamps/consumption-tank-3", 0.0 );
631 setprop( "tu154/lamps/consumption-tank-4", 0.0 );
632 setprop( "tu154/lamps/tank-2-l-level", 0.0 );
633 setprop( "tu154/lamps/tank-2-r-level", 0.0 );
634 setprop( "tu154/lamps/tank-3-l-level", 0.0 );
635 setprop( "tu154/lamps/tank-3-r-level", 0.0 );
636 setprop( "tu154/lamps/fuel-level-auto", 0.0 );
637 setprop( "tu154/lamps/tank-2-l-level", 0.0 );
638 setprop( "tu154/lamps/tank-2-r-level", 0.0 );
639 setprop( "tu154/lamps/tank-3-l-level", 0.0 );
640 setprop( "tu154/lamps/tank-3-r-level", 0.0 );
641 setprop( "tu154/lamps/valve-l-1", 0.0 );
642 setprop( "tu154/lamps/valve-r-1", 0.0 );
643 setprop( "tu154/lamps/valve-l-2", 0.0 );
644 setprop( "tu154/lamps/valve-r-2", 0.0 );
645 setprop( "tu154/lamps/pump-1", 0.0 );
646 setprop( "tu154/lamps/pump-2", 0.0 );
647 setprop( "tu154/lamps/pump-3", 0.0 );
648 setprop( "tu154/lamps/pump-4", 0.0 );
649 setprop( "tu154/lamps/fuel-cutoff-1", 0.0 );
650 setprop( "tu154/lamps/fuel-cutoff-2", 0.0 );
651 setprop( "tu154/lamps/fuel-cutoff-3", 0.0 );
652 setprop( "tu154/systems/electrical/indicators/apu-fuel-pressure", 0.0 );
654 interpolate("tu154/systems/fuel/tank-1-kg", 0.0, FUEL_UPDATE_PERIOD );
655 interpolate("tu154/systems/fuel/tank-2-l-kg", 0.0, FUEL_UPDATE_PERIOD );
656 interpolate("tu154/systems/fuel/tank-2-r-kg", 0.0, FUEL_UPDATE_PERIOD );
657 interpolate("tu154/systems/fuel/tank-3-l-kg", 0.0, FUEL_UPDATE_PERIOD );
658 interpolate("tu154/systems/fuel/tank-3-r-kg", 0.0, FUEL_UPDATE_PERIOD );
659 interpolate("tu154/systems/fuel/tank-4-kg", 0.0, FUEL_UPDATE_PERIOD );
660 interpolate( "tu154/systems/fuel/total-kg", 0.0, FUEL_UPDATE_PERIOD );
665 # Fuel consume meter adjust
666 cons_meter_adjust = func{
667 var level = getprop("tu154/systems/fuel/total-fill-gal_us");
668 if( level == nil ) level = 0.0;
669 level = level + arg[0] * ADJUST_CONST;
670 if( level < 0.0 ) level = 0.0;
671 setprop("tu154/systems/fuel/total-fill-gal_us", level);
679 print("Fuel support started");