123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using Aitex.Core.RT.Log;
- using Aitex.Core.RT.Routine;
- using Aitex.Core.Util;
- using CyberX8_Core;
- using CyberX8_RT.Devices.EFEM;
- using MECF.Framework.Common.Equipment;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace CyberX8_RT.Modules.EFEM
- {
- public class EfemSafeCloseRoutine : ModuleRoutineBase, IRoutine
- {
- private enum SafeCloseStep
- {
- Close,
- Resume,
- ResumeSignalCheck,
- ResumeActionDoneCheck,
- End
- }
- EfemBase _efem;
- private EfemEntity _efemEntity;
- public EfemSafeCloseRoutine(EfemBase efem) : base(ModuleName.EFEM)
- {
- _efem = efem;
- }
- /// <summary>
- /// 启动
- /// </summary>
- /// <param name="objs"></param>
- /// <returns></returns>
- public RState Start(params object[] objs)
- {
- return Runner.Start(Module, "Save Close");
- }
- /// <summary>
- /// 监控
- /// </summary>
- /// <returns></returns>
- public RState Monitor()
- {
- Runner.Run(SafeCloseStep.Close, () => { return Close(); }, _delay_1ms)
- .Run(SafeCloseStep.Resume, () => { return Resume(); },_delay_1ms)
- .Wait(SafeCloseStep.ResumeSignalCheck, CheckResumeDone)
- .Wait(SafeCloseStep.ResumeActionDoneCheck, ResumeActionDoneCheck)
- .End(SafeCloseStep.End, NullFun, 0);
- return Runner.Status;
- }
- /// <summary>
- /// 暂停功能
- /// </summary>
- /// <returns></returns>
- private bool Resume()
- {
- return _efem.Resume();
- }
- /// <summary>
- /// 检查是否收到Resume_rdy
- /// </summary>
- /// <returns></returns>
- private bool CheckResumeDone()
- {
- return _efem.IsResumeRDYReceived;
- }
- /// <summary>
- /// 检查Resume动作是否完成
- /// </summary>
- /// <returns></returns>
- private bool ResumeActionDoneCheck()
- {
- return _efem.IsActionRDYReceived;
- }
- private bool Close()
- {
- _efemEntity = Singleton<RouteManager>.Instance.GetModule<EfemEntity>(Module.ToString());
- bool myBool = false;
- return _efemEntity.DoorUnlock(new object[] { myBool });
- }
- public void Abort()
- {
- Runner.Stop("Manual Abort");
- }
- }
- }
|