| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 | using Aitex.Core.RT.DataCenter;using Aitex.Core.RT.OperationCenter;using Aitex.Core.Util;using MECF.Framework.Common.Equipment;using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace CyberX8_RT.Dispatch{    public class CycleManager : Singleton<CycleManager>    {        #region 内部变量        private Dictionary<ModuleName, int> _lpCycleWafer = new Dictionary<ModuleName, int> { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } };        private Dictionary<ModuleName, int> _lpCycleCount = new Dictionary<ModuleName, int> { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } };        private Dictionary<ModuleName, int> _lpCycleSP = new Dictionary<ModuleName, int> { { ModuleName.LP1, 1 }, { ModuleName.LP2, 1 }, { ModuleName.LP3, 1 } };        private Dictionary<ModuleName, float> _lpThroughput = new Dictionary<ModuleName, float> { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } };        private Dictionary<ModuleName, Stopwatch> _lpCycleWatch = new Dictionary<ModuleName, Stopwatch> { { ModuleName.LP1, new Stopwatch() }, { ModuleName.LP2, new Stopwatch() }, { ModuleName.LP3, new Stopwatch() } };        #endregion        /// <summary>        /// 初始化        /// </summary>        public void Initialize()        {            InitializeDATA();        }        /// <summary>        /// 初始化DATA        /// </summary>        private void InitializeDATA()        {            foreach (var lp in new List<ModuleName> { ModuleName.LP1, ModuleName.LP2, ModuleName.LP3 })            {                DATA.Subscribe($"{lp}.CycledCount", () => _lpCycleCount[lp], SubscriptionAttribute.FLAG.IgnoreSaveDB);                DATA.Subscribe($"{lp}.CycledWafer", () => _lpCycleWafer[lp], SubscriptionAttribute.FLAG.IgnoreSaveDB);                DATA.Subscribe($"{lp}.CycleSetPoint", () => _lpCycleSP[lp], SubscriptionAttribute.FLAG.IgnoreSaveDB);                DATA.Subscribe($"{lp}.Throughput", () => _lpThroughput[lp], SubscriptionAttribute.FLAG.IgnoreSaveDB);            }        }        public bool InitLpData(string LpName)        {            if ("LP1".Equals(LpName))            {                _lpCycleWafer[ModuleName.LP1] = 0;                _lpCycleCount[ModuleName.LP1] = 0;                _lpCycleSP[ModuleName.LP1] = 1;            }            else if ("LP2".Equals(LpName))            {                _lpCycleWafer[ModuleName.LP2] = 0;                _lpCycleCount[ModuleName.LP2] = 0;                _lpCycleSP[ModuleName.LP2] = 1;            }            else if ("LP3".Equals(LpName))            {                _lpCycleWafer[ModuleName.LP3] = 0;                _lpCycleCount[ModuleName.LP3] = 0;                _lpCycleSP[ModuleName.LP3] = 1;            }            return true;        }        /// <summary>        /// 初始化所有LoadPort数据        /// </summary>        public void InitializeAllLoadPortData()        {            _lpCycleWafer = new Dictionary<ModuleName, int> { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } };            _lpCycleCount = new Dictionary<ModuleName, int> { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } };            _lpCycleSP = new Dictionary<ModuleName, int> { { ModuleName.LP1, 1 }, { ModuleName.LP2, 1 }, { ModuleName.LP3, 1 } };            _lpThroughput = new Dictionary<ModuleName, float> { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } };            _lpCycleWatch = new Dictionary<ModuleName, Stopwatch> { { ModuleName.LP1, new Stopwatch() }, { ModuleName.LP2, new Stopwatch() }, { ModuleName.LP3, new Stopwatch() } };        }        /// <summary>        /// 更新Loadport 循环次数        /// </summary>        /// <param name="module"></param>        /// <param name="cycleNumber"></param>        public void UpdateLoadportSp(string module,int cycleNumber)        {            _lpCycleSP[ModuleHelper.Converter(module)] = cycleNumber;        }        /// <summary>        /// 初始化Loadport数据        /// </summary>        /// <param name="moduleName"></param>        public void InitializeLoadPortData(string moduleName)        {            ModuleName module = ModuleHelper.Converter(moduleName);            _lpCycleWafer[module] = 0;            _lpCycleCount[module] = 0;            _lpThroughput[module] = 0;        }        /// <summary>        /// 更新循环数量        /// </summary>        /// <param name="moduleName"></param>        public void UpdateCycleCount(string moduleName)        {            ModuleName module = ModuleHelper.Converter(moduleName);            _lpCycleCount[module]++;        }        /// <summary>        /// 获取当前循环次数        /// </summary>        /// <param name="moduleName"></param>        /// <returns></returns>        public int GetLoadportCycleCount(string moduleName)        {            ModuleName module = ModuleHelper.Converter(moduleName);            return _lpCycleCount[(module)];        }        /// <summary>        /// 获取循环总次数        /// </summary>        /// <param name="moduleName"></param>        /// <returns></returns>        public int GetLoadportCycleSetPoint(string moduleName)        {            ModuleName module = ModuleHelper.Converter(moduleName);            return _lpCycleSP[(module)];        }        /// <summary>        /// 更新循环        /// </summary>        /// <param name="moduleName"></param>        /// <returns></returns>        public void UpdateCycleWaferCount(string moduleName)        {            ModuleName module = ModuleHelper.Converter(moduleName);            _lpCycleWafer[module]++;        }    }}
 |