using System; using System.Collections.Generic; using Aitex.Common.Util; using Aitex.Core.RT.ConfigCenter; using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.DataCollection; using Aitex.Core.RT.DBCore; using Aitex.Core.RT.Event; using Aitex.Core.RT.Log; using Aitex.Core.RT.OperationCenter; using Aitex.Core.RT.RecipeCenter; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; using Aitex.Core.WCF; using SicRT.Modules; using MECF.Framework.Common.Account; using MECF.Framework.Common.Communications; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.IOCore; using MECF.Framework.Common.SCCore; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.RT.Core.Applications; using MECF.Framework.RT.Core.Backend; using MECF.Framework.RT.Core.IoProviders; using SorterRT.Modules; using SicRT.Equipments; using SicRT.Equipments.Systems; using System.IO; using System.Reflection; using DocumentFormat.OpenXml.ExtendedProperties; using SicModules.PMs.RecipeExecutions; using MECF.Framework.UI.Client.TrayThickness.HistoryData; namespace SicRT.Instances { internal class ToolLoader : IRtLoader { #region Variables #endregion public void Initialize() { Singleton.Instance.Initialize(); LOG.Write($"RT v{RtInstance.SystemVersion} launch ..."); Singleton.Instance.Initialize(); Singleton.Instance.Initialize(); Singleton.Instance.Initialize(); Singleton.Instance.Initialize(); Singleton.Instance.Initialize(PathManager.GetCfgDir() + "EventDefine.xml"); AccountExManager.Instance.Initialize(true); Singleton.Instance.Initialize(PathManager.GetCfgDir() + "System.sccfg"); ConnectionManager.Instance.Initialize(); string ioProviderPathFile = PathManager.GetCfgDir() + "IoProviderConfig.xml"; IoProviderManager.Instance.Initialize(ioProviderPathFile); IoManager.Instance.Initialize(PathManager.GetCfgDir() + "tm\\interlock.xml"); IoManager.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm1\\interlockPM1.xml"); IoManager.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm2\\interlockPM2.xml"); WaferManager.Instance.Initialize(); Singleton.Instance.DisableAsyncInitialize = true; Singleton.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm1\\DeviceModelPM1.xml", "Sic", ModuleName.PM1, "PM1", false); Singleton.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm2\\DeviceModelPM2.xml", "Sic", ModuleName.PM2, "PM2", false); Singleton.Instance.Initialize(PathManager.GetCfgDir() + "tm\\DeviceModelSystem.xml", "Sic", ModuleName.System, "TM", true); RtSystemManager.Instance.AddCustomBackend("SC", new BackendSCConfigView()); RecipeFileManager.Instance.Initialize(new SicRecipeFileContext(), true, SC.GetValue("System.RecipeSaveToDB")); Singleton.Instance.Initialize(); //! !!!!注意 !!!!!! // 注意构建和启动DeviceManager状态机的时机,不要早于EquipmentManager,因为EquipmentManger中 // 的InitModules()方法构建模组时,如果模组被配置为NotInstalled,则模组所属的Device会被禁用。 // 若过早的使能DeviceManager,被卸载的Module可能产生误报警。 Singleton.Instance.Initialize(); // Singleton.Instance.Initialize(); //Singleton.Instance.Initialize(); HistoryCoatingManager.Instance.Initialize(); //! DataCollectionManager必须在最后初始化,否则在其之后注册的DATA数据均会被忽略 Singleton.Instance.Initialize(); } public void Terminate() { Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); IoProviderManager.Instance.Terminate(); Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); Singleton.Instance.Terminate(); } } }