| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | 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; }        /// <summary>        /// 初始化状态        /// </summary>        public bool IsInit        {            get { return false; }        }        /// <summary>        /// 空闲状态        /// </summary>        public bool IsIdle        {            get            {                return true;            }        }        /// <summary>        /// 是否发生错误        /// </summary>        public bool IsError        {            get { return false; }        }        /// <summary>        /// 是否正在作业        /// </summary>        public bool IsBusy        {            get { return false; }        }        public bool IsAuto { get; } = true;        /// <summary>        /// 是否禁用        /// </summary>        public bool IsDisable { get; internal set; }        /// <summary>        /// 是否为工程模式        /// </summary>        public bool IsEngineering { get; } = false;        /// <summary>        /// 是否为产品模式        /// </summary>        public bool IsProduction { get; } = true;        /// <summary>        /// WaferHolder信息        /// </summary>        public WaferHolderInfo WaferHolderInfo { get { return WaferHolderManager.Instance.GetWaferHolder(Module.ToString()); } }        #endregion        /// <summary>        /// 构造函数        /// </summary>        /// <param name="module"></param>        public BufferEntity(ModuleName module)        {            this.Module = module;            WaferManager.Instance.SubscribeLocation(Module, 2);            InitializeWaferHolder();            InitializeSvid();        }        /// <summary>        /// 初始化WaferHolder        /// </summary>        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;                }            }        }        /// <summary>        /// 初始化SVID        /// </summary>        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;        }    }}
 |