using Aitex.Core.RT.Device; using Aitex.Core.RT.Log; using Aitex.Core.RT.Routine; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Routine; using MECF.Framework.Common.Utilities; using CyberX8_Core; using CyberX8_RT.Devices.AXIS; using CyberX8_RT.Devices.Facilities; using CyberX8_RT.Devices.PUF; using CyberX8_RT.Devices.SRD; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CyberX8_RT.Modules.Transporter { public class SRDInitializeRoutine : RoutineBase, IRoutine { private enum InitializeStep { CheckSafety, CheckFacilities, End } #region 内部变量 #endregion #region 属性 /// /// 当前子状态机 /// public string CurrentStateMachine { get { return Runner.CurrentStep.ToString(); } } #endregion /// /// 构造函数 /// /// public SRDInitializeRoutine(string module) : base(module) { } public void Abort() { Runner.Stop("Manual Abort"); } public RState Monitor() { Runner.Run(InitializeStep.CheckSafety, CheckSafety,NullFun,_delay_1ms) .Run(InitializeStep.CheckFacilities, CheckFacilities, NullFun, _delay_1ms) .End(InitializeStep.End,NullFun); return Runner.Status; } /// /// 检验Safety /// /// private bool CheckSafety() { return true; } /// /// 检验Facilties /// /// private bool CheckFacilities() { SystemFacilities systemFacilities = DEVICE.GetDevice("System.Facilities"); var result = systemFacilities.CheckCDAN2(); if (!result.result) { LOG.WriteLog(eEvent.ERR_SRD, Module, $"CDA or N2 is not enabled"); return false; } return true; } /// /// 启动 /// /// /// public RState Start(params object[] objs) { return Runner.Start(Module, "Initialize"); } } }