using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Device; using Aitex.Core.RT.Log; using MECF.Framework.Common.Utilities; using CyberX8_RT.Devices.AXIS; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MECF.Framework.Common.Equipment; using Aitex.Core.Util; using CyberX8_RT.Modules; namespace CyberX8_RT.Devices.Loader { public class LoaderTiltAxisInterLock : IAxisInterLock { #region 内部变量 private JetAxisBase _axis; #endregion #region 属性 /// /// 模块名称 /// public string Module { get { return _axis.Module; } } /// /// 子模块名称 /// public string Name { get { return _axis.Name; } } #endregion /// /// 构造函数 /// /// /// public LoaderTiltAxisInterLock(JetAxisBase axis) { _axis = axis; } /// /// GotoPosition条件检验 /// /// /// /// public bool CheckGotoPosition(string station) { if (!_axis.IsHomed) { LOG.WriteLog(eEvent.ERR_LOADER, Module, $"{Name} is not home, Cannot execute GotoSavedPosition"); return false; } ////Puf vertical is park //if (ModuleHelper.IsInstalled(ModuleName.PUF1)) //{ // JetAxisBase puf1VerticalAxis = DEVICE.GetDevice($"{ModuleName.PUF1}.Vertical"); // if (puf1VerticalAxis != null) // { // double puf1VerticalPosition = puf1VerticalAxis.MotionData.MotorPosition; // if (!puf1VerticalAxis.CheckPositionIsInStation(puf1VerticalPosition, "Park")) // { // LOG.WriteLog(eEvent.ERR_LOADER, Module, $"{ModuleName.PUF1} {puf1VerticalPosition} is not in Park, Cannot execute GotoSavedPosition"); // return false; // } // } //} //if (ModuleHelper.IsInstalled(ModuleName.PUF2)) //{ // JetAxisBase puf2VerticalAxis = DEVICE.GetDevice($"{ModuleName.PUF2}.Vertical"); // if (puf2VerticalAxis != null) // { // double puf2VerticalPosition = puf2VerticalAxis.MotionData.MotorPosition; // if (!puf2VerticalAxis.CheckPositionIsInStation(puf2VerticalPosition, "Park")) // { // LOG.WriteLog(eEvent.ERR_LOADER, Module, $"{ModuleName.PUF2} {puf2VerticalPosition} is not in Park, Cannot execute GotoSavedPosition"); // return false; // } // } //} //JetAxisBase swingAxis = null; //double swingPosition = 0; //if (Name == "TiltA") //{ // swingAxis = DEVICE.GetDevice($"{Module}.SwingA"); // swingPosition=swingAxis.MotionData.MotorPosition; // if (!swingAxis.IsSwitchOn) // { // LOG.WriteLog(eEvent.ERR_LOADER, Module, $"SwingA is switch off"); // return false; // } // if (swingAxis.IsRun) // { // LOG.WriteLog(eEvent.ERR_LOADER, Module, $"SwingA is running,Cannot execute GotoSavedPosition"); // return false; // } //} //else //{ // swingAxis = DEVICE.GetDevice($"{Module}.SwingB"); // swingPosition=swingAxis.MotionData.MotorPosition; // if (!swingAxis.IsSwitchOn) // { // LOG.WriteLog(eEvent.ERR_LOADER, Module, $"SwingB is switch off"); // return false; // } // if (swingAxis.IsRun) // { // LOG.WriteLog(eEvent.ERR_LOADER, Module, $"SwingB is running,Cannot execute GotoSavedPosition"); // return false; // } //} //JetAxisBase rotationAxis = DEVICE.GetDevice($"{Module}.Rotation"); //if (!rotationAxis.IsSwitchOn) //{ // LOG.WriteLog(eEvent.ERR_LOADER, Module, $"rotation is switch off"); // return false; //} //if (rotationAxis.IsRun) //{ // LOG.WriteLog(eEvent.ERR_LOADER, Module, $"rotation is running,Cannot execute GotoSavedPosition"); // return false; //} //if(swingAxis.CheckPositionIsEmpty(swingPosition)) //{ // return true; //} ////Swing在CLOSED,不可以去某一Station //if (swingAxis.CheckPositionIsInStation(swingPosition, "CLOSED")) //{ // //LOG.WriteLog(eEvent.ERR_LOADER, Module, "Swing is CLOSED, Cannot execute GotoSavedPosition"); // //return false; // return true; //} ////Swing在OPEN/OPENB,除了FLIP外其他位置都可以去 //if (swingAxis.CheckPositionIsInStation(swingPosition, "OPEN")|| // swingAxis.CheckPositionIsInStation(swingPosition,"OPENB")) //{ // if(station.EndsWith("FLIP")) // { // LOG.WriteLog(eEvent.ERR_LOADER, Module, $"Swing {swingPosition} is OPEN/OPENB, Cannot Goto Flip"); // return false; // } // else // { // return true; // } //} ////Swing在Clean //if(swingAxis.CheckPositionIsInStation(swingPosition,"CLEAN")) //{ // return true; //} return true; } } }