Advertisement
Guest User

Untitled

a guest
Oct 9th, 2015
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.80 KB | None | 0 0
  1. # ====================================
  2. # Viet Starter Motor
  3. # by Fabien Barbier Sept 2015
  4. # ammended by Didier Bourguet Oct 2015
  5. # ====================================
  6.  
  7. var FrequencyUpdate = 0.1; #0.1 loop refreching rate
  8. var MaxTankCapacity = 50;
  9. var LastTime = 0; #calculate the filling based on runing time
  10.  
  11. #Filling
  12. var FillingTime = 15 *60; #In seconds
  13. var FillingTimePump = 300;
  14. #Guessed that we need for about 5 minutes to manipulate the pump lever for about 5 minutes to fill the air tank
  15. var MaxThrottle = 2500; #Rpm
  16. var MaxPump = 125; #Rps
  17. var FillingRate = MaxTankCapacity/((MaxThrottle/60) * FillingTime);
  18. #Little miste from me : 2500 Rpm in sec = 2500/60
  19. var FillingRatePump = MaxTankCapacity/(MaxPump * FillingTime);
  20.  
  21. #draw off
  22. var StartTries = 4;
  23. var EmptyingTime = 8; #(In seconds)
  24. var EmptyingRate = 50/(StartTries * EmptyingTime);
  25.  
  26. #Loop creating
  27. var init = func(){
  28. var loop = func(){
  29. update();
  30. settimer(loop,FrequencyUpdate);
  31. }
  32. settimer(loop,0);
  33. #At initialization, the nest fonction loop, isn't launched, just declared.
  34. #this settimer on this ligne will be launched only once, start the loop
  35. }
  36.  
  37. var update = func(){
  38. var Rps = getprop("engines/engine/rpm")/60; # RPM property put in seconds
  39. var FillPump = 125;
  40. #Filling is 5 min, so 3 time less than compressor filling at full Rpm, so 3 x 41.66 = 125 Rps
  41. var StarterAirTank = getprop("systems/pneumatic/air-tank-psi");# initialised in -base file
  42. var StarterMotor = getprop("engines/engine/cranking");
  43. var PumpPower = getprop("controls/pneumatic/backup-air-pump/power");
  44. var ActualTime = getprop("sim/time/elapsed-sec"); #Elapsed time in seconds since sim strat
  45. var SpeedUp = getprop("sim/speed-up"); #This is simulation rate. Could be helpfull for filling the tank, without waiting 15 minutes
  46.  
  47. #Interval calculation
  48. var ElapsedTime = (ActualTime - LastTime) * SpeedUp;
  49. if(StarterMotor){ #as it's a boolean variable (1 or 0)
  50. #we don't need to write if(StarterMotor == 1)
  51. var Emptying = EmptyingRate *ElapsedTime;
  52. #print("Emptying:" ~ Emptying ~ " ElapsedTime:"~ElapsedTime);
  53. StarterAirTank = StarterAirTank - Emptying;
  54. }
  55. elsif(StarterAirTank<50){
  56. if(PumpPower){
  57. var AirFilling = Rps*FillingRate * ElapsedTime;
  58. var AirfillingPump = FillPump*FillingRate * ElapsedTime;
  59. #print("AirFilling:"~AirFilling);
  60. StarterAirTank = StarterAirTank + AirFilling + AirfillingPump;
  61. }
  62. }
  63. if(StarterAirTank<0){StarterAirTank=0;}
  64. if(StarterAirTank>50){StarterAirTank=50;}
  65.  
  66. #Here is to put actual time in LastTime variable. This way the next frame, lasttime will be correct
  67. LastTime=ActualTime;
  68. setprop("systems/pneumatic/air-tank-psi",StarterAirTank);
  69. }
  70. init();
  71.  
  72. # Backup Air Pump Animations
  73.  
  74. var AirPumpLever = func {
  75. if (getprop("controls/pneumatic/backup-air-pump/power") == 1){
  76. if (getprop("controls/pneumatic/backup-air-pump/lever/position-norm") == 1
  77. or getprop("controls/pneumatic/backup-air-pump/lever/position-norm") == 0){
  78. doorsystem.leverexport();
  79. }
  80. }
  81.  
  82. settimer(AirPumpLever, 1);
  83. }
  84. _setlistener("/sim/signals/fdm-initialized", AirPumpLever);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement