Sic.Framework/MECF.Framework.RT.Equipment.../HardwareUnits/MfcCalculation/MfcManager.cs

113 lines
3.9 KiB
C#
Raw Normal View History

using Aitex.Core.RT.DataCenter;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.OperationCenter;
using Newtonsoft.Json;
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
{
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; }
//public static double ArFlow { get; private set; }
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; }
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()
{
DATA.Subscribe($"{Module}.MfcManager.DataFlow", () => GetDataFlowJsonString());
OP.Subscribe($"{Module}.FlowName.Query", (string cmd, object[] args) => Query(args[0].ToString()) );
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"));
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"));
}
public void Terminate()
{
}
public void Reset()
{
}
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)
{
MfcSqlHelp.Query(Module, "Flow" ,flowName, "FeedBack");
return true;
}
}
}