[RT.Core]

ProcessDataStatManager中注册DATA,用于从RT向UI传输数据列表。
This commit is contained in:
SL 2023-08-01 15:35:11 +08:00
parent 0c558ac336
commit 1c2b644a40
8 changed files with 148 additions and 40 deletions

View File

@ -0,0 +1,33 @@
// /************************************************************************
// * @file ExchangeDataBase.cs
// * @author Su Liang
// * @date 2023/02/26
// *
// * @copyright &copy Sicentury Inc.
// *
// * @brief
// *
// * @details
// *
// *
// * *****************************************************************************/
using System;
using System.Runtime.Serialization;
namespace Aitex.Core.Common.DeviceData.IoDevice.Base
{
[Serializable]
[DataContract]
public class DeviceDataBase : XDataBase
{
[DataMember]
public string Status { get; set; }
[DataMember]
public bool IsBusy { get; set; }
[DataMember]
public bool IsAlarm { get; set; }
}
}

View File

@ -1,58 +1,35 @@
// /************************************************************************
// * @file ExchangeDataBase.cs
// * @author Su Liang
// * @date 2023/02/26
// *
// * @copyright &copy Sicentury Inc.
// *
// * @brief
// *
// * @details
// *
// *
// * *****************************************************************************/
using MECF.Framework.Common.CommonData;
using System;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using System.Threading.Tasks;
using MECF.Framework.Common.CommonData;
namespace Aitex.Core.Common.DeviceData.IoDevice
namespace Aitex.Core.Common.DeviceData.IoDevice.Base
{
[Serializable]
[DataContract]
public class DeviceDataBase : NotifiableItem, IDeviceData
public class XDataBase : NotifiableItem, IDeviceData
{
[DataMember]
public string Status { get; set; }
[DataMember]
public bool IsBusy { get; set; }
[DataMember]
public bool IsAlarm { get; set; }
public void Update(IDeviceData data)
{
if (data == null)
return;
var targetProps = GetType().GetProperties()
.Where(prop => Attribute.IsDefined((MemberInfo)prop, typeof(DataMemberAttribute)));
var sourceProps = data.GetType().GetProperties()
.Where(prop => Attribute.IsDefined((MemberInfo)prop, typeof(DataMemberAttribute)));
Parallel.ForEach(targetProps, pi =>
{
var srcPi = sourceProps.FirstOrDefault(x => x.Name == pi.Name);
if(srcPi == null)
if (srcPi == null)
return;
pi.SetValue(this, srcPi.GetValue(data));
});
}
}
}
}

View File

@ -0,0 +1,61 @@
using System;
using System.Runtime.Serialization;
using Aitex.Core.Common.DeviceData.IoDevice.Base;
namespace Aitex.Core.Common.DeviceData.IoDevice
{
public class AITProcessRunData : XDataBase
{
[DataMember]
public Guid Uid { get; set; }
[DataMember]
public int Index { get; set; }
[DataMember]
public string Module { get; set; }
[DataMember]
public string WaferId { get; set; }
[DataMember]
public string RecipeName { get; set; }
[DataMember]
public DateTime? ProcessBegin { get; set; }
[DataMember]
public DateTime? ProcessEnd { get; set; }
[DataMember]
public double H2 { get; set; }
[DataMember]
public double Ar { get; set; }
[DataMember]
public double PN2 { get; set; }
[DataMember]
public double HCL { get; set; }
[DataMember]
public double SiH4 { get; set; }
[DataMember]
public double C2H4 { get; set; }
[DataMember]
public double TCS { get; set; }
[DataMember]
public double TMA { get; set; }
[DataMember]
public double HeaterPowerConsumption { get; set; }
}
}

View File

@ -1,5 +1,6 @@
using System;
using System.Runtime.Serialization;
using Aitex.Core.Common.DeviceData.IoDevice.Base;
namespace Aitex.Core.Common.DeviceData.IoDevice
{

View File

@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Generic;
namespace MECF.Framework.Common.Aitex.Core.Common.DeviceData.IoDevice
{

View File

@ -240,9 +240,11 @@
<Compile Include="Aitex\Core\Common\DeviceData\FlowMeterAlarmItem.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\GasFlowSum.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\IDeviceData.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\IoDevice\ExchangeDataBase.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\IoDevice\AITProcessRunData.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\Base\DeviceDataBase.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\IoDevice\IoPsuData.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\IoDevice\MfcTestData.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\Base\XDataBase.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\LidState.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\MfcCtrlMode.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\MfcRorData.cs" />

View File

@ -133,6 +133,7 @@ namespace MECF.Framework.Common.DataCenter
[ServiceKnownType(typeof(ManualTransferTask))]
[ServiceKnownType(typeof(ManualTransferTask[]))]
[ServiceKnownType(typeof(IoPsuData))]
[ServiceKnownType(typeof(List<AITProcessRunData>))]
[ServiceKnownType(typeof(STBlinkPattern))]
[ServiceKnownType(typeof(MfcRorData))]
[ServiceKnownType(typeof(List<MfcRorData>))]

View File

@ -1,11 +1,14 @@
#define _FAKE_DATA
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Windows.Data;
using Aitex.Core.Common.DeviceData.IoDevice;
using Aitex.Core.RT.DataCenter;
using Aitex.Core.RT.Log;
using MECF.Framework.Common.DataCenter;
using Sicentury.Core.Collections;
@ -50,6 +53,8 @@ namespace MECF.Framework.RT.Core.Managers.PDS
// 加载历史记录。
ReadLastFlowCounts();
DATA.Subscribe($"{Module}.ProcessDataStat.RealtimeList", ()=> ProcessRunDataList);
#if FAKE_DATA
_randomFlow = new Random();
@ -116,6 +121,40 @@ namespace MECF.Framework.RT.Core.Managers.PDS
}
}
public List<AITProcessRunData> ProcessRunDataList
{
get
{
var list = new List<AITProcessRunData>();
lock (_syncObject)
{
foreach (var item in GasFlowCountCollection)
{
list.Add(new AITProcessRunData
{
Uid = item.StatisticsUid,
Module = item.Module,
RecipeName = item.RecipeName,
WaferId = item.WaferId,
ProcessBegin = item.StatisticsStart,
ProcessEnd = item.StatisticsEnd,
H2 = item.H2.Total,
Ar = item.Ar.Total,
PN2 = item.PN2.Total,
HCL = item.HCL.Total,
SiH4 = item.SiH4.Total,
C2H4 = item.C2H4.Total,
TCS = item.TCS.Total,
TMA = item.TMA.Total,
HeaterPowerConsumption = item.HeaterPowerConsumption.Total
});
}
}
return list;
}
}
#endregion
#region Methods