Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # ====================================
- # Viet Starter Motor
- # by Fabien Barbier Sept 2015
- # ammended by Didier Bourguet Oct 2015
- # ====================================
- var FrequencyUpdate = 0.1; #0.1 loop refreching rate
- var MaxTankCapacity = 50;
- var LastTime = 0; #calculate the filling based on runing time
- #Filling
- var FillingTime = 15 *60; #In seconds
- var FillingTimePump = 300;
- #Guessed that we need for about 5 minutes to manipulate the pump lever for about 5 minutes to fill the air tank
- var MaxThrottle = 2500; #Rpm
- var MaxPump = 125; #Rps
- var FillingRate = MaxTankCapacity/((MaxThrottle/60) * FillingTime);
- #Little miste from me : 2500 Rpm in sec = 2500/60
- var FillingRatePump = MaxTankCapacity/(MaxPump * FillingTime);
- #draw off
- var StartTries = 4;
- var EmptyingTime = 8; #(In seconds)
- var EmptyingRate = 50/(StartTries * EmptyingTime);
- #Loop creating
- var init = func(){
- var loop = func(){
- update();
- settimer(loop,FrequencyUpdate);
- }
- settimer(loop,0);
- #At initialization, the nest fonction loop, isn't launched, just declared.
- #this settimer on this ligne will be launched only once, start the loop
- }
- var update = func(){
- var Rps = getprop("engines/engine/rpm")/60; # RPM property put in seconds
- var FillPump = 125;
- #Filling is 5 min, so 3 time less than compressor filling at full Rpm, so 3 x 41.66 = 125 Rps
- var StarterAirTank = getprop("systems/pneumatic/air-tank-psi");# initialised in -base file
- var StarterMotor = getprop("engines/engine/cranking");
- var PumpPower = getprop("controls/pneumatic/backup-air-pump/power");
- var ActualTime = getprop("sim/time/elapsed-sec"); #Elapsed time in seconds since sim strat
- var SpeedUp = getprop("sim/speed-up"); #This is simulation rate. Could be helpfull for filling the tank, without waiting 15 minutes
- #Interval calculation
- var ElapsedTime = (ActualTime - LastTime) * SpeedUp;
- if(StarterMotor){ #as it's a boolean variable (1 or 0)
- #we don't need to write if(StarterMotor == 1)
- var Emptying = EmptyingRate *ElapsedTime;
- #print("Emptying:" ~ Emptying ~ " ElapsedTime:"~ElapsedTime);
- StarterAirTank = StarterAirTank - Emptying;
- }
- elsif(StarterAirTank<50){
- if(PumpPower){
- var AirFilling = Rps*FillingRate * ElapsedTime;
- var AirfillingPump = FillPump*FillingRate * ElapsedTime;
- #print("AirFilling:"~AirFilling);
- StarterAirTank = StarterAirTank + AirFilling + AirfillingPump;
- }
- }
- if(StarterAirTank<0){StarterAirTank=0;}
- if(StarterAirTank>50){StarterAirTank=50;}
- #Here is to put actual time in LastTime variable. This way the next frame, lasttime will be correct
- LastTime=ActualTime;
- setprop("systems/pneumatic/air-tank-psi",StarterAirTank);
- }
- init();
- # Backup Air Pump Animations
- var AirPumpLever = func {
- if (getprop("controls/pneumatic/backup-air-pump/power") == 1){
- if (getprop("controls/pneumatic/backup-air-pump/lever/position-norm") == 1
- or getprop("controls/pneumatic/backup-air-pump/lever/position-norm") == 0){
- doorsystem.leverexport();
- }
- }
- settimer(AirPumpLever, 1);
- }
- _setlistener("/sim/signals/fdm-initialized", AirPumpLever);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement