修正Interlock在PLC同步数据之前可能意外错误触发的问题
调整ToolLoader中初始化各个管理器的顺序,以确保InterlockManager运行前PLC至少同步一次数据。 ToolLoader中增加IoProvider数据同步是否完成的检查。 修正和优化InterlockManager相关对象。 修正Module状态指示器的一些显示问题。
This commit is contained in:
parent
1a71898bc1
commit
33a1da6731
|
@ -10,7 +10,7 @@ using MECF.Framework.RT.Core.IoProviders;
|
|||
|
||||
namespace SicModules.Devices
|
||||
{
|
||||
public partial class SiemensIoProvider : IoProvider
|
||||
public class SiemensIoProvider : IoProvider
|
||||
{
|
||||
private string _diVariable;
|
||||
private string _doVariable;
|
||||
|
@ -88,10 +88,6 @@ namespace SicModules.Devices
|
|||
//byte[] byteArr = BitConverter.GetBytes(input[0]);
|
||||
//float fValve = BitConverter.ToSingle(byteArr, 0);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var diData = ReadDIn();
|
||||
//if (IsCommunicationError) return CommunicationError();
|
||||
if (diData != null)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using Aitex.Core.RT.DataCollection.HighPerformance;
|
||||
using Aitex.Core.RT.IOCore.Interlock;
|
||||
using SicRT.Equipments.Systems;
|
||||
using MECF.Framework.UI.Client.TrayThickness.HistoryData;
|
||||
using MECF.Framework.Common.Aitex.Core.Common.DeviceData;
|
||||
|
@ -17,31 +18,26 @@ namespace SicRT.Instances
|
|||
|
||||
public void Initialize()
|
||||
{
|
||||
#region Prepare Env
|
||||
|
||||
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");
|
||||
|
||||
AccountExManager.Instance.Initialize(true);
|
||||
Singleton<SystemConfigManager>.Instance.Initialize(PathManager.GetCfgDir() + "System.sccfg");
|
||||
RecipeFileManager.Instance.Initialize(new SicRecipeFileContext());
|
||||
|
||||
AccountExManager.Instance.Initialize(true);
|
||||
#endregion
|
||||
|
||||
Singleton<SystemConfigManager>.Instance.Initialize(PathManager.GetCfgDir() + "System.sccfg");
|
||||
|
||||
ConnectionManager.Instance.Initialize();
|
||||
|
||||
MultiProcessClient.Instance.Initialize();
|
||||
|
||||
string ioProviderPathFile = PathManager.GetCfgDir() + "IoProviderConfig.xml";
|
||||
|
||||
var ioProviderPathFile = PathManager.GetCfgDir() + "IoProviderConfig.xml";
|
||||
IoProviderManager.Instance.Initialize(ioProviderPathFile);
|
||||
|
||||
WaferManager.Instance.Initialize();
|
||||
|
@ -70,21 +66,26 @@ namespace SicRT.Instances
|
|||
// 若过早的使能DeviceManager,被卸载的Module可能产生误报警。
|
||||
Singleton<DeviceEntity>.Instance.Initialize();
|
||||
|
||||
// make sure the PLC data has been synced at least once to avoid erroneous warnings or alarms.
|
||||
IoProviderManager.Instance.WaitFirstSync(1000);
|
||||
|
||||
HistoryCoatingManager.Instance.Initialize();
|
||||
|
||||
if (Singleton<EquipmentManager>.Instance.Modules[ModuleName.TM].IsInstalled)
|
||||
IoManager.Instance.Initialize(PathManager.GetCfgDir() + "tm\\interlock.xml");
|
||||
Singleton<InterlockManager>.Instance.Initialize(PathManager.GetCfgDir() + "tm\\interlock.xml", IoManager.Instance);
|
||||
|
||||
if (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1].IsInstalled)
|
||||
IoManager.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm1\\interlockPM1.xml");
|
||||
Singleton<InterlockManager>.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm1\\interlockPM1.xml", IoManager.Instance);
|
||||
|
||||
if (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM2].IsInstalled)
|
||||
IoManager.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm2\\interlockPM2.xml");
|
||||
Singleton<InterlockManager>.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm2\\interlockPM2.xml", IoManager.Instance);
|
||||
|
||||
MaintainManager2.Instance.Initialize();
|
||||
|
||||
Singleton<ProcessHistoryItemsDefault>.Instance.Initialize();
|
||||
|
||||
#region Post Prepare Env
|
||||
|
||||
//! DataCollectionManager必须在最后初始化,否则在其之后注册的DATA数据均会被忽略
|
||||
//Singleton<DataCollectionManager>.Instance.Initialize();
|
||||
Singleton<DataTraceManager>.Instance.Initialize(["System", "IO.PM1", "IO.PM2", "IO.TM", "PM1", "PM2"]);
|
||||
|
@ -92,7 +93,7 @@ namespace SicRT.Instances
|
|||
//开启循环删除数据库
|
||||
Singleton<DataBaseCleanerManager>.Instance.Initialize();
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -462,6 +462,11 @@
|
|||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.Resources>
|
||||
<Style TargetType="controls:ModuleStatusIndicator">
|
||||
<Setter Property="Margin" Value="0,2,4,2"/>
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
<controls:ModuleStatusIndicator
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
|
@ -470,7 +475,9 @@
|
|||
IsOnline="{Binding IsOnlineSystem}"
|
||||
ModuleDescription="All Module"
|
||||
ModuleName="System"
|
||||
Status="{Binding RtStatus}" />
|
||||
Status="{Binding RtStatus}"
|
||||
d:IsOnline="true"
|
||||
d:Status="Test"/>
|
||||
<controls:ModuleStatusIndicator
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
|
|
Loading…
Reference in New Issue