Sic08/SicRT/Instances/ToolLoader.cs

102 lines
3.8 KiB
C#
Raw Normal View History

using SicRT.Equipments.Systems;
2023-06-06 15:12:57 +08:00
using MECF.Framework.UI.Client.TrayThickness.HistoryData;
2023-03-03 15:42:13 +08:00
namespace SicRT.Instances
{
internal class ToolLoader : IRtLoader
{
#region Variables
2023-03-28 13:24:11 +08:00
2023-03-03 15:42:13 +08:00
#endregion
public void Initialize()
{
Singleton<LogManager>.Instance.Initialize();
LOG.Write($"RT v{RtInstance.SystemVersion} launch ...");
Singleton<ConfigManager>.Instance.Initialize();
2023-06-28 16:00:41 +08:00
Singleton<DataBaseManager>.Instance.Initialize();
2023-03-03 15:42:13 +08:00
Singleton<DataManager>.Instance.Initialize();
2023-03-03 15:42:13 +08:00
Singleton<OperationManager>.Instance.Initialize();
Singleton<EventManager>.Instance.Initialize(PathManager.GetCfgDir() + "EventDefine.xml");
2023-03-03 15:42:13 +08:00
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";
2023-03-28 13:24:11 +08:00
2023-03-03 15:42:13 +08:00
IoProviderManager.Instance.Initialize(ioProviderPathFile);
WaferManager.Instance.Initialize();
Singleton<DeviceManager>.Instance.DisableAsyncInitialize = true;
Singleton<DeviceManager>.Instance.Initialize(PathManager.GetCfgDir() + "tm\\DeviceModelSystem.xml", "Sic",
ModuleName.System, "TM", true);
2023-03-28 13:24:11 +08:00
Singleton<DeviceManager>.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm1\\DeviceModelPM1.xml", "Sic",
ModuleName.PM1, "PM1", false);
2023-03-03 15:42:13 +08:00
Singleton<DeviceManager>.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm2\\DeviceModelPM2.xml", "Sic",
ModuleName.PM2, "PM2", false);
2023-03-03 15:42:13 +08:00
RtSystemManager.Instance.AddCustomBackend("SC", new BackendSCConfigView());
Singleton<EquipmentManager>.Instance.Initialize();
//! !!!!注意
// 注意构建和启动DeviceManager状态机的时机不要早于EquipmentManager因为EquipmentManger中
// 的InitModules()方法构建模组时如果模组被配置为NotInstalled则模组所属的Device会被禁用。
// 若过早的使能DeviceManager被卸载的Module可能产生误报警。
Singleton<DeviceEntity>.Instance.Initialize();
2023-06-06 15:12:57 +08:00
HistoryCoatingManager.Instance.Initialize();
if (Singleton<EquipmentManager>.Instance.Modules[ModuleName.TM].IsInstalled)
IoManager.Instance.Initialize(PathManager.GetCfgDir() + "tm\\interlock.xml");
if (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1].IsInstalled)
IoManager.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm1\\interlockPM1.xml");
if (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM2].IsInstalled)
IoManager.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm2\\interlockPM2.xml");
//! DataCollectionManager必须在最后初始化否则在其之后注册的DATA数据均会被忽略
Singleton<DataCollectionManager>.Instance.Initialize();
2023-03-03 15:42:13 +08:00
}
public void Terminate()
{
Singleton<DeviceEntity>.Instance.Terminate();
Singleton<DeviceManager>.Instance.Terminate();
IoProviderManager.Instance.Terminate();
Singleton<SystemConfigManager>.Instance.Terminate();
Singleton<DataCollectionManager>.Instance.Terminate();
2023-03-03 15:42:13 +08:00
Singleton<WcfServiceManager>.Instance.Terminate();
Singleton<EventManager>.Instance.Terminate();
Singleton<LogManager>.Instance.Terminate();
2023-06-28 16:00:41 +08:00
Singleton<DataBaseManager>.Instance.Terminate();
2023-03-03 15:42:13 +08:00
}
}
}