Sic08/SicRT/Instances/ToolLoader.cs

125 lines
4.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.Util;
using Aitex.Core.WCF;
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 SicModules.PMs.RecipeExecutions;
using SorterRT.Modules;
using SicRT.Equipments.Systems;
using MECF.Framework.UI.Client.TrayThickness.HistoryData;
namespace SicRT.Instances
{
internal class ToolLoader : IRtLoader
{
#region Variables
#endregion
public void Initialize()
{
Singleton<LogManager>.Instance.Initialize();
LOG.Write($"RT v{RtInstance.SystemVersion} launch ...");
Singleton<ConfigManager>.Instance.Initialize();
Singleton<DatabaseManager>.Instance.Initialize(
System.Configuration.ConfigurationManager.ConnectionStrings["PostgreSQL"].ConnectionString
, RtInstance.DATABASE_NAME
, PathManager.GetCfgDir() + "DBModel.sql");
Singleton<DataManager>.Instance.Initialize();
Singleton<OperationManager>.Instance.Initialize();
Singleton<EventManager>.Instance.Initialize(PathManager.GetCfgDir() + "EventDefine.xml");
RecipeFileManager.Instance.Initialize(new SicRecipeFileContext());
AccountExManager.Instance.Initialize(true);
Singleton<SystemConfigManager>.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");
WaferManager.Instance.Initialize();
Singleton<DeviceManager>.Instance.DisableAsyncInitialize = true;
IoManager.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm1\\interlockPM1.xml");
Singleton<DeviceManager>.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm1\\DeviceModelPM1.xml", "Sic",
ModuleName.PM1, "PM1", false);
IoManager.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm2\\interlockPM2.xml");
Singleton<DeviceManager>.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm2\\DeviceModelPM2.xml", "Sic",
ModuleName.PM2, "PM2", false);
Singleton<DeviceManager>.Instance.Initialize(PathManager.GetCfgDir() + "tm\\DeviceModelSystem.xml", "Sic",
ModuleName.System, "TM", true);
DataCollectionManager.Instance.Initialize(
new string[] { "System", "IO.PM1", "IO.PM2", "IO.TM", "PM1", "PM2" }, RtInstance.DATABASE_NAME);
RtSystemManager.Instance.AddCustomBackend("SC", new BackendSCConfigView());
Singleton<EquipmentManager>.Instance.Initialize();
//! !!!!注意
// 注意构建和启动DeviceManager状态机的时机不要早于EquipmentManager因为EquipmentManger中
// 的InitModules()方法构建模组时如果模组被配置为NotInstalled则模组所属的Device会被禁用。
// 若过早的使能DeviceManager被卸载的Module可能产生误报警。
Singleton<DeviceEntity>.Instance.Initialize();
HistoryCoatingManager.Instance.Initialize();
}
public void Terminate()
{
Singleton<DeviceEntity>.Instance.Terminate();
Singleton<DeviceManager>.Instance.Terminate();
IoProviderManager.Instance.Terminate();
Singleton<SystemConfigManager>.Instance.Terminate();
DataCollectionManager.Instance.Terminate();
Singleton<WcfServiceManager>.Instance.Terminate();
Singleton<EventManager>.Instance.Terminate();
Singleton<LogManager>.Instance.Terminate();
Singleton<DatabaseManager>.Instance.Terminate();
}
}
}