Sic08/SicRT/Instances/ToolLoader.cs

102 lines
3.8 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 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();
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);
WaferManager.Instance.Initialize();
Singleton<DeviceManager>.Instance.DisableAsyncInitialize = true;
Singleton<DeviceManager>.Instance.Initialize(PathManager.GetCfgDir() + "pm\\pm1\\DeviceModelPM1.xml", "Sic",
ModuleName.PM1, "PM1", false);
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);
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();
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();
}
public void Terminate()
{
Singleton<DeviceEntity>.Instance.Terminate();
Singleton<DeviceManager>.Instance.Terminate();
IoProviderManager.Instance.Terminate();
Singleton<SystemConfigManager>.Instance.Terminate();
Singleton<DataCollectionManager>.Instance.Terminate();
Singleton<WcfServiceManager>.Instance.Terminate();
Singleton<EventManager>.Instance.Terminate();
Singleton<LogManager>.Instance.Terminate();
Singleton<DataBaseManager>.Instance.Terminate();
}
}
}