| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using Aitex.Core.RT.Routine;
- using Aitex.Core.Util;
- using MECF.Framework.Common.Routine;
- using MECF.Framework.Common.Utilities;
- using PunkHPX8_Core;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace PunkHPX8_RT.Modules.PlatingCell
- {
- public class PlatingCellRunRecipeRoutine : RoutineBase, IRoutine
- {
- private enum RunRecipeStep
- {
- Delay,
- InterRinse,
- CheckInterRinse,
- Vertical,
- CheckVertical,
- End
- }
- #region 内部变量
- private PlatingCellInterRinseRoutine _interRinseRoutine;
- private PlatingCellVerticalEntity _verticalEntity;
- #endregion
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="module"></param>
- public PlatingCellRunRecipeRoutine(string module) : base(module)
- {
- _interRinseRoutine=new PlatingCellInterRinseRoutine(module);
- }
- /// <summary>
- /// 中止
- /// </summary>
- public void Abort()
- {
- Runner.Stop("Manual Abort");
- }
- /// <summary>
- /// 监控
- /// </summary>
- /// <returns></returns>
- public RState Monitor()
- {
- Runner.Delay(RunRecipeStep.Delay, 5000)
- .Run(RunRecipeStep.InterRinse, () => { return _interRinseRoutine.Start() == RState.Running; })
- .WaitWithStopCondition(RunRecipeStep.CheckInterRinse,()=>CommonFunction.CheckRoutineEndState(_interRinseRoutine),
- ()=>CommonFunction.CheckRoutineStopState(_interRinseRoutine))
- .Run(RunRecipeStep.Vertical,StartVertical)
- .WaitWithStopCondition(RunRecipeStep.CheckVertical,CheckVerticalEnd,CheckVerticalError)
- .End(RunRecipeStep.End, NullFun);
- return Runner.Status;
- }
- /// <summary>
- /// 垂直电机运行(仅示例只做参考)
- /// </summary>
- /// <returns></returns>
- private bool StartVertical()
- {
- double position = 101;
- return _verticalEntity.CheckToPostMessage<PlatingCellVerticalState, VerticalMsg>(Aitex.Core.RT.Log.eEvent.INFO_PLATINGCELL,
- Module, (int)VerticalMsg.Position, position);
- }
- /// <summary>
- /// 检验垂直电机是否运动完成
- /// </summary>
- /// <returns></returns>
- private bool CheckVerticalEnd()
- {
- return _verticalEntity.IsIdle;
- }
- /// <summary>
- /// 检验垂直是否出现错误
- /// </summary>
- /// <returns></returns>
- private bool CheckVerticalError()
- {
- return _verticalEntity.IsError;
- }
- /// <summary>
- /// 启动
- /// </summary>
- /// <param name="objs"></param>
- /// <returns></returns>
- public RState Start(params object[] objs)
- {
- string vertical = ModuleMatcherManager.Instance.GetPlatingVerticalByCell(Module);
- _verticalEntity = Singleton<RouteManager>.Instance.GetModule<PlatingCellVerticalEntity>(vertical);
- return Runner.Start(Module, "Run Recipe");
- }
- }
- }
|