|
@@ -98,6 +98,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
GasFlow,
|
|
|
StopGasFlow,
|
|
|
RfPower,
|
|
|
+ MFCVerification,
|
|
|
MaxMsg
|
|
|
}
|
|
|
|
|
@@ -124,6 +125,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
private readonly PMProcessRoutine _processRoutine;
|
|
|
private readonly GasFlowRoutine _gasFlowRoutine;
|
|
|
private readonly RFPowerSwitchRoutine _rfPowerRoutine;
|
|
|
+ private readonly PMGasVerificationRoutine _gasVerificationRoutine;
|
|
|
|
|
|
public bool IsIdle
|
|
|
{
|
|
@@ -207,6 +209,7 @@ namespace Venus_RT.Modules.PMs
|
|
|
_processRoutine = new PMProcessRoutine(_chamber, _pumpRoutine);
|
|
|
_gasFlowRoutine = new GasFlowRoutine(_chamber);
|
|
|
_rfPowerRoutine = new RFPowerSwitchRoutine(_chamber, true);
|
|
|
+ _gasVerificationRoutine = new PMGasVerificationRoutine(_chamber);
|
|
|
|
|
|
fsm = new StateMachine<PMEntity>(Module.ToString(), (int)PMState.Init, 50);
|
|
|
|
|
@@ -322,6 +325,11 @@ namespace Venus_RT.Modules.PMs
|
|
|
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);
|
|
|
+
|
|
|
Running = true;
|
|
|
|
|
|
WaferManager.Instance.SubscribeLocation(ModuleName.PMA, 1);
|
|
@@ -829,6 +837,30 @@ namespace Venus_RT.Modules.PMs
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ private bool FnStartMFCVerification(object[] param)
|
|
|
+ {
|
|
|
+ _gasVerificationRoutine.Init((string)param[0], (double)param[1], (int)param[2]);
|
|
|
+ return _gasVerificationRoutine.Start(param) == RState.Running;
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool FnMFCVerificationTimeout(object[] param)
|
|
|
+ {
|
|
|
+ RState ret = _gasVerificationRoutine.Monitor();
|
|
|
+ if (ret == RState.Failed || ret == RState.Timeout)
|
|
|
+ {
|
|
|
+ PostMsg(MSG.Error);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return ret == RState.End;
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool FnAbortMFCVerification(object[] param)
|
|
|
+ {
|
|
|
+ _gasVerificationRoutine.Abort();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
private void _debugRoutine()
|
|
|
{
|
|
|
int flag = 0;
|
|
@@ -897,6 +929,10 @@ namespace Venus_RT.Modules.PMs
|
|
|
{
|
|
|
PostMsg(MSG.RunRecipe, "7777");
|
|
|
}
|
|
|
+ else if(flag == 17)
|
|
|
+ {
|
|
|
+ PostMsg(MSG.MFCVerification, "MFC2", (double)50, 10);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|