|  | @@ -34,13 +34,6 @@ namespace PunkHPX8_RT.Modules.VpwMain
 | 
												
													
														
															|  |  {
 |  |  {
 | 
												
													
														
															|  |      public class VpwCellEntity : Entity, IEntity, IModuleEntity
 |  |      public class VpwCellEntity : Entity, IEntity, IModuleEntity
 | 
												
													
														
															|  |      {
 |  |      {
 | 
												
													
														
															|  | -
 |  | 
 | 
												
													
														
															|  | -        public enum MSG
 |  | 
 | 
												
													
														
															|  | -        {
 |  | 
 | 
												
													
														
															|  | -            Home
 |  | 
 | 
												
													
														
															|  | -        }
 |  | 
 | 
												
													
														
															|  | -
 |  | 
 | 
												
													
														
															|  | -
 |  | 
 | 
												
													
														
															|  |          #region 常量
 |  |          #region 常量
 | 
												
													
														
															|  |          private const string STRATUS = "Stratus";
 |  |          private const string STRATUS = "Stratus";
 | 
												
													
														
															|  |          private const string AUTO = "Auto";
 |  |          private const string AUTO = "Auto";
 | 
												
											
												
													
														
															|  | @@ -73,6 +66,14 @@ namespace PunkHPX8_RT.Modules.VpwMain
 | 
												
													
														
															|  |          /// </summary>
 |  |          /// </summary>
 | 
												
													
														
															|  |          private VpwRecipeRoutine _recipeRoutine;
 |  |          private VpwRecipeRoutine _recipeRoutine;
 | 
												
													
														
															|  |          /// <summary>
 |  |          /// <summary>
 | 
												
													
														
															|  | 
 |  | +        /// Chamber down
 | 
												
													
														
															|  | 
 |  | +        /// </summary>
 | 
												
													
														
															|  | 
 |  | +        private VpwChamberDownRoutine _chamberDownRoutine;
 | 
												
													
														
															|  | 
 |  | +        /// <summary>
 | 
												
													
														
															|  | 
 |  | +        /// Chamber Up
 | 
												
													
														
															|  | 
 |  | +        /// </summary>
 | 
												
													
														
															|  | 
 |  | +        private VpwChamberUpRoutine _chamberUpRoutine;
 | 
												
													
														
															|  | 
 |  | +        /// <summary>
 | 
												
													
														
															|  |          /// 循环routine
 |  |          /// 循环routine
 | 
												
													
														
															|  |          /// </summary>
 |  |          /// </summary>
 | 
												
													
														
															|  |          private VpwCycleManualProcessRecipeRoutine _cycleManualProcessRoutine;
 |  |          private VpwCycleManualProcessRecipeRoutine _cycleManualProcessRoutine;
 | 
												
											
												
													
														
															|  | @@ -174,15 +175,6 @@ namespace PunkHPX8_RT.Modules.VpwMain
 | 
												
													
														
															|  |          /// </summary>
 |  |          /// </summary>
 | 
												
													
														
															|  |          public int RecipeTime { get { return _recipeTime; } }
 |  |          public int RecipeTime { get { return _recipeTime; } }
 | 
												
													
														
															|  |          /// <summary>
 |  |          /// <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
 |  |          /// 当前Vpw设置的WaferSize
 | 
												
													
														
															|  |          /// </summary>
 |  |          /// </summary>
 | 
												
													
														
															|  |          public int VpwWaferSize { get { return _persistentValue.VpwCellWaferSize; } }
 |  |          public int VpwWaferSize { get { return _persistentValue.VpwCellWaferSize; } }
 | 
												
											
												
													
														
															|  | @@ -208,7 +200,7 @@ namespace PunkHPX8_RT.Modules.VpwMain
 | 
												
													
														
															|  |          /// <param name="module"></param>
 |  |          /// <param name="module"></param>
 | 
												
													
														
															|  |          public VpwCellEntity(ModuleName module)
 |  |          public VpwCellEntity(ModuleName module)
 | 
												
													
														
															|  |          {
 |  |          {
 | 
												
													
														
															|  | -            this.Module = module;
 |  | 
 | 
												
													
														
															|  | 
 |  | +            Module = module;
 | 
												
													
														
															|  |          }
 |  |          }
 | 
												
													
														
															|  |          /// <summary>
 |  |          /// <summary>
 | 
												
													
														
															|  |          /// 初始化
 |  |          /// 初始化
 | 
												
											
												
													
														
															|  | @@ -278,7 +270,12 @@ namespace PunkHPX8_RT.Modules.VpwMain
 | 
												
													
														
															|  |              Transition(VPWCellState.Preparing, FSM_MSG.TIMER, PrepareMonitor, VPWCellState.WaitForRunRecipe);
 |  |              Transition(VPWCellState.Preparing, FSM_MSG.TIMER, PrepareMonitor, VPWCellState.WaitForRunRecipe);
 | 
												
													
														
															|  |              Transition(VPWCellState.WaitForRunRecipe, VPWCellMsg.RunRecipe, RunRecipe, VPWCellState.RunReciping);
 |  |              Transition(VPWCellState.WaitForRunRecipe, VPWCellMsg.RunRecipe, RunRecipe, VPWCellState.RunReciping);
 | 
												
													
														
															|  |              Transition(VPWCellState.RunReciping, FSM_MSG.TIMER, RunRecipeMonitor, VPWCellState.Idle);
 |  |              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
 |  |              //Retry
 | 
												
													
														
															|  |              Transition(VPWCellState.Error, VPWCellMsg.Retry, NullFunc, VPWCellState.Retrying);
 |  |              Transition(VPWCellState.Error, VPWCellMsg.Retry, NullFunc, VPWCellState.Retrying);
 | 
												
													
														
															|  |              Transition(VPWCellState.Retrying, FSM_MSG.TIMER, VpwCellRetry, 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());
 |  |              _homeRoutine = new VPWHomeRoutine(Module.ToString());
 | 
												
													
														
															|  |              _prepareRoutine=new VpwPrepareRoutine(Module.ToString());
 |  |              _prepareRoutine=new VpwPrepareRoutine(Module.ToString());
 | 
												
													
														
															|  |              _recipeRoutine=new VpwRecipeRoutine(Module.ToString());
 |  |              _recipeRoutine=new VpwRecipeRoutine(Module.ToString());
 | 
												
													
														
															|  | 
 |  | +            _chamberDownRoutine=new VpwChamberDownRoutine(Module.ToString());
 | 
												
													
														
															|  | 
 |  | +            _chamberUpRoutine=new VpwChamberUpRoutine(Module.ToString());   
 | 
												
													
														
															|  |              _cycleManualProcessRoutine = new VpwCycleManualProcessRecipeRoutine(Module.ToString());
 |  |              _cycleManualProcessRoutine = new VpwCycleManualProcessRecipeRoutine(Module.ToString());
 | 
												
													
														
															|  |          }
 |  |          }
 | 
												
													
														
															|  |          /// <summary>
 |  |          /// <summary>
 | 
												
											
												
													
														
															|  | @@ -499,7 +498,6 @@ namespace PunkHPX8_RT.Modules.VpwMain
 | 
												
													
														
															|  |          }
 |  |          }
 | 
												
													
														
															|  |          #endregion
 |  |          #endregion
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  | -
 |  | 
 | 
												
													
														
															|  |          #region cycle manual process
 |  |          #region cycle manual process
 | 
												
													
														
															|  |          private bool CycleManualProcess(object[] param)
 |  |          private bool CycleManualProcess(object[] param)
 | 
												
													
														
															|  |          {
 |  |          {
 | 
												
											
												
													
														
															|  | @@ -595,6 +593,60 @@ namespace PunkHPX8_RT.Modules.VpwMain
 | 
												
													
														
															|  |          }
 |  |          }
 | 
												
													
														
															|  |          #endregion
 |  |          #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)
 |  |          public bool Check(int msg, out string reason, params object[] args)
 | 
												
													
														
															|  |          {
 |  |          {
 | 
												
													
														
															|  |              reason = "";
 |  |              reason = "";
 |