|
@@ -25,6 +25,12 @@ namespace PunkHPX8_RT.Modules.VpwCell
|
|
|
CheckLoopDO,
|
|
|
VacuumPrewet,
|
|
|
WaitVacuumPrewet,
|
|
|
+ VentPrewet,
|
|
|
+ WaitVentPrewet,
|
|
|
+ ExtendClean,
|
|
|
+ WaitExtendClean,
|
|
|
+ SpinOff,
|
|
|
+ WaitSpinOff,
|
|
|
End
|
|
|
}
|
|
|
#region 内部变量
|
|
@@ -44,6 +50,18 @@ namespace PunkHPX8_RT.Modules.VpwCell
|
|
|
/// Vacuum prewet routine
|
|
|
/// </summary>
|
|
|
private VpwVacuumPrewetRoutine _vacuumPrewetRoutine;
|
|
|
+ /// <summary>
|
|
|
+ /// Vent Prewet
|
|
|
+ /// </summary>
|
|
|
+ private VpwVentPrewetRoutine _ventPrewetRoutine;
|
|
|
+ /// <summary>
|
|
|
+ /// Extend clean
|
|
|
+ /// </summary>
|
|
|
+ private VpwExtendCleanRoutine _extendCleanRoutine;
|
|
|
+ /// <summary>
|
|
|
+ /// Spin Off Routine
|
|
|
+ /// </summary>
|
|
|
+ private VpwSpinOffRoutine _spinOffRoutine;
|
|
|
#endregion
|
|
|
/// <summary>
|
|
|
/// 构造函数
|
|
@@ -52,6 +70,9 @@ namespace PunkHPX8_RT.Modules.VpwCell
|
|
|
public VpwRecipeRoutine(string module) : base(module)
|
|
|
{
|
|
|
_vacuumPrewetRoutine = new VpwVacuumPrewetRoutine(Module);
|
|
|
+ _ventPrewetRoutine = new VpwVentPrewetRoutine(module);
|
|
|
+ _extendCleanRoutine = new VpwExtendCleanRoutine(module);
|
|
|
+ _spinOffRoutine = new VpwSpinOffRoutine(module);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -71,7 +92,17 @@ namespace PunkHPX8_RT.Modules.VpwCell
|
|
|
.Run(RecipeStep.CloseDrain, _vpwCellDevice.DrainValveOff, _delay_1ms)
|
|
|
.Run(RecipeStep.CheckLoopDO, CheckLoopDO, _delay_1ms)
|
|
|
.Run(RecipeStep.VacuumPrewet,VacuumPrewet,_delay_1ms)
|
|
|
- .WaitWithStopCondition(RecipeStep.WaitVacuumPrewet,CheckVacuumPrewetEndStatus,CheckVacuumPrewetStopStatus)
|
|
|
+ .WaitWithStopCondition(RecipeStep.WaitVacuumPrewet, () => CommonFunction.CheckRoutineEndState(_vacuumPrewetRoutine),
|
|
|
+ () => { return CheckSubRoutineError(_vacuumPrewetRoutine, _vacuumPrewetRoutine, 1); })
|
|
|
+ .Run(RecipeStep.VentPrewet, VentPrewet)
|
|
|
+ .WaitWithStopCondition(RecipeStep.WaitVentPrewet, () => CommonFunction.CheckRoutineEndState(_ventPrewetRoutine),
|
|
|
+ () => { return CheckSubRoutineError(_ventPrewetRoutine, _ventPrewetRoutine, 2); })
|
|
|
+ .Run(RecipeStep.ExtendClean, ExtendClean)
|
|
|
+ .WaitWithStopCondition(RecipeStep.WaitExtendClean, () => CommonFunction.CheckRoutineEndState(_extendCleanRoutine),
|
|
|
+ () => { return CheckSubRoutineError(_extendCleanRoutine, _extendCleanRoutine, 3); })
|
|
|
+ .Run(RecipeStep.SpinOff, SpinOff)
|
|
|
+ .WaitWithStopCondition(RecipeStep.WaitSpinOff, () => CommonFunction.CheckRoutineEndState(_spinOffRoutine),
|
|
|
+ () => { return CheckSubRoutineError(_spinOffRoutine, _spinOffRoutine, 4); })
|
|
|
.End(RecipeStep.End, NullFun, _delay_1ms);
|
|
|
return Runner.Status;
|
|
|
}
|
|
@@ -142,15 +173,44 @@ namespace PunkHPX8_RT.Modules.VpwCell
|
|
|
return result;
|
|
|
}
|
|
|
/// <summary>
|
|
|
- /// 检验Vacuum Prewet异常
|
|
|
+ /// Vent Prewet
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
- private bool CheckVacuumPrewetStopStatus()
|
|
|
+ private bool VentPrewet()
|
|
|
{
|
|
|
- bool result=CommonFunction.CheckRoutineStopState(_vacuumPrewetRoutine);
|
|
|
+ return _ventPrewetRoutine.Start(_recipe) == RState.Running;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Extend Clean
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ private bool ExtendClean()
|
|
|
+ {
|
|
|
+ return _extendCleanRoutine.Start(_recipe) == RState.Running;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Vacuum Prewet
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ private bool SpinOff()
|
|
|
+ {
|
|
|
+ return _spinOffRoutine.Start(_recipe) == RState.Running;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 检验子routine异常
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="routine"></param>
|
|
|
+ /// <param name="routineBase"></param>
|
|
|
+ /// <param name="index"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private bool CheckSubRoutineError(IRoutine routine, RoutineBase routineBase, int index)
|
|
|
+ {
|
|
|
+ bool result = CommonFunction.CheckRoutineStopState(routine);
|
|
|
if (result)
|
|
|
{
|
|
|
- NotifyError(eEvent.ERR_VPW, _vacuumPrewetRoutine.ErrorMsg, 1);
|
|
|
+ NotifyError(eEvent.ERR_VPW, routineBase.ErrorMsg, index);
|
|
|
}
|
|
|
return result;
|
|
|
}
|