|
@@ -118,29 +118,29 @@ namespace Venus_RT.Modules.PMs
|
|
|
public ModuleName Module { get; }
|
|
|
public PMStatus Status { get; private set; }
|
|
|
|
|
|
- private readonly PMHomeRoutine _home;
|
|
|
- private readonly StartDryPumpRoutine _startDryPumpRoutine;
|
|
|
- private readonly StartTurboPumpRoutine _startTurboPumpRoutine;
|
|
|
- private readonly VentRoutine _ventRoutine;
|
|
|
- private readonly PumpDownRoutine _pumpRoutine;
|
|
|
- private readonly LoadLockVentRoutine _ventLoadLockRoutine;
|
|
|
- private readonly LoadLockPumpRoutine _pumpLoadLockRoutine;
|
|
|
- private readonly LoadLockPurgeRoutine _purgeLoadLockRoutine;
|
|
|
- private readonly LoadLockLeakCheckRoutine _loadLockLeakCheckRoutine;
|
|
|
- private readonly PMPurgeRoutine _purgeRoutine;
|
|
|
- private readonly PMGaslinePurgeRoutine _gaslinePurgeRoutine;
|
|
|
- private readonly PMLeakCheckRoutine _leakCheckRoutine;
|
|
|
- private readonly GasBoxLeakCheckRoutine _gasBoxLeakCheckRoutine;
|
|
|
- private readonly LLPlaceRoutine _llPlaceRoutine;
|
|
|
- private readonly LLPickRoutine _llPickRoutine;
|
|
|
- private readonly PMProcessRoutine _processRoutine;
|
|
|
- private readonly GasFlowRoutine _gasFlowRoutine;
|
|
|
- private readonly RFPowerSwitchRoutine _rfPowerRoutine;
|
|
|
- private readonly PMGasVerificationRoutine _gasVerificationRoutine;
|
|
|
- private readonly PMPartialPressureRoutine _pmPartialPressureRoutine;
|
|
|
- private readonly PMVATPerformanceRoutine _pmVATPerformanceRoutine;
|
|
|
-
|
|
|
- //private readonly PMControlPressureRoutine _pmControlPressureRoutine;
|
|
|
+ private readonly PMHomeRoutine _home;
|
|
|
+ private readonly StartDryPumpRoutine _startDryPumpRoutine;
|
|
|
+ private readonly StartTurboPumpRoutine _startTurboPumpRoutine;
|
|
|
+ private readonly VentRoutine _ventRoutine;
|
|
|
+ private readonly PumpDownRoutine _pumpRoutine;
|
|
|
+ private readonly LoadLockVentRoutine _ventLoadLockRoutine;
|
|
|
+ private readonly LoadLockPumpRoutine _pumpLoadLockRoutine;
|
|
|
+ private readonly LoadLockPurgeRoutine _purgeLoadLockRoutine;
|
|
|
+ private readonly LoadLockLeakCheckRoutine _loadLockLeakCheckRoutine;
|
|
|
+ private readonly PMPurgeRoutine _purgeRoutine;
|
|
|
+ private readonly PMGaslinePurgeRoutine _gaslinePurgeRoutine;
|
|
|
+ private readonly PMLeakCheckRoutine _leakCheckRoutine;
|
|
|
+ private readonly GasBoxLeakCheckRoutine _gasBoxLeakCheckRoutine;
|
|
|
+ private readonly LLPlaceRoutine _llPlaceRoutine;
|
|
|
+ private readonly LLPickRoutine _llPickRoutine;
|
|
|
+ private readonly PMProcessRoutine _processRoutine;
|
|
|
+ private readonly GasFlowRoutine _gasFlowRoutine;
|
|
|
+ private readonly RFPowerSwitchRoutine _rfPowerRoutine;
|
|
|
+ private readonly PMGasVerificationRoutine _gasVerificationRoutine;
|
|
|
+ private readonly PMPartialPressureRoutine _pmPartialPressureRoutine;
|
|
|
+ private readonly PMVATPerformanceRoutine _pmVATPerformanceRoutine;
|
|
|
+
|
|
|
+ private readonly PMHeatRoutine _pmHeatRoutine;
|
|
|
|
|
|
|
|
|
|
|
@@ -202,11 +202,11 @@ namespace Venus_RT.Modules.PMs
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
- switch((PMState)fsm.State)
|
|
|
+ switch ((PMState)fsm.State)
|
|
|
{
|
|
|
case PMState.Processing:
|
|
|
case PMState.Clean:
|
|
|
- if(Singleton<RouteManager>.Instance.IsAutoMode && IsOnline)
|
|
|
+ if (Singleton<RouteManager>.Instance.IsAutoMode && IsOnline)
|
|
|
{
|
|
|
if (_dictRecipeTime.ContainsKey(_processRoutine.currentRecipeResult.RecipeName))
|
|
|
{
|
|
@@ -227,7 +227,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
public bool IsSlitDoorClose => _chamber.CheckSlitDoorClose();
|
|
|
public bool LiftPinIsDown => _chamber.LiftPinIsDown;
|
|
|
public bool LiftPinIsUp => _chamber.LiftPinIsUp;
|
|
|
- public double ChamberPressure => _chamber.ChamberPressure;
|
|
|
+ public double ChamberPressure => _chamber.ChamberPressure;
|
|
|
|
|
|
public bool IsVac => _chamber.IsVAC;
|
|
|
public bool IsAtm => _chamber.IsATM;
|
|
@@ -242,7 +242,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
{
|
|
|
if (!fsm.FindTransition(fsm.State, msg))
|
|
|
{
|
|
|
- EV.PostWarningLog(Module.ToString(), eEvent.WARN_State, $"{Module} is in { (PMState)fsm.State} state,can not do {(MSG)msg}");
|
|
|
+ EV.PostWarningLog(Module.ToString(), eEvent.WARN_State, $"{Module} is in {(PMState)fsm.State} state,can not do {(MSG)msg}");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -250,7 +250,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public int Invoke(string function, params object[] args)
|
|
|
{
|
|
|
switch (function)
|
|
@@ -402,7 +402,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
// return false;
|
|
|
//}
|
|
|
|
|
|
- if(!IsInclude)
|
|
|
+ if (!IsInclude)
|
|
|
{
|
|
|
LOG.Write(eEvent.WARN_PM, Module, $"{Module} is excluded,can not be put online");
|
|
|
return false;
|
|
@@ -426,67 +426,67 @@ namespace Venus_RT.Modules.PMs
|
|
|
|
|
|
public PMEntity(ModuleName module)
|
|
|
{
|
|
|
- Module = module;
|
|
|
- _chamber = DEVICE.GetDevice<JetPMBase>(Module.ToString());
|
|
|
- _home = new PMHomeRoutine(_chamber);
|
|
|
- _startDryPumpRoutine = new StartDryPumpRoutine(_chamber);
|
|
|
- _startTurboPumpRoutine = new StartTurboPumpRoutine(_chamber);
|
|
|
- _ventRoutine = new VentRoutine(_chamber);
|
|
|
- _pumpRoutine = new PumpDownRoutine(_chamber);
|
|
|
- _ventLoadLockRoutine = new LoadLockVentRoutine(_chamber);
|
|
|
- _pumpLoadLockRoutine = new LoadLockPumpRoutine(_chamber);
|
|
|
- _purgeLoadLockRoutine = new LoadLockPurgeRoutine(_chamber);
|
|
|
+ Module = module;
|
|
|
+ _chamber = DEVICE.GetDevice<JetPMBase>(Module.ToString());
|
|
|
+ _home = new PMHomeRoutine(_chamber);
|
|
|
+ _startDryPumpRoutine = new StartDryPumpRoutine(_chamber);
|
|
|
+ _startTurboPumpRoutine = new StartTurboPumpRoutine(_chamber);
|
|
|
+ _ventRoutine = new VentRoutine(_chamber);
|
|
|
+ _pumpRoutine = new PumpDownRoutine(_chamber);
|
|
|
+ _ventLoadLockRoutine = new LoadLockVentRoutine(_chamber);
|
|
|
+ _pumpLoadLockRoutine = new LoadLockPumpRoutine(_chamber);
|
|
|
+ _purgeLoadLockRoutine = new LoadLockPurgeRoutine(_chamber);
|
|
|
_loadLockLeakCheckRoutine = new LoadLockLeakCheckRoutine(_chamber);
|
|
|
- _purgeRoutine = new PMPurgeRoutine(_chamber);
|
|
|
- _gaslinePurgeRoutine = new PMGaslinePurgeRoutine(_chamber);
|
|
|
- _leakCheckRoutine = new PMLeakCheckRoutine(_chamber);
|
|
|
+ _purgeRoutine = new PMPurgeRoutine(_chamber);
|
|
|
+ _gaslinePurgeRoutine = new PMGaslinePurgeRoutine(_chamber);
|
|
|
+ _leakCheckRoutine = new PMLeakCheckRoutine(_chamber);
|
|
|
_gasBoxLeakCheckRoutine = new GasBoxLeakCheckRoutine(_chamber);
|
|
|
- _llPlaceRoutine = new LLPlaceRoutine(_chamber);
|
|
|
- _llPickRoutine = new LLPickRoutine(_chamber, _ventLoadLockRoutine);
|
|
|
- _processRoutine = new PMProcessRoutine(_chamber, _pumpRoutine);
|
|
|
- _gasFlowRoutine = new GasFlowRoutine(_chamber);
|
|
|
- _rfPowerRoutine = new RFPowerSwitchRoutine(_chamber, true);
|
|
|
+ _llPlaceRoutine = new LLPlaceRoutine(_chamber);
|
|
|
+ _llPickRoutine = new LLPickRoutine(_chamber, _ventLoadLockRoutine);
|
|
|
+ _processRoutine = new PMProcessRoutine(_chamber, _pumpRoutine);
|
|
|
+ _gasFlowRoutine = new GasFlowRoutine(_chamber);
|
|
|
+ _rfPowerRoutine = new RFPowerSwitchRoutine(_chamber, true);
|
|
|
_gasVerificationRoutine = new PMGasVerificationRoutine(_chamber, _pumpRoutine);
|
|
|
- _pmPartialPressureRoutine=new PMPartialPressureRoutine(_chamber);
|
|
|
+ _pmPartialPressureRoutine = new PMPartialPressureRoutine(_chamber);
|
|
|
_pmVATPerformanceRoutine = new PMVATPerformanceRoutine(_chamber);
|
|
|
//_pmControlPressureRoutine = new PMControlPressureRoutine(_chamber);
|
|
|
|
|
|
-
|
|
|
+ _pmHeatRoutine = new PMHeatRoutine(_chamber);
|
|
|
fsm = new StateMachine<PMEntity>(Module.ToString(), (int)PMState.Init, 50);
|
|
|
|
|
|
//Idle
|
|
|
- EnterExitTransition((int)PMState.Idle, FnIdle, (int)FSM_MSG.NONE, null);
|
|
|
- EnterExitTransition<PMState, FSM_MSG>(PMState.Error, fEnterError, FSM_MSG.NONE, null);
|
|
|
+ EnterExitTransition((int)PMState.Idle, FnIdle, (int)FSM_MSG.NONE, null);
|
|
|
+ EnterExitTransition<PMState, FSM_MSG>(PMState.Error, fEnterError, FSM_MSG.NONE, null);
|
|
|
+
|
|
|
+ EnterExitTransition<PMState, FSM_MSG>(PMState.ReadyForPick, fnEnterPickReady, FSM_MSG.NONE, fnExitPickReady);
|
|
|
+ EnterExitTransition<PMState, FSM_MSG>(PMState.ReadyForPlace, fnEnterPlaceReady, FSM_MSG.NONE, fnExitPlaceReady);
|
|
|
+ EnterExitTransition<PMState, FSM_MSG>(PMState.DropDownReady, fnEnterDropDownReady, FSM_MSG.NONE, fnExitDropDownReady);
|
|
|
+ EnterExitTransition<PMState, FSM_MSG>(PMState.LiftUpReady, fnEnterLiftUpReady, FSM_MSG.NONE, fnExitLiftUpReady);
|
|
|
|
|
|
- EnterExitTransition<PMState, FSM_MSG>(PMState.ReadyForPick, fnEnterPickReady, FSM_MSG.NONE, fnExitPickReady);
|
|
|
- EnterExitTransition<PMState, FSM_MSG>(PMState.ReadyForPlace, fnEnterPlaceReady, FSM_MSG.NONE, fnExitPlaceReady);
|
|
|
- EnterExitTransition<PMState, FSM_MSG>(PMState.DropDownReady, fnEnterDropDownReady, FSM_MSG.NONE, fnExitDropDownReady);
|
|
|
- EnterExitTransition<PMState, FSM_MSG>(PMState.LiftUpReady, fnEnterLiftUpReady, FSM_MSG.NONE, fnExitLiftUpReady);
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
//Home
|
|
|
//EnterExitTransition((int)PMState.Homing, FnEnterHome, (int)FSM_MSG.NONE, FnExitHome);
|
|
|
|
|
|
- AnyStateTransition(MSG.Error, FnError, PMState.Error);
|
|
|
- AnyStateTransition(MSG.Online, FnSetOnline, FSM_STATE.SAME);
|
|
|
- AnyStateTransition(MSG.Offline, FnSetOffline, FSM_STATE.SAME);
|
|
|
+ AnyStateTransition(MSG.Error, FnError, PMState.Error);
|
|
|
+ AnyStateTransition(MSG.Online, FnSetOnline, FSM_STATE.SAME);
|
|
|
+ AnyStateTransition(MSG.Offline, FnSetOffline, FSM_STATE.SAME);
|
|
|
|
|
|
- Transition(PMState.Init, FSM_MSG.TIMER, FnTimeout, PMState.Init);
|
|
|
- Transition(PMState.Init, MSG.Home, FnStartHome, PMState.Homing);
|
|
|
- Transition(PMState.Error, MSG.Home, FnStartHome, PMState.Homing);
|
|
|
- Transition(PMState.Idle, MSG.Home, FnStartHome, PMState.Homing);
|
|
|
- Transition(PMState.Homing, MSG.Home, FnStartHome, PMState.Homing);
|
|
|
- Transition(PMState.Homing, FSM_MSG.TIMER, FnMonitorHome, PMState.Idle);
|
|
|
+ Transition(PMState.Init, FSM_MSG.TIMER, FnTimeout, PMState.Init);
|
|
|
+ Transition(PMState.Init, MSG.Home, FnStartHome, PMState.Homing);
|
|
|
+ Transition(PMState.Error, MSG.Home, FnStartHome, PMState.Homing);
|
|
|
+ Transition(PMState.Idle, MSG.Home, FnStartHome, PMState.Homing);
|
|
|
+ Transition(PMState.Homing, MSG.Home, FnStartHome, PMState.Homing);
|
|
|
+ Transition(PMState.Homing, FSM_MSG.TIMER, FnMonitorHome, PMState.Idle);
|
|
|
|
|
|
- Transition(PMState.Idle, FSM_MSG.TIMER, FnIdleTimeout, PMState.Idle);
|
|
|
- Transition(PMState.Error, FSM_MSG.TIMER, FnErrorTimeout, PMState.Error);
|
|
|
+ Transition(PMState.Idle, FSM_MSG.TIMER, FnIdleTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.Error, FSM_MSG.TIMER, FnErrorTimeout, PMState.Error);
|
|
|
|
|
|
//Launch DryPump sequence
|
|
|
- Transition(PMState.Idle, MSG.LaunchPump, FnLaunchPump, PMState.LaunchingPump);
|
|
|
- Transition(PMState.LaunchingPump, FSM_MSG.TIMER, FnLaunchPumpTimeout, PMState.Idle);
|
|
|
- Transition(PMState.LaunchingPump, MSG.Abort, FnAbortStartPumping, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.LaunchPump, FnLaunchPump, PMState.LaunchingPump);
|
|
|
+ Transition(PMState.LaunchingPump, FSM_MSG.TIMER, FnLaunchPumpTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.LaunchingPump, MSG.Abort, FnAbortStartPumping, PMState.Idle);
|
|
|
|
|
|
//Launch TurboPump sequence
|
|
|
Transition(PMState.Idle, MSG.LaunchTurboPump, FnLaunchTurboPump, PMState.LaunchingTurboPump);
|
|
@@ -494,148 +494,150 @@ namespace Venus_RT.Modules.PMs
|
|
|
Transition(PMState.LaunchingTurboPump, MSG.Abort, FnAbortStartTurboPumping, PMState.Idle);
|
|
|
|
|
|
//vent sequence
|
|
|
- Transition(PMState.Idle, MSG.Vent, FnStartVent, PMState.Venting);
|
|
|
- Transition(PMState.Pumping, MSG.Vent, FnVentToPumping, PMState.Venting);
|
|
|
- Transition(PMState.Venting, FSM_MSG.TIMER, FnVentTimeout, PMState.Idle);
|
|
|
- Transition(PMState.Venting, MSG.Abort, FnAbortVent, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.Vent, FnStartVent, PMState.Venting);
|
|
|
+ Transition(PMState.Pumping, MSG.Vent, FnVentToPumping, PMState.Venting);
|
|
|
+ Transition(PMState.Venting, FSM_MSG.TIMER, FnVentTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.Venting, MSG.Abort, FnAbortVent, PMState.Idle);
|
|
|
|
|
|
//Pump sequence
|
|
|
- Transition(PMState.Idle, MSG.Pump, FnStartPumpDown, PMState.Pumping);
|
|
|
- Transition(PMState.Venting, MSG.Pump, FnVentToPumping, PMState.Pumping);
|
|
|
- Transition(PMState.Pumping, FSM_MSG.TIMER, FnPumpDownTimeout, PMState.Idle);
|
|
|
- Transition(PMState.Pumping, MSG.Abort, FnAbortPumping, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.Pump, FnStartPumpDown, PMState.Pumping);
|
|
|
+ Transition(PMState.Venting, MSG.Pump, FnVentToPumping, PMState.Pumping);
|
|
|
+ Transition(PMState.Pumping, FSM_MSG.TIMER, FnPumpDownTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.Pumping, MSG.Abort, FnAbortPumping, PMState.Idle);
|
|
|
|
|
|
//Pump Loadlock sequence
|
|
|
- Transition(PMState.Idle, MSG.PumpLoadLock, FnStartPumpDownLoadLock, PMState.PumpingLoadLock);
|
|
|
- Transition(PMState.VentingLoadLock, MSG.PumpLoadLock, FnVentLoadLockToPumpingLoadLock, PMState.PumpingLoadLock);
|
|
|
- Transition(PMState.PumpingLoadLock, FSM_MSG.TIMER, FnPumpDownLoadLockTimeout, PMState.Idle);
|
|
|
- Transition(PMState.PumpingLoadLock, MSG.Abort, FnAbortPumpingLoadLock, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.PumpLoadLock, FnStartPumpDownLoadLock, PMState.PumpingLoadLock);
|
|
|
+ Transition(PMState.VentingLoadLock, MSG.PumpLoadLock, FnVentLoadLockToPumpingLoadLock, PMState.PumpingLoadLock);
|
|
|
+ Transition(PMState.PumpingLoadLock, FSM_MSG.TIMER, FnPumpDownLoadLockTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.PumpingLoadLock, MSG.Abort, FnAbortPumpingLoadLock, PMState.Idle);
|
|
|
|
|
|
//Vent Loadlock sequence
|
|
|
- Transition(PMState.Idle, MSG.VentLoadLock, FnStartVentLoadlock, PMState.VentingLoadLock);
|
|
|
- Transition(PMState.PumpingLoadLock, MSG.VentLoadLock, FnPumpingLoadLockToVentLoadLock, PMState.VentingLoadLock);
|
|
|
- Transition(PMState.VentingLoadLock, FSM_MSG.TIMER, FnVentLoadLockTimeout, PMState.Idle);
|
|
|
- Transition(PMState.VentingLoadLock, MSG.Abort, FnAbortVentLoadLock, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.VentLoadLock, FnStartVentLoadlock, PMState.VentingLoadLock);
|
|
|
+ Transition(PMState.PumpingLoadLock, MSG.VentLoadLock, FnPumpingLoadLockToVentLoadLock, PMState.VentingLoadLock);
|
|
|
+ Transition(PMState.VentingLoadLock, FSM_MSG.TIMER, FnVentLoadLockTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.VentingLoadLock, MSG.Abort, FnAbortVentLoadLock, PMState.Idle);
|
|
|
|
|
|
// Purge LoadLock sequence
|
|
|
- Transition(PMState.Idle, MSG.PurgeLoadLock, FnStartPurgeLoadlock, PMState.PurgingLoadLock);
|
|
|
- Transition(PMState.PurgingLoadLock, FSM_MSG.TIMER, FnPurgeLoadLockTimeout, PMState.Idle);
|
|
|
- Transition(PMState.PurgingLoadLock, MSG.Abort, FnAbortPurgeLoadLock, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.PurgeLoadLock, FnStartPurgeLoadlock, PMState.PurgingLoadLock);
|
|
|
+ Transition(PMState.PurgingLoadLock, FSM_MSG.TIMER, FnPurgeLoadLockTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.PurgingLoadLock, MSG.Abort, FnAbortPurgeLoadLock, PMState.Idle);
|
|
|
|
|
|
//LoadLock Leak check sequence
|
|
|
- Transition(PMState.Idle, MSG.LoadLockLeakCheck, FnStartLoadLockLeakCheck, PMState.LoadLockLeakCheck);
|
|
|
- Transition(PMState.LoadLockLeakCheck, FSM_MSG.TIMER, FnLoadLockLeakCheckTimeout, PMState.Idle);
|
|
|
- Transition(PMState.LoadLockLeakCheck, MSG.Abort, FnAbortLoadLockLeakCheck, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.LoadLockLeakCheck, FnStartLoadLockLeakCheck, PMState.LoadLockLeakCheck);
|
|
|
+ Transition(PMState.LoadLockLeakCheck, FSM_MSG.TIMER, FnLoadLockLeakCheckTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.LoadLockLeakCheck, MSG.Abort, FnAbortLoadLockLeakCheck, PMState.Idle);
|
|
|
|
|
|
// PM Purge sequence
|
|
|
- Transition(PMState.Idle, MSG.CyclePurge, FnStartPurge, PMState.Purging);
|
|
|
- Transition(PMState.Purging, FSM_MSG.TIMER, FnPurgeTimeout, PMState.Idle);
|
|
|
- Transition(PMState.Purging, MSG.Abort, FnAbortPurge, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.CyclePurge, FnStartPurge, PMState.Purging);
|
|
|
+ Transition(PMState.Purging, FSM_MSG.TIMER, FnPurgeTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.Purging, MSG.Abort, FnAbortPurge, PMState.Idle);
|
|
|
|
|
|
// PM GasLine Purge sequence
|
|
|
- Transition(PMState.Idle, MSG.GasLinePurge, FnStartGasLinePurge, PMState.GasLinePurge);
|
|
|
- Transition(PMState.GasLinePurge, FSM_MSG.TIMER, FnGasLinePurgeTimeout, PMState.Idle);
|
|
|
- Transition(PMState.GasLinePurge, MSG.Abort, FnAbortGasLinePurge, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.GasLinePurge, FnStartGasLinePurge, PMState.GasLinePurge);
|
|
|
+ Transition(PMState.GasLinePurge, FSM_MSG.TIMER, FnGasLinePurgeTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.GasLinePurge, MSG.Abort, FnAbortGasLinePurge, PMState.Idle);
|
|
|
|
|
|
//PM Leak check sequence
|
|
|
- Transition(PMState.Idle, MSG.LeakCheck, FnStartPMLeakCheck, PMState.LeakCheck);
|
|
|
- Transition(PMState.LeakCheck, FSM_MSG.TIMER, FnPMLeakCheckTimeout, PMState.Idle);
|
|
|
- Transition(PMState.LeakCheck, MSG.Abort, FnAbortPMLeakCheck, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.LeakCheck, FnStartPMLeakCheck, PMState.LeakCheck);
|
|
|
+ Transition(PMState.LeakCheck, FSM_MSG.TIMER, FnPMLeakCheckTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.LeakCheck, MSG.Abort, FnAbortPMLeakCheck, PMState.Idle);
|
|
|
|
|
|
//PM GasBox Leak check sequence
|
|
|
- Transition(PMState.Idle, MSG.GasLeakCheck, FnStartGasBoxLeakCheck, PMState.GasBoxLeakCheck);
|
|
|
- Transition(PMState.GasBoxLeakCheck, FSM_MSG.TIMER, FnGasBoxLeakCheckTimeout, PMState.Idle);
|
|
|
- Transition(PMState.GasBoxLeakCheck, MSG.Abort, FnAbortGasBoxLeakCheck, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.GasLeakCheck, FnStartGasBoxLeakCheck, PMState.GasBoxLeakCheck);
|
|
|
+ Transition(PMState.GasBoxLeakCheck, FSM_MSG.TIMER, FnGasBoxLeakCheckTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.GasBoxLeakCheck, MSG.Abort, FnAbortGasBoxLeakCheck, PMState.Idle);
|
|
|
|
|
|
|
|
|
// PlaceWafer from LoadLock Arm sequence
|
|
|
- Transition(PMState.Idle, MSG.LLPlace, FnStartLLPlace, PMState.LLPlacing);
|
|
|
- Transition(PMState.LLPlacing, FSM_MSG.TIMER, FnLLPlaceTimeout, PMState.Idle);
|
|
|
- Transition(PMState.LLPlacing, MSG.Abort, FnAbortLLPlace, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.LLPlace, FnStartLLPlace, PMState.LLPlacing);
|
|
|
+ Transition(PMState.LLPlacing, FSM_MSG.TIMER, FnLLPlaceTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.LLPlacing, MSG.Abort, FnAbortLLPlace, PMState.Idle);
|
|
|
|
|
|
// PickWafer to LoadLock Arm sequence
|
|
|
- Transition(PMState.Idle, MSG.LLPick, FnStartLLPick, PMState.LLPicking);
|
|
|
- Transition(PMState.LLPicking, FSM_MSG.TIMER, FnLLPickTimeout, PMState.Idle);
|
|
|
- Transition(PMState.LLPicking, MSG.Abort, FnAbortLLPick, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.LLPick, FnStartLLPick, PMState.LLPicking);
|
|
|
+ Transition(PMState.LLPicking, FSM_MSG.TIMER, FnLLPickTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.LLPicking, MSG.Abort, FnAbortLLPick, PMState.Idle);
|
|
|
|
|
|
// Process
|
|
|
- Transition(PMState.Idle, MSG.RunRecipe, FnRunRecipe, PMState.Processing);
|
|
|
- Transition(PMState.Processing, FSM_MSG.TIMER, FnProcessTimeout, PMState.Idle);
|
|
|
- Transition(PMState.Processing, MSG.Abort, FnAbortProcess, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.RunRecipe, FnRunRecipe, PMState.Processing);
|
|
|
+ Transition(PMState.Processing, FSM_MSG.TIMER, FnProcessTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.Processing, MSG.Abort, FnAbortProcess, PMState.Idle);
|
|
|
|
|
|
// Clean
|
|
|
- Transition(PMState.Idle, MSG.Clean, FnRunRecipe, PMState.Clean);
|
|
|
- Transition(PMState.Clean, FSM_MSG.TIMER, FnProcessTimeout, PMState.Idle);
|
|
|
- Transition(PMState.Clean, MSG.Abort, FnAbortProcess, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.Clean, FnRunRecipe, PMState.Clean);
|
|
|
+ Transition(PMState.Clean, FSM_MSG.TIMER, FnProcessTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.Clean, MSG.Abort, FnAbortProcess, PMState.Idle);
|
|
|
|
|
|
// Gas Flow sequence
|
|
|
- Transition(PMState.Idle, MSG.GasFlow, FnStartGasFlow, PMState.GasFlowing);
|
|
|
- Transition(PMState.GasFlowing, MSG.GasFlow, FnAbortGasFlow, PMState.Idle);
|
|
|
- Transition(PMState.GasFlowing, FSM_MSG.TIMER, FnGasFlowTimeout, PMState.Idle);
|
|
|
- Transition(PMState.GasFlowing, MSG.StopGasFlow, FnStopGasFlow, PMState.Idle);
|
|
|
- Transition(PMState.GasFlowing, MSG.Abort, FnAbortGasFlow, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.GasFlow, FnStartGasFlow, PMState.GasFlowing);
|
|
|
+ Transition(PMState.GasFlowing, MSG.GasFlow, FnAbortGasFlow, PMState.Idle);
|
|
|
+ Transition(PMState.GasFlowing, FSM_MSG.TIMER, FnGasFlowTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.GasFlowing, MSG.StopGasFlow, FnStopGasFlow, PMState.Idle);
|
|
|
+ Transition(PMState.GasFlowing, MSG.Abort, FnAbortGasFlow, PMState.Idle);
|
|
|
|
|
|
//RF Power sequence
|
|
|
- Transition(PMState.Idle, MSG.RfPower, FnStartRfPower, PMState.RfPowering);
|
|
|
- Transition(PMState.GasFlowing, MSG.RfPower, FnStartRfPower, PMState.RfPowering);
|
|
|
- Transition(PMState.RfPowering, FSM_MSG.TIMER, FnRfPowerTimeout, PMState.Idle);
|
|
|
- Transition(PMState.RfPowering, MSG.Abort, FnAbortRfPower, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.RfPower, FnStartRfPower, PMState.RfPowering);
|
|
|
+ Transition(PMState.GasFlowing, MSG.RfPower, FnStartRfPower, PMState.RfPowering);
|
|
|
+ Transition(PMState.RfPowering, FSM_MSG.TIMER, FnRfPowerTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.RfPowering, MSG.Abort, FnAbortRfPower, PMState.Idle);
|
|
|
|
|
|
//MFC verification
|
|
|
- Transition(PMState.Idle, MSG.MFCVerification, FnStartMFCVerification, PMState.MFCVerification);
|
|
|
- Transition(PMState.MFCVerification, FSM_MSG.TIMER, FnMFCVerificationTimeout, PMState.Idle);
|
|
|
- Transition(PMState.MFCVerification, MSG.Abort, FnAbortMFCVerification, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.MFCVerification, FnStartMFCVerification, PMState.MFCVerification);
|
|
|
+ Transition(PMState.MFCVerification, FSM_MSG.TIMER, FnMFCVerificationTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.MFCVerification, MSG.Abort, FnAbortMFCVerification, PMState.Idle);
|
|
|
|
|
|
//////////////////////// Exchange Wafer with TM ///////////////////////////////////////////////////////
|
|
|
// Pick Wafer from PM
|
|
|
- Transition(PMState.Idle, MSG.PreparePick, FnStartPreparePick, PMState.PreparePick);
|
|
|
- Transition(PMState.PreparePick, MSG.Abort, FnAbortPreparePick, PMState.Idle);
|
|
|
- Transition(PMState.PreparePick, FSM_MSG.TIMER, FnPreparePickTimeout, PMState.ReadyForPick);
|
|
|
- Transition(PMState.PreparePick, MSG.PreparePick, null, PMState.PreparePick);
|
|
|
- Transition(PMState.ReadyForPick, MSG.Abort, FnAbortPick, PMState.Idle);
|
|
|
- Transition(PMState.ReadyForPick, MSG.DropDownWafer, FnStartDropDownWafer, PMState.DropDownWafer);
|
|
|
-
|
|
|
-
|
|
|
- Transition(PMState.ReadyForPick, MSG.PreparePick, null, PMState.ReadyForPick);
|
|
|
- Transition(PMState.DropDownWafer, FSM_MSG.TIMER, FnDropDownTimeout, PMState.DropDownReady);
|
|
|
- Transition(PMState.DropDownReady, MSG.PickReady, FnStartFinishPick, PMState.FinishPick);
|
|
|
- Transition(PMState.ReadyForPick, MSG.PickReady, FnStartFinishPick, PMState.FinishPick);
|
|
|
- Transition(PMState.FinishPick, FSM_MSG.TIMER, FnFinishPickTimeout, PMState.Idle);
|
|
|
-
|
|
|
-
|
|
|
+ Transition(PMState.Idle, MSG.PreparePick, FnStartPreparePick, PMState.PreparePick);
|
|
|
+ Transition(PMState.PreparePick, MSG.Abort, FnAbortPreparePick, PMState.Idle);
|
|
|
+ Transition(PMState.PreparePick, FSM_MSG.TIMER, FnPreparePickTimeout, PMState.ReadyForPick);
|
|
|
+ Transition(PMState.PreparePick, MSG.PreparePick, null, PMState.PreparePick);
|
|
|
+ Transition(PMState.ReadyForPick, MSG.Abort, FnAbortPick, PMState.Idle);
|
|
|
+ Transition(PMState.ReadyForPick, MSG.DropDownWafer, FnStartDropDownWafer, PMState.DropDownWafer);
|
|
|
+
|
|
|
+
|
|
|
+ Transition(PMState.ReadyForPick, MSG.PreparePick, null, PMState.ReadyForPick);
|
|
|
+ Transition(PMState.DropDownWafer, FSM_MSG.TIMER, FnDropDownTimeout, PMState.DropDownReady);
|
|
|
+ Transition(PMState.DropDownReady, MSG.PickReady, FnStartFinishPick, PMState.FinishPick);
|
|
|
+ Transition(PMState.ReadyForPick, MSG.PickReady, FnStartFinishPick, PMState.FinishPick);
|
|
|
+ Transition(PMState.FinishPick, FSM_MSG.TIMER, FnFinishPickTimeout, PMState.Idle);
|
|
|
+
|
|
|
+
|
|
|
// Place Wafer to PM
|
|
|
- Transition(PMState.Idle, MSG.PreparePlace, FnStartPreparePlace, PMState.PreparePlace);
|
|
|
- Transition(PMState.PreparePlace, MSG.Abort, FnAbortPreparePlace, PMState.Idle);
|
|
|
- Transition(PMState.PreparePlace, FSM_MSG.TIMER, FnPreparePlaceTimeout, PMState.ReadyForPlace);
|
|
|
- Transition(PMState.PreparePlace, MSG.PreparePlace, null, PMState.PreparePlace);
|
|
|
- Transition(PMState.ReadyForPlace, MSG.LiftUpWafer, FnStartLiftUpWafer, PMState.LiftUpWafer);
|
|
|
- Transition(PMState.LiftUpWafer, FSM_MSG.TIMER, FnLiftUpTimeout, PMState.LiftUpReady);
|
|
|
- Transition(PMState.LiftUpReady, MSG.PlaceReady, FnStartFinishPlace, PMState.FinishPlace);
|
|
|
- Transition(PMState.ReadyForPlace, MSG.PlaceReady, FnStartFinishPlace, PMState.FinishPlace);
|
|
|
- Transition(PMState.PreparePlace, MSG.Abort, FnAortPlace, PMState.Idle);
|
|
|
- Transition(PMState.ReadyForPlace, MSG.Abort, FnAortPlace, PMState.Idle);
|
|
|
- Transition(PMState.ReadyForPlace, MSG.PreparePlace, null, PMState.ReadyForPlace);
|
|
|
- Transition(PMState.LiftUpReady, MSG.Abort, FnAortPlace, PMState.Idle);
|
|
|
- Transition(PMState.FinishPlace, FSM_MSG.TIMER, FnFinishPlaceTimeout, PMState.Idle);
|
|
|
-
|
|
|
+ Transition(PMState.Idle, MSG.PreparePlace, FnStartPreparePlace, PMState.PreparePlace);
|
|
|
+ Transition(PMState.Heating, MSG.PreparePlace, FnStartPreparePlace, PMState.PreparePlace);
|
|
|
+ Transition(PMState.PreparePlace, MSG.Abort, FnAbortPreparePlace, PMState.Idle);
|
|
|
+ Transition(PMState.PreparePlace, FSM_MSG.TIMER, FnPreparePlaceTimeout, PMState.ReadyForPlace);
|
|
|
+ Transition(PMState.PreparePlace, MSG.PreparePlace, null, PMState.PreparePlace);
|
|
|
+ Transition(PMState.ReadyForPlace, MSG.LiftUpWafer, FnStartLiftUpWafer, PMState.LiftUpWafer);
|
|
|
+ Transition(PMState.LiftUpWafer, FSM_MSG.TIMER, FnLiftUpTimeout, PMState.LiftUpReady);
|
|
|
+ Transition(PMState.LiftUpReady, MSG.PlaceReady, FnStartFinishPlace, PMState.FinishPlace);
|
|
|
+ Transition(PMState.ReadyForPlace, MSG.PlaceReady, FnStartFinishPlace, PMState.FinishPlace);
|
|
|
+ Transition(PMState.PreparePlace, MSG.Abort, FnAortPlace, PMState.Idle);
|
|
|
+ Transition(PMState.ReadyForPlace, MSG.Abort, FnAortPlace, PMState.Idle);
|
|
|
+ Transition(PMState.ReadyForPlace, MSG.PreparePlace, null, PMState.ReadyForPlace);
|
|
|
+ Transition(PMState.LiftUpReady, MSG.Abort, FnAortPlace, PMState.Idle);
|
|
|
+ Transition(PMState.FinishPlace, FSM_MSG.TIMER, FnFinishPlaceTimeout, PMState.Idle);
|
|
|
+
|
|
|
|
|
|
// Swap Wafer With PM
|
|
|
- Transition(PMState.DropDownReady, MSG.PreparePlace, FnStartSwapPlace, PMState.PreparePlace);
|
|
|
- Transition(PMState.ReadyForPick, MSG.PreparePlace, FnStartPreparePlace, PMState.PreparePlace);
|
|
|
+ Transition(PMState.DropDownReady, MSG.PreparePlace, FnStartSwapPlace, PMState.PreparePlace);
|
|
|
+ Transition(PMState.ReadyForPick, MSG.PreparePlace, FnStartPreparePlace, PMState.PreparePlace);
|
|
|
|
|
|
- Transition(PMState.Idle, MSG.PartialPressure, FnStartPartialPressure, PMState.PartialPressureTesting);
|
|
|
- Transition(PMState.PartialPressureTesting, FSM_MSG.TIMER, FnPartialPressureTimeout, PMState.Idle);
|
|
|
- Transition(PMState.PartialPressureTesting, MSG.Abort, FnAbortPartialPressure, PMState.Idle);
|
|
|
- Transition(PMState.Idle, MSG.VATPerformance, FnStartVATPerformance, PMState.VATPerformanceTesting);
|
|
|
- Transition(PMState.VATPerformanceTesting, FSM_MSG.TIMER, FnVATPerformanceTimeout, PMState.Idle);
|
|
|
- Transition(PMState.VATPerformanceTesting, MSG.Abort, FnAbortVATPerformance, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.PartialPressure, FnStartPartialPressure, PMState.PartialPressureTesting);
|
|
|
+ Transition(PMState.PartialPressureTesting, FSM_MSG.TIMER, FnPartialPressureTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.PartialPressureTesting, MSG.Abort, FnAbortPartialPressure, PMState.Idle);
|
|
|
+ Transition(PMState.Idle, MSG.VATPerformance, FnStartVATPerformance, PMState.VATPerformanceTesting);
|
|
|
+ Transition(PMState.VATPerformanceTesting, FSM_MSG.TIMER, FnVATPerformanceTimeout, PMState.Idle);
|
|
|
+ Transition(PMState.VATPerformanceTesting, MSG.Abort, FnAbortVATPerformance, PMState.Idle);
|
|
|
|
|
|
+ Transition(PMState.Idle, MSG.Heat, FnStartHeat, PMState.Heating);
|
|
|
AnyStateTransition(FSM_MSG.TIMER, FnControlPressure, FSM_STATE.SAME);
|
|
|
Running = true;
|
|
|
|
|
|
WaferManager.Instance.SubscribeLocation(Module, 1);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
protected override bool Init()
|
|
|
{
|
|
|
DATA.Subscribe($"{Module}.FsmState", () => (((PMState)fsm.State)), SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
@@ -644,7 +646,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
|
|
|
DATA.Subscribe($"{Module}.LoadLockPurge.PurgeCounter", () => _purgeLoadLockRoutine.PurgeCounter, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
DATA.Subscribe($"{Module}.PartialPressureCounter", () => _pmPartialPressureRoutine.counter, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
- DATA.Subscribe($"{Module}.VATPerformanceCounter", () => _pmVATPerformanceRoutine.counter, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
+ DATA.Subscribe($"{Module}.VATPerformanceCounter", () => _pmVATPerformanceRoutine.counter, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
DATA.Subscribe($"{Module}.VATPerformanceResult", () => _pmVATPerformanceRoutine?.m_sb.ToString(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
|
|
|
DATA.Subscribe($"{Module}.PartialPressureResult", () => _pmPartialPressureRoutine?.m_sb.ToString(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
@@ -658,7 +660,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
DATA.Subscribe($"{Module}.IsInit", () => IsInit, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
DATA.Subscribe($"{Module}.IsOnline", () => _isOnline, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
|
|
|
- DATA.Subscribe($"{Module}.VentingFlag",()=>_ventRoutine.VentingFlag, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
+ DATA.Subscribe($"{Module}.VentingFlag", () => _ventRoutine.VentingFlag, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
//DATA.Subscribe($"{Module}.GetLeakCheckDatas", () => LeakCheckDataRecorder.GetAllLeakCheckData(Module.ToString()));
|
|
|
|
|
|
|
|
@@ -701,7 +703,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
|
|
|
OP.Subscribe($"{Module}.GasLinePurge", (cmd, args) => CheckToPostMessage((int)MSG.GasLinePurge));
|
|
|
|
|
|
- OP.Subscribe($"{Module}.ManualEndStep", (cmd, args) => ManualEndStep() );
|
|
|
+ OP.Subscribe($"{Module}.ManualEndStep", (cmd, args) => ManualEndStep());
|
|
|
|
|
|
OP.Subscribe($"{Module}.{RtOperation.Online}", (cmd, args) => CheckToPostMessage((int)MSG.Online));
|
|
|
OP.Subscribe($"{Module}.{RtOperation.Offline}", (cmd, args) => CheckToPostMessage((int)MSG.Offline));
|
|
@@ -711,8 +713,10 @@ namespace Venus_RT.Modules.PMs
|
|
|
OP.Subscribe($"{Module}.{RtOperation.Exclude}", (cmd, args) => FnSetExclude());
|
|
|
|
|
|
|
|
|
-
|
|
|
- LOG.PMErrorInterrupt += (pmname)=> PMErrorInterrupt(pmname);
|
|
|
+ if (ChamberType == JetChamber.Kepler2200A && ChamberType == JetChamber.Kepler2200B)
|
|
|
+ {
|
|
|
+ LOG.PMErrorInterrupt += (pmname) => PMErrorInterrupt(pmname);
|
|
|
+ }
|
|
|
|
|
|
return true;
|
|
|
}
|
|
@@ -978,7 +982,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
|
|
|
private bool FnStartPumpDownLoadLock(object[] param)
|
|
|
{
|
|
|
- return _pumpLoadLockRoutine.Start() == RState.Running;
|
|
|
+ return _pumpLoadLockRoutine.Start() == RState.Running;
|
|
|
}
|
|
|
|
|
|
private bool FnPumpDownLoadLockTimeout(object[] param)
|
|
@@ -1214,12 +1218,12 @@ namespace Venus_RT.Modules.PMs
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- if(ret == RState.End)
|
|
|
+ if (ret == RState.End)
|
|
|
{
|
|
|
_dictRecipeTime[_processRoutine.currentRecipeResult.RecipeName] = fsm.ElapsedTime;
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return false;
|
|
|
}
|
|
|
private bool FnAbortProcess(object[] param)
|
|
@@ -1275,7 +1279,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
private bool FnAbortRfPower(object[] param)
|
|
|
{
|
|
|
_rfPowerRoutine.Abort();
|
|
|
- if(_gasFlowRoutine._gasStatus)
|
|
|
+ if (_gasFlowRoutine._gasStatus)
|
|
|
{
|
|
|
_gasFlowRoutine.StopFlow();
|
|
|
}
|
|
@@ -1284,8 +1288,8 @@ namespace Venus_RT.Modules.PMs
|
|
|
|
|
|
private bool FnStartMFCVerification(object[] param)
|
|
|
{
|
|
|
- _gasVerificationRoutine.Init((string)param[0], Convert.ToDouble( param[1]), (int)param[2]);
|
|
|
- return _gasVerificationRoutine.Start(param) == RState.Running;
|
|
|
+ _gasVerificationRoutine.Init((string)param[0], Convert.ToDouble(param[1]), (int)param[2]);
|
|
|
+ return _gasVerificationRoutine.Start(param) == RState.Running;
|
|
|
}
|
|
|
|
|
|
private bool FnMFCVerificationTimeout(object[] param)
|
|
@@ -1305,33 +1309,33 @@ namespace Venus_RT.Modules.PMs
|
|
|
_gasVerificationRoutine.Abort();
|
|
|
return true;
|
|
|
}
|
|
|
- private bool FnControlPressure(object[] param)
|
|
|
+ private bool FnControlPressure(object[] param)
|
|
|
{
|
|
|
if (RouteManager.IsATMMode)
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- if (IsOnline == true && fsm.State!=(int)PMState.Processing && fsm.State!=(int)PMState.Clean)
|
|
|
+ if (IsOnline == true && fsm.State != (int)PMState.Processing && fsm.State != (int)PMState.Clean)
|
|
|
{
|
|
|
if (startControlPressureFlag == true)
|
|
|
{
|
|
|
startControlPressureFlag = false;
|
|
|
|
|
|
- if (_chamber.GetPVPosition()<= 0)
|
|
|
+ if (_chamber.GetPVPosition() <= 0)
|
|
|
{
|
|
|
LOG.Write(eEvent.WARN_PM, Module, $"{Module} control pressure fail,due to pendulum valve is not Open");
|
|
|
return false;
|
|
|
}
|
|
|
- if (_chamber.IsTurboPumpRunning==false)
|
|
|
+ if (_chamber.IsTurboPumpRunning == false)
|
|
|
{
|
|
|
LOG.Write(eEvent.WARN_PM, Module, $"{Module} control pressure fail,due to turbo pump is not Open");
|
|
|
return false;
|
|
|
}
|
|
|
_controlPressureSetPoint = SC.GetValue<int>($"{Module}.ControlPressureSetPoint");
|
|
|
_controlFlowSetPoint = SC.GetValue<int>($"{Module}.ControlPressureN2FlowSetPoint");
|
|
|
- _chamber.StartControlPressure(_controlPressureSetPoint, _controlFlowSetPoint);
|
|
|
- }
|
|
|
+ _chamber.StartControlPressure(_controlPressureSetPoint, _controlFlowSetPoint);
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1425,7 +1429,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
// return false;
|
|
|
//}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
return true;
|
|
|
}
|
|
@@ -1523,6 +1527,14 @@ namespace Venus_RT.Modules.PMs
|
|
|
_pmVATPerformanceRoutine.Abort();
|
|
|
return true;
|
|
|
}
|
|
|
+ private bool FnStartHeat(object[] param)
|
|
|
+ {
|
|
|
+ if (ChamberType == JetChamber.Kepler2200A || ChamberType == JetChamber.Kepler2200B)
|
|
|
+ {
|
|
|
+ _pmHeatRoutine.Start();
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
private void _debugRoutine()
|
|
@@ -1541,59 +1553,59 @@ namespace Venus_RT.Modules.PMs
|
|
|
{
|
|
|
PostMsg(MSG.Pump);
|
|
|
}
|
|
|
- else if(flag == 4)
|
|
|
+ else if (flag == 4)
|
|
|
{
|
|
|
PostMsg(MSG.PumpLoadLock);
|
|
|
}
|
|
|
- else if(flag == 5)
|
|
|
+ else if (flag == 5)
|
|
|
{
|
|
|
PostMsg(MSG.VentLoadLock);
|
|
|
}
|
|
|
- else if(flag == 6)
|
|
|
+ else if (flag == 6)
|
|
|
{
|
|
|
PostMsg(MSG.PurgeLoadLock);
|
|
|
}
|
|
|
- else if(flag == 7)
|
|
|
+ else if (flag == 7)
|
|
|
{
|
|
|
PostMsg(MSG.LaunchPump);
|
|
|
}
|
|
|
- else if(flag == 8)
|
|
|
+ else if (flag == 8)
|
|
|
{
|
|
|
PostMsg(MSG.LaunchTurboPump);
|
|
|
}
|
|
|
- else if(flag == 9)
|
|
|
+ else if (flag == 9)
|
|
|
{
|
|
|
PostMsg(MSG.LoadLockLeakCheck);
|
|
|
}
|
|
|
- else if(flag == 10)
|
|
|
+ else if (flag == 10)
|
|
|
{
|
|
|
PostMsg(MSG.CyclePurge);
|
|
|
}
|
|
|
- else if(flag == 11)
|
|
|
+ else if (flag == 11)
|
|
|
{
|
|
|
PostMsg(MSG.GasLinePurge);
|
|
|
}
|
|
|
- else if(flag == 12)
|
|
|
+ else if (flag == 12)
|
|
|
{
|
|
|
PostMsg(MSG.LeakCheck);
|
|
|
}
|
|
|
- else if(flag == 13)
|
|
|
+ else if (flag == 13)
|
|
|
{
|
|
|
PostMsg(MSG.GasLeakCheck);
|
|
|
}
|
|
|
- else if(flag == 14)
|
|
|
+ else if (flag == 14)
|
|
|
{
|
|
|
PostMsg(MSG.LLPlace);
|
|
|
}
|
|
|
- else if(flag == 15)
|
|
|
+ else if (flag == 15)
|
|
|
{
|
|
|
PostMsg(MSG.LLPick);
|
|
|
}
|
|
|
- else if(flag == 16)
|
|
|
+ else if (flag == 16)
|
|
|
{
|
|
|
PostMsg(MSG.RunRecipe, "7777");
|
|
|
}
|
|
|
- else if(flag == 17)
|
|
|
+ else if (flag == 17)
|
|
|
{
|
|
|
PostMsg(MSG.MFCVerification, "MFC2", (double)50, 10);
|
|
|
}
|