2023-07-16 16:24:26 +08:00
|
|
|
|
using Aitex.Core.RT.DataCenter;
|
2023-07-16 21:26:41 +08:00
|
|
|
|
using Aitex.Core.RT.OperationCenter;
|
2023-07-16 16:24:26 +08:00
|
|
|
|
using Aitex.Core.RT.SCCore;
|
2023-07-14 17:49:01 +08:00
|
|
|
|
using Aitex.Core.Util;
|
2023-07-16 16:24:26 +08:00
|
|
|
|
using MECF.Framework.Common.Aitex.Core.Common.DeviceData;
|
2023-07-14 17:49:01 +08:00
|
|
|
|
using MECF.Framework.Common.Equipment;
|
2023-07-16 21:26:41 +08:00
|
|
|
|
using System;
|
2023-07-14 17:49:01 +08:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
2023-07-16 16:24:26 +08:00
|
|
|
|
using System.Linq;
|
2023-07-16 21:26:41 +08:00
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Threading.Tasks;
|
2023-07-14 17:49:01 +08:00
|
|
|
|
using System.Xml.Linq;
|
|
|
|
|
using System.Xml.Serialization;
|
|
|
|
|
|
|
|
|
|
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.GasFlow
|
|
|
|
|
{
|
|
|
|
|
[XmlType(typeName: "PMGsaFlow")]
|
|
|
|
|
public class PMAllGsa
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// PM腔体中气体
|
|
|
|
|
/// </summary>
|
|
|
|
|
[XmlElement("GasFlowUnit")]
|
|
|
|
|
public List<GasFlowUnit> GasFlowUnitList { get; set; }
|
|
|
|
|
|
2023-07-16 16:24:26 +08:00
|
|
|
|
public string ModuleName { get; set; }
|
|
|
|
|
|
2023-07-16 21:26:41 +08:00
|
|
|
|
public List<string> GasNameList { get; set; }
|
|
|
|
|
|
2023-07-16 16:24:26 +08:00
|
|
|
|
public List<GasFlowSum> GasFlowSumList { get; set; }
|
|
|
|
|
|
2023-07-16 21:26:41 +08:00
|
|
|
|
private DateTime start;
|
|
|
|
|
private DateTime end;
|
|
|
|
|
|
2023-07-14 17:49:01 +08:00
|
|
|
|
public void Initialize(string moduleName)
|
|
|
|
|
{
|
2023-07-16 16:24:26 +08:00
|
|
|
|
IniGasUnit(moduleName);
|
|
|
|
|
|
2023-07-16 21:26:41 +08:00
|
|
|
|
DATA.Subscribe($"{ModuleName}.PMGasNameList", () => GasNameList);
|
2023-07-16 16:24:26 +08:00
|
|
|
|
DATA.Subscribe($"{ModuleName}.PMGasFlowSumList", () => GasFlowSumList);
|
|
|
|
|
|
2023-07-16 21:26:41 +08:00
|
|
|
|
OP.Subscribe($"{ModuleName}.GasFlowSum.Query", (string cmd, object[] args) => Query(args));
|
|
|
|
|
|
2023-07-17 15:22:15 +08:00
|
|
|
|
OP.Subscribe($"{ModuleName}.GasFlowSum.QueryAll", (string cmd, object[] args) => QueryAll(args));
|
|
|
|
|
|
2023-07-16 16:24:26 +08:00
|
|
|
|
var _thread = new PeriodicJob(1000, OnTimer, $"{moduleName}.ModuleGsaFlow", true);
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-16 21:26:41 +08:00
|
|
|
|
private bool OnTimer()
|
|
|
|
|
{
|
|
|
|
|
foreach (var Unit in GasFlowUnitList)
|
|
|
|
|
{
|
|
|
|
|
Unit.GetGasFlowFeedBack();
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化单个气体和界面气体统计对象
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="moduleName"></param>
|
2023-07-16 16:24:26 +08:00
|
|
|
|
private void IniGasUnit(string moduleName)
|
|
|
|
|
{
|
|
|
|
|
ModuleName = moduleName;
|
|
|
|
|
|
|
|
|
|
GasFlowSumList = new();
|
|
|
|
|
|
2023-07-17 15:22:15 +08:00
|
|
|
|
GasNameList = new() { "All"};//添加总的查询选项
|
2023-07-16 16:24:26 +08:00
|
|
|
|
|
|
|
|
|
//单中气体初始化
|
2023-07-14 17:49:01 +08:00
|
|
|
|
foreach (var unit in GasFlowUnitList)
|
|
|
|
|
{
|
2023-07-16 16:24:26 +08:00
|
|
|
|
unit.Initialize(moduleName);
|
2023-07-17 15:22:15 +08:00
|
|
|
|
|
|
|
|
|
string gasName = unit.GasName.Split('_')[0];//气体格式定位为H2_Run H2_Vent,所以根据下划线来拆分
|
2023-07-16 16:24:26 +08:00
|
|
|
|
|
2023-07-16 21:26:41 +08:00
|
|
|
|
if (!GasNameList.Contains(gasName))
|
|
|
|
|
GasNameList.Add(gasName);
|
2023-07-14 17:49:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-07-17 15:22:15 +08:00
|
|
|
|
for (int i = 1; i < GasNameList.Count; i++)//第一个是All选项,不参与对象生成
|
2023-07-16 16:24:26 +08:00
|
|
|
|
{
|
2023-07-17 15:22:15 +08:00
|
|
|
|
GasFlowSumList.Add(new GasFlowSum() { Name = GasNameList[i] });
|
2023-07-16 16:24:26 +08:00
|
|
|
|
}
|
2023-07-17 15:22:15 +08:00
|
|
|
|
|
2023-07-14 17:49:01 +08:00
|
|
|
|
}
|
2023-07-16 21:26:41 +08:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
2023-07-17 15:22:15 +08:00
|
|
|
|
/// 单种气体体积使用查询
|
2023-07-16 21:26:41 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="objects"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private bool Query(object[] objects)
|
2023-07-14 17:49:01 +08:00
|
|
|
|
{
|
2023-07-16 21:26:41 +08:00
|
|
|
|
Task.Run(() =>
|
2023-07-14 17:49:01 +08:00
|
|
|
|
{
|
2023-07-16 21:26:41 +08:00
|
|
|
|
string flowName = objects[0].ToString();
|
|
|
|
|
start = Convert.ToDateTime(objects[1]);
|
|
|
|
|
end = Convert.ToDateTime(objects[2]);
|
|
|
|
|
|
2023-07-17 15:22:15 +08:00
|
|
|
|
QueryRunVentVolume(flowName + "_Run");
|
|
|
|
|
QueryRunVentVolume(flowName + "_Vent");
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 所有气体使用体积查询
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="objects"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private bool QueryAll(object[] objects)
|
|
|
|
|
{
|
|
|
|
|
Task.Run(() =>
|
|
|
|
|
{
|
|
|
|
|
start = Convert.ToDateTime(objects[0]);
|
|
|
|
|
end = Convert.ToDateTime(objects[1]);
|
|
|
|
|
|
|
|
|
|
foreach (var item in GasFlowSumList)
|
2023-07-16 21:26:41 +08:00
|
|
|
|
{
|
2023-07-17 15:22:15 +08:00
|
|
|
|
QueryRunVentVolume(item.Name + "_Run");
|
|
|
|
|
QueryRunVentVolume(item.Name + "_Vent");
|
2023-07-16 21:26:41 +08:00
|
|
|
|
}
|
2023-07-17 15:22:15 +08:00
|
|
|
|
|
2023-07-16 21:26:41 +08:00
|
|
|
|
});
|
2023-07-14 17:49:01 +08:00
|
|
|
|
return true;
|
|
|
|
|
}
|
2023-07-16 21:26:41 +08:00
|
|
|
|
private void QueryRunVentVolume(string flowName)
|
|
|
|
|
{
|
|
|
|
|
Task.Run(() =>
|
|
|
|
|
{
|
|
|
|
|
double values = GasFlowSqlHelp.Query(ModuleName, "GasRealTimeFlow." + flowName, start, end);
|
|
|
|
|
foreach (var item in GasFlowSumList)
|
|
|
|
|
{
|
|
|
|
|
if (flowName.Contains(item.Name))
|
|
|
|
|
{
|
|
|
|
|
if (flowName.Contains("Run"))
|
|
|
|
|
item.RunVolume = values * 1.66667 * Math.Pow(10, -7);
|
|
|
|
|
else
|
|
|
|
|
item.VentVolume = values * 1.66667 * Math.Pow(10, -7);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-17 15:22:15 +08:00
|
|
|
|
|
2023-07-16 21:26:41 +08:00
|
|
|
|
|
|
|
|
|
|
2023-07-14 17:49:01 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|