using Aitex.Core.Common; using Aitex.Core.RT.Fsm; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.Common.ToolLayout; using MECF.Framework.Common.WaferHolder; using CyberX8_Core; using CyberX8_RT.Modules.Dummy; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CyberX8_RT.Modules.Dryer; using Aitex.Core.RT.DataCenter; using Aitex.Core.Util; namespace CyberX8_RT.Modules.Buffer { public class BufferEntity : Entity, IEntity, IModuleEntity { public enum MSG { Home } #region 属性 public ModuleName Module { get; private set; } /// /// 初始化状态 /// public bool IsInit { get { return false; } } /// /// 空闲状态 /// public bool IsIdle { get { return true; } } /// /// 是否发生错误 /// public bool IsError { get { return false; } } /// /// 是否正在作业 /// public bool IsBusy { get { return false; } } public bool IsAuto { get; } = true; /// /// 是否禁用 /// public bool IsDisable { get; internal set; } /// /// 是否为工程模式 /// public bool IsEngineering { get; } = false; /// /// 是否为产品模式 /// public bool IsProduction { get; } = true; /// /// WaferHolder信息 /// public WaferHolderInfo WaferHolderInfo { get { return WaferHolderManager.Instance.GetWaferHolder(Module.ToString()); } } #endregion /// /// 构造函数 /// /// public BufferEntity(ModuleName module) { this.Module = module; WaferManager.Instance.SubscribeLocation(Module, 2); InitializeWaferHolder(); InitializeSvid(); } /// /// 初始化WaferHolder /// private void InitializeWaferHolder() { if(WaferHolderInfo!=null) { if(!string.IsNullOrEmpty(WaferHolderInfo.WaferAId)) { if(!WaferManager.Instance.CheckHasWafer(Module,0)) { WaferManager.Instance.CreateWafer(Module, 0, WaferStatus.Normal, (WaferSize)WaferHolderInfo.WaferSize,(WaferType)WaferHolderInfo.WaferAType); } WaferInfo waferInfo = WaferManager.Instance.GetWafer(Module, 0); waferInfo.WaferOrigin = WaferHolderInfo.WaferAId; waferInfo.WaferID = WaferHolderInfo.WaferAId; waferInfo.OrginalWaferHolder = WaferHolderInfo.Id; } if(!string.IsNullOrEmpty(WaferHolderInfo.WaferBId)) { if(!WaferManager.Instance.CheckHasWafer(Module,1)) { WaferManager.Instance.CreateWafer(Module, 1, WaferStatus.Normal, (WaferSize)WaferHolderInfo.WaferSize, (WaferType)WaferHolderInfo.WaferBType); } WaferInfo waferInfo = WaferManager.Instance.GetWafer(Module, 1); waferInfo.WaferOrigin = WaferHolderInfo.WaferBId; waferInfo.WaferID = WaferHolderInfo.WaferBId; waferInfo.OrginalWaferHolder=WaferHolderInfo.Id; } } } /// /// 初始化SVID /// private void InitializeSvid() { DATA.Subscribe($"{Module}.LotID", () => (WaferHolderInfo != null ? WaferHolderInfo.LotId : ""), SubscriptionAttribute.FLAG.IgnoreSaveDB); DATA.Subscribe($"{Module}.WSID", () => (WaferHolderInfo != null ? WaferHolderInfo.Id : ""), SubscriptionAttribute.FLAG.IgnoreSaveDB); DATA.Subscribe($"{Module}.LSAID", () => (WaferHolderInfo != null ? WaferHolderInfo.CrsAId : ""), SubscriptionAttribute.FLAG.IgnoreSaveDB); DATA.Subscribe($"{Module}.LSBID", () => (WaferHolderInfo != null ? WaferHolderInfo.CrsBId : ""), SubscriptionAttribute.FLAG.IgnoreSaveDB); DATA.Subscribe($"{Module}.SequenceRecipe", () => (WaferHolderInfo != null ? WaferHolderInfo.SequenceId : ""), SubscriptionAttribute.FLAG.IgnoreSaveDB); DATA.Subscribe($"{Module}.WaferAID", () => (WaferHolderInfo != null ? WaferHolderInfo.WaferAId : ""), SubscriptionAttribute.FLAG.IgnoreSaveDB); DATA.Subscribe($"{Module}.WaferBID", () => (WaferHolderInfo != null ? WaferHolderInfo.WaferBId : ""), SubscriptionAttribute.FLAG.IgnoreSaveDB); DATA.Subscribe($"{Module}.Task", () => WaferHolderInfo != null ? WaferHolderInfo.CurrentControlJobId : "", SubscriptionAttribute.FLAG.IgnoreSaveDB); } public bool Check(int msg, out string reason, params object[] args) { reason = ""; return false; } public bool CheckAcked(int msg) { return false; } public int Invoke(string function, params object[] args) { switch (function) { case "HomeAll": return (int)MSG.Home; } return (int)FSM_MSG.NONE; } } }