2023-05-23 18:19:47 +08:00
|
|
|
|
using Aitex.Core.RT.DataCenter;
|
|
|
|
|
using Aitex.Core.RT.Device;
|
2023-05-26 16:18:28 +08:00
|
|
|
|
using Aitex.Core.RT.OperationCenter;
|
|
|
|
|
using Newtonsoft.Json;
|
2023-05-23 18:19:47 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Xml;
|
|
|
|
|
|
|
|
|
|
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MfcCalculation
|
|
|
|
|
{
|
|
|
|
|
public class MfcManager : BaseDevice, IDevice
|
|
|
|
|
{
|
2023-05-26 16:18:28 +08:00
|
|
|
|
public List<string> NameList = new List<string>()
|
|
|
|
|
{
|
|
|
|
|
"Ar",
|
|
|
|
|
"H2",
|
|
|
|
|
"C2H4",
|
|
|
|
|
"SiH4",
|
|
|
|
|
"HCL",
|
|
|
|
|
"N2",
|
|
|
|
|
"TCS",
|
|
|
|
|
"TMA"
|
|
|
|
|
};
|
|
|
|
|
public List<DataFlow> DataFlowList = new List<DataFlow>();
|
|
|
|
|
private readonly object locker = new object();
|
2023-05-25 19:08:06 +08:00
|
|
|
|
//public static double H2 { get; private set; }
|
2023-05-26 16:18:28 +08:00
|
|
|
|
//public static double ArFlow { get; private set; }
|
2023-05-24 10:40:40 +08:00
|
|
|
|
public static double HCL_Run { get; private set; }
|
|
|
|
|
public static double TMA_Run { get; private set; }
|
|
|
|
|
public static double TCS_Run { get; private set; }
|
|
|
|
|
public static double PN2_Run { get; private set; }
|
|
|
|
|
|
2023-05-25 19:08:06 +08:00
|
|
|
|
//public static double HCL_Vent { get; private set; }
|
|
|
|
|
//public static double TMA_Vent { get; private set; }
|
|
|
|
|
//public static double TCS_Vent { get; private set; }
|
|
|
|
|
//public static double PN2_Vent { get; private set; }
|
2023-05-23 18:19:47 +08:00
|
|
|
|
|
|
|
|
|
public MfcManager(string module, XmlElement node, string ioModule = "")
|
|
|
|
|
{
|
|
|
|
|
var attrModule = node.GetAttribute("module");
|
|
|
|
|
base.Module = string.IsNullOrEmpty(attrModule) ? module : attrModule;
|
|
|
|
|
base.Name = node.GetAttribute("id");
|
|
|
|
|
base.Display = node.GetAttribute("display");
|
|
|
|
|
base.DeviceID = node.GetAttribute("schematicId");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public bool Initialize()
|
|
|
|
|
{
|
2023-05-26 16:18:28 +08:00
|
|
|
|
DATA.Subscribe($"{Module}.MfcManager.DataFlow", () => GetDataFlowJsonString());
|
|
|
|
|
OP.Subscribe($"{Module}.FlowName.Query", (string cmd, object[] args) => Query(args[0].ToString()) );
|
2023-05-23 18:19:47 +08:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
protected override void HandleMonitor()
|
|
|
|
|
{
|
2023-05-25 19:08:06 +08:00
|
|
|
|
//H2 = Convert.ToDouble(DATA.Poll($"{Module}.H2_Join.FeedBack"));
|
|
|
|
|
//ArFlow = Convert.ToDouble(DATA.Poll($"{Module}.ArFlow_Join.FeedBack"));
|
2023-05-24 10:40:40 +08:00
|
|
|
|
|
|
|
|
|
HCL_Run = Convert.ToDouble(DATA.Poll($"{Module}.HCL_Run.FeedBack"));
|
|
|
|
|
TMA_Run = Convert.ToDouble(DATA.Poll($"{Module}.TMA_Run.FeedBack"));
|
|
|
|
|
TCS_Run = Convert.ToDouble(DATA.Poll($"{Module}.TCS_Run.FeedBack"));
|
|
|
|
|
PN2_Run = Convert.ToDouble(DATA.Poll($"{Module}.PN2_Run.FeedBack"));
|
|
|
|
|
|
2023-05-25 19:08:06 +08:00
|
|
|
|
//HCL_Vent = Convert.ToDouble(DATA.Poll($"{Module}.HCL_Vent.FeedBack"));
|
|
|
|
|
//TMA_Vent = Convert.ToDouble(DATA.Poll($"{Module}.TMA_Vent.FeedBack"));
|
|
|
|
|
//TCS_Vent = Convert.ToDouble(DATA.Poll($"{Module}.TCS_Vent.FeedBack"));
|
|
|
|
|
//PN2_Vent = Convert.ToDouble(DATA.Poll($"{Module}.PN2_Vent.FeedBack"));
|
2023-05-26 16:18:28 +08:00
|
|
|
|
|
|
|
|
|
|
2023-05-23 18:19:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Terminate()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Reset()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
2023-05-26 16:18:28 +08:00
|
|
|
|
private string GetDataFlowJsonString()
|
|
|
|
|
{
|
|
|
|
|
lock (locker)
|
|
|
|
|
{
|
|
|
|
|
string str = JsonConvert.SerializeObject(FactorDataFlow());
|
|
|
|
|
return str;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
private List<DataFlow> FactorDataFlow()
|
|
|
|
|
{
|
|
|
|
|
List<DataFlow> flows = new List<DataFlow>();
|
|
|
|
|
foreach (var item in NameList)
|
|
|
|
|
{
|
|
|
|
|
flows.Add(new DataFlow()
|
|
|
|
|
{
|
|
|
|
|
Name= item,
|
|
|
|
|
RunFeedBack= Convert.ToDouble(DATA.Poll($"{Module}.{item}_Run.FeedBack")),
|
|
|
|
|
VentFeedBack = Convert.ToDouble(DATA.Poll($"{Module}.{item}_Vent.FeedBack")),
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return DataFlowList = flows;
|
|
|
|
|
}
|
|
|
|
|
private bool Query(string flowName)
|
|
|
|
|
{
|
2023-05-31 10:29:25 +08:00
|
|
|
|
MfcSqlHelp.Query(Module, "Flow" ,flowName);
|
2023-05-26 16:18:28 +08:00
|
|
|
|
return true;
|
|
|
|
|
}
|
2023-05-23 18:19:47 +08:00
|
|
|
|
}
|
|
|
|
|
}
|