|
|
@@ -34,13 +34,6 @@ namespace PunkHPX8_RT.Modules.VpwMain
|
|
|
{
|
|
|
public class VpwCellEntity : Entity, IEntity, IModuleEntity
|
|
|
{
|
|
|
-
|
|
|
- public enum MSG
|
|
|
- {
|
|
|
- Home
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
#region 常量
|
|
|
private const string STRATUS = "Stratus";
|
|
|
private const string AUTO = "Auto";
|
|
|
@@ -73,6 +66,14 @@ namespace PunkHPX8_RT.Modules.VpwMain
|
|
|
/// </summary>
|
|
|
private VpwRecipeRoutine _recipeRoutine;
|
|
|
/// <summary>
|
|
|
+ /// Chamber down
|
|
|
+ /// </summary>
|
|
|
+ private VpwChamberDownRoutine _chamberDownRoutine;
|
|
|
+ /// <summary>
|
|
|
+ /// Chamber Up
|
|
|
+ /// </summary>
|
|
|
+ private VpwChamberUpRoutine _chamberUpRoutine;
|
|
|
+ /// <summary>
|
|
|
/// 循环routine
|
|
|
/// </summary>
|
|
|
private VpwCycleManualProcessRecipeRoutine _cycleManualProcessRoutine;
|
|
|
@@ -174,15 +175,6 @@ namespace PunkHPX8_RT.Modules.VpwMain
|
|
|
/// </summary>
|
|
|
public int RecipeTime { get { return _recipeTime; } }
|
|
|
/// <summary>
|
|
|
- /// 是否在做recipe
|
|
|
- /// </summary>
|
|
|
- public bool IsInReceiping
|
|
|
- {
|
|
|
- get { return fsm.State == (int)VPWCellState.RunReciping ||
|
|
|
- fsm.State == (int)VPWCellState.ManualReciping ||
|
|
|
- fsm.State == (int)VPWCellState.CycleManualProcessing;}
|
|
|
- }
|
|
|
- /// <summary>
|
|
|
/// 当前Vpw设置的WaferSize
|
|
|
/// </summary>
|
|
|
public int VpwWaferSize { get { return _persistentValue.VpwCellWaferSize; } }
|
|
|
@@ -208,7 +200,7 @@ namespace PunkHPX8_RT.Modules.VpwMain
|
|
|
/// <param name="module"></param>
|
|
|
public VpwCellEntity(ModuleName module)
|
|
|
{
|
|
|
- this.Module = module;
|
|
|
+ Module = module;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 初始化
|
|
|
@@ -278,7 +270,12 @@ namespace PunkHPX8_RT.Modules.VpwMain
|
|
|
Transition(VPWCellState.Preparing, FSM_MSG.TIMER, PrepareMonitor, VPWCellState.WaitForRunRecipe);
|
|
|
Transition(VPWCellState.WaitForRunRecipe, VPWCellMsg.RunRecipe, RunRecipe, VPWCellState.RunReciping);
|
|
|
Transition(VPWCellState.RunReciping, FSM_MSG.TIMER, RunRecipeMonitor, VPWCellState.Idle);
|
|
|
-
|
|
|
+ //ChamberUp
|
|
|
+ Transition(VPWCellState.Idle, VPWCellMsg.ChamberUp, ChamberUp, VPWCellState.ChamberUping);
|
|
|
+ Transition(VPWCellState.ChamberUping, FSM_MSG.TIMER, ChamberUpMonitor, VPWCellState.Idle);
|
|
|
+ //ChamberDown
|
|
|
+ Transition(VPWCellState.Idle, VPWCellMsg.ChamberDown, ChamberDown, VPWCellState.ChamberDowning);
|
|
|
+ Transition(VPWCellState.ChamberDowning, FSM_MSG.TIMER, ChamberDownMonitor, VPWCellState.Idle);
|
|
|
//Retry
|
|
|
Transition(VPWCellState.Error, VPWCellMsg.Retry, NullFunc, VPWCellState.Retrying);
|
|
|
Transition(VPWCellState.Retrying, FSM_MSG.TIMER, VpwCellRetry, VPWCellState.Retrying);
|
|
|
@@ -321,6 +318,8 @@ namespace PunkHPX8_RT.Modules.VpwMain
|
|
|
_homeRoutine = new VPWHomeRoutine(Module.ToString());
|
|
|
_prepareRoutine=new VpwPrepareRoutine(Module.ToString());
|
|
|
_recipeRoutine=new VpwRecipeRoutine(Module.ToString());
|
|
|
+ _chamberDownRoutine=new VpwChamberDownRoutine(Module.ToString());
|
|
|
+ _chamberUpRoutine=new VpwChamberUpRoutine(Module.ToString());
|
|
|
_cycleManualProcessRoutine = new VpwCycleManualProcessRecipeRoutine(Module.ToString());
|
|
|
}
|
|
|
/// <summary>
|
|
|
@@ -499,7 +498,6 @@ namespace PunkHPX8_RT.Modules.VpwMain
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
-
|
|
|
#region cycle manual process
|
|
|
private bool CycleManualProcess(object[] param)
|
|
|
{
|
|
|
@@ -595,6 +593,60 @@ namespace PunkHPX8_RT.Modules.VpwMain
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
+ #region ChamberUp
|
|
|
+ /// <summary>
|
|
|
+ /// Chamber Up
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="param"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private bool ChamberUp(object[] param)
|
|
|
+ {
|
|
|
+ return _chamberUpRoutine.Start(param) == RState.Running;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// ChamberUp Monitor
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="param"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private bool ChamberUpMonitor(object[] param)
|
|
|
+ {
|
|
|
+ RState state = _chamberUpRoutine.Monitor();
|
|
|
+ if (state == RState.Failed || state == RState.Timeout)
|
|
|
+ {
|
|
|
+ PostMsg(VPWCellMsg.Error);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return state == RState.End;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region ChamberDown
|
|
|
+ /// <summary>
|
|
|
+ /// Chamber Down
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="param"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private bool ChamberDown(object[] param)
|
|
|
+ {
|
|
|
+ return _chamberDownRoutine.Start(param) == RState.Running;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// ChamberUp Monitor
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="param"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private bool ChamberDownMonitor(object[] param)
|
|
|
+ {
|
|
|
+ RState state = _chamberDownRoutine.Monitor();
|
|
|
+ if (state == RState.Failed || state == RState.Timeout)
|
|
|
+ {
|
|
|
+ PostMsg(VPWCellMsg.Error);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return state == RState.End;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
public bool Check(int msg, out string reason, params object[] args)
|
|
|
{
|
|
|
reason = "";
|