Kaynağa Gözat

Purge Counter.

sangwq 2 yıl önce
ebeveyn
işleme
e58407db65

+ 1 - 1
Venus/Venus_RT/Devices/EPD/EPDClient.cs

@@ -125,7 +125,7 @@ namespace Venus_RT.Devices.EPD
             }
             else if(_epdIdle.M)
             {
-                if(_heartBeatTimer.ElapsedMilliseconds > 5000)
+                if(_heartBeatTimer.ElapsedMilliseconds > 30000)
                 {
                     if (!_isHeartBeatReceived)
                     {

+ 10 - 1
Venus/Venus_RT/Modules/PMs/LoadLockPurgeRoutine.cs

@@ -21,6 +21,8 @@ namespace Venus_RT.Modules.PMs
             kEnd,
         }
 
+        public int PurgeCounter { get; private set; }
+
         private int _basePressureLL = 100;
         private int _purgeVentPressureLL = 10;
         private int _purgeCycleCounter = 30;
@@ -46,6 +48,7 @@ namespace Venus_RT.Modules.PMs
                 _purgeCycleCounter      = SC.GetValue<int>($"{Module}.Pump.LoadLockPurgeCycleCount");
                 _purgePumpTime          = SC.GetValue<int>($"{Module}.Pump.LoadLockPurgePumpTime");
 
+                PurgeCounter = 0;
                 return Runner.Start(Module, Name);
             }
             return RState.Failed;
@@ -60,7 +63,7 @@ namespace Venus_RT.Modules.PMs
                 .LoopRun((int)PurgeStep.kPurgeDelay_2,      HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, false),     _delay_1s)
                 .LoopRun((int)PurgeStep.kPurgePumpToBase,   HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true),   () => { return _chamber.LoadlockPressure < _basePressureLL; })
                 .LoopRun((int)PurgeStep.kPurgePumpDelay,    NullFun,                                                                _purgePumpTime * 1000)
-                .LoopEnd((int)PurgeStep.kPurgeEnd,          HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, false),  _delay_50ms)
+                .LoopEnd((int)PurgeStep.kPurgeEnd,          ClosePumpValve,                                                         _delay_50ms)
                 .End((int)PurgeStep.kEnd,                   NullFun,                                                                _delay_50ms);
                 
             return Runner.Status;
@@ -70,5 +73,11 @@ namespace Venus_RT.Modules.PMs
         {
             CloseAllValves();
         }
+
+        private bool ClosePumpValve()
+        {
+            _chamber.OpenValve(ValveType.LoadlockPumping, false);
+            return true;
+        }
     }
 }

+ 4 - 0
Venus/Venus_RT/Modules/PMs/PMGaslinePurgeRoutine.cs

@@ -35,6 +35,8 @@ namespace Venus_RT.Modules.PMs
             kEnd,
         }
 
+        public int PurgeCounter { get; private set; }
+
         private int _gasPurgeFlowTime = 5;
         private int _gasPurgePumpTime = 10;
         private int _gasPurgeCycleCount = 30;
@@ -66,6 +68,7 @@ namespace Venus_RT.Modules.PMs
 
                 PreTurnValves();
 
+                PurgeCounter = 0;
                 return Runner.Start(Module, Name);
             }
             return RState.Failed;
@@ -135,6 +138,7 @@ namespace Venus_RT.Modules.PMs
             _chamber.StopGas(3);
             _chamber.StopGas(4);
 
+            PurgeCounter++;
             return true;
         }
     }

+ 11 - 5
Venus/Venus_RT/Modules/PMs/PMPurgeRoutine.cs

@@ -23,6 +23,8 @@ namespace Venus_RT.Modules.PMs
             kEnd,
         }
 
+        public int PurgeCounter { get; private set; }
+
         private readonly int _forelinePressure = 200;
         private int _purgeVentPressure = 1000;
         private int _roughPumpDownPressure = 75;
@@ -37,10 +39,6 @@ namespace Venus_RT.Modules.PMs
 
         public RState Start(params object[] objs)
         {
-            var test1 = CheckLidLoadLock();
-            var test2 = CheckSlitDoor();
-            var test3 = CheckDryPump();
-            var test4 = CheckTurboPump();
             if (CheckLidLoadLock() &&
                 CheckSlitDoor() &&
                 CheckDryPump() &&
@@ -55,6 +53,7 @@ namespace Venus_RT.Modules.PMs
 
                 CloseValvesExceptN2Purge();
 
+                PurgeCounter = 0;
                 return Runner.Start(Module, Name);
             }
             return RState.Failed;
@@ -69,7 +68,7 @@ namespace Venus_RT.Modules.PMs
                 .LoopRun((int)PurgeStep.kFastPump,          StartFastPump,                                                              () => { return _chamber.ForelinePressure <= _forelinePressure; })
                 .LoopRun((int)PurgeStep.kOpenISOValve,      HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, true),      _delay_1s)
                 .LoopRun((int)PurgeStep.kRoughPump,         HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPurge, true),        _purgePumpTime * 1000)
-                .LoopEnd((int)PurgeStep.kCloseFastPump,     HOFs.WrapAction(_chamber.OpenValve, ValveType.FastPump, false),             _delay_1s)
+                .LoopEnd((int)PurgeStep.kCloseFastPump,     CloseFastPump,                                                              _delay_1s)
                 .Delay((int)PurgeStep.kPurgeDelay,          _delay_1s)
                 .End((int)PurgeStep.kEnd,                   FinalStep,                                                                  _delay_1s);
 
@@ -132,5 +131,12 @@ namespace Venus_RT.Modules.PMs
 
             return true;
         }
+
+        private bool CloseFastPump()
+        {
+            _chamber.OpenValve(ValveType.FastPump, false);
+            PurgeCounter++;
+            return true;
+        }
     }
 }