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 { #region 内部变量 private Dictionary _lpCycleWafer = new Dictionary { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } }; private Dictionary _lpCycleCount = new Dictionary { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } }; private Dictionary _lpCycleSP = new Dictionary { { ModuleName.LP1, 1 }, { ModuleName.LP2, 1 }, { ModuleName.LP3, 1 } }; private Dictionary _lpThroughput = new Dictionary { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } }; private Dictionary _lpCycleWatch = new Dictionary { { ModuleName.LP1, new Stopwatch() }, { ModuleName.LP2, new Stopwatch() }, { ModuleName.LP3, new Stopwatch() } }; #endregion /// /// 初始化 /// public void Initialize() { InitializeDATA(); } /// /// 初始化DATA /// private void InitializeDATA() { foreach (var lp in new List { 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; } /// /// 初始化所有LoadPort数据 /// public void InitializeAllLoadPortData() { _lpCycleWafer = new Dictionary { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } }; _lpCycleCount = new Dictionary { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } }; _lpCycleSP = new Dictionary { { ModuleName.LP1, 1 }, { ModuleName.LP2, 1 }, { ModuleName.LP3, 1 } }; _lpThroughput = new Dictionary { { ModuleName.LP1, 0 }, { ModuleName.LP2, 0 }, { ModuleName.LP3, 0 } }; _lpCycleWatch = new Dictionary { { ModuleName.LP1, new Stopwatch() }, { ModuleName.LP2, new Stopwatch() }, { ModuleName.LP3, new Stopwatch() } }; } /// /// 更新Loadport 循环次数 /// /// /// public void UpdateLoadportSp(string module,int cycleNumber) { _lpCycleSP[ModuleHelper.Converter(module)] = cycleNumber; } /// /// 初始化Loadport数据 /// /// public void InitializeLoadPortData(string moduleName) { ModuleName module = ModuleHelper.Converter(moduleName); _lpCycleWafer[module] = 0; _lpCycleCount[module] = 0; _lpThroughput[module] = 0; } /// /// 更新循环数量 /// /// public void UpdateCycleCount(string moduleName) { ModuleName module = ModuleHelper.Converter(moduleName); _lpCycleCount[module]++; } /// /// 获取当前循环次数 /// /// /// public int GetLoadportCycleCount(string moduleName) { ModuleName module = ModuleHelper.Converter(moduleName); return _lpCycleCount[(module)]; } /// /// 获取循环总次数 /// /// /// public int GetLoadportCycleSetPoint(string moduleName) { ModuleName module = ModuleHelper.Converter(moduleName); return _lpCycleSP[(module)]; } /// /// 更新循环 /// /// /// public void UpdateCycleWaferCount(string moduleName) { ModuleName module = ModuleHelper.Converter(moduleName); _lpCycleWafer[module]++; } } }