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]++;
- }
- }
- }
|