using Aitex.Core.RT.Device; using Aitex.Core.RT.Log; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using CyberX8_Core; using MECF.Framework.Common.Beckhoff.ModuleIO; using MECF.Framework.Common.IOCore; using MECF.Framework.Common.Routine; namespace CyberX8_RT.Devices.SRD { public class SrdCommonChuckATMRoutine : RoutineBase, IRoutine { #region 常量 private const string CHUCK_ATM_ON = "ChuckATMOn"; #endregion private enum ChuckATMStep { ChuckATMOn, Delay, ChuckATMOff, End } #region 内部变量 /// /// Srd Device /// private SrdCommonDevice _srdCommon; /// /// 破真空持续时间 /// private int _duration= 100; #endregion /// /// 构造函数 /// /// public SrdCommonChuckATMRoutine(string module) : base(module) { } public void Abort() { Runner.Stop("Manual Abort"); } public RState Monitor() { Runner.Run(ChuckATMStep.ChuckATMOn, ChuckATMOn, _delay_1ms) .Delay(ChuckATMStep.Delay, _duration) .Run(ChuckATMStep.ChuckATMOff, ChuckATMOff, _delay_1ms) .End(ChuckATMStep.End, NullFun, 100); return Runner.Status; } public RState Start(params object[] objs) { _srdCommon = DEVICE.GetDevice($"{Module}.Common"); return Runner.Start(Module, "Chuck ATM Click"); } /// /// Chuck ATM On /// /// private bool ChuckATMOn() { return _srdCommon.ChuckATMOnAction("", null); } /// /// Chuck ATM Off /// /// private bool ChuckATMOff() { return _srdCommon.ChuckATMOffAction("", null); } } }