[RT.Equipment]

修正GasFlowUnit中如果未能读取Ratio设置,则流量计算结果总是为0的问题。
修正ProcessDataStatCounter对象中Poll数据返回null导致异常的问题。
This commit is contained in:
SL 2023-08-08 16:24:34 +08:00
parent aee33017b2
commit 3e6f08c0f8
2 changed files with 17 additions and 5 deletions

View File

@ -17,6 +17,7 @@ namespace MECF.Framework.RT.Core.Managers.PDS
private DateTime _lastPollingTime = DateTime.MinValue; private DateTime _lastPollingTime = DateTime.MinValue;
private readonly R_TRIG _trigDataPollingError = new(); private readonly R_TRIG _trigDataPollingError = new();
private FunFilter _dataFilter; private FunFilter _dataFilter;
private readonly R_TRIG _rTrigPollDataFailed = new();
#endregion #endregion
@ -94,7 +95,15 @@ namespace MECF.Framework.RT.Core.Managers.PDS
var sum = 0.0d; var sum = 0.0d;
foreach (var pdata in DataPath) foreach (var pdata in DataPath)
{ {
var sFlow = DATA.Poll(pdata).ToString(); var polled = DATA.Poll(pdata);
_rTrigPollDataFailed.CLK = polled == null;
if(_trigDataPollingError.Q)
LOG.Error($"Failed to count {pdata}, unable to poll data from RT");
if (polled == null)
continue;
var sFlow = polled.ToString();
if (double.TryParse(sFlow, out var dFlow)) if (double.TryParse(sFlow, out var dFlow))
{ {
sum += dFlow * ts.TotalSeconds; sum += dFlow * ts.TotalSeconds;

View File

@ -55,8 +55,8 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.GasFlow
public void Initialize(string moduleName) public void Initialize(string moduleName)
{ {
ModuleName = moduleName; ModuleName = moduleName;
SC.RegisterValueChangedCallback($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}", (o) => { Set_Callback(o.ToString()); }); SC.RegisterValueChangedCallback($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}", OnGasFlowRatioSCChanged);
GasFlowRatioValue = SC.GetValue<double>($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}"); GasFlowRatioValue = SC.SafeGetValue<double>($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}", 1d);
if (GasName == "PN2_Vent") if (GasName == "PN2_Vent")
DATA.Subscribe($"{ModuleName}.GasRealTimeFlow.{GasName}.FeedBackSpecial", () => PN2_VentSpecial, SubscriptionAttribute.FLAG.IgnoreSaveDB);//仅作为显示用,不存储数据库 DATA.Subscribe($"{ModuleName}.GasRealTimeFlow.{GasName}.FeedBackSpecial", () => PN2_VentSpecial, SubscriptionAttribute.FLAG.IgnoreSaveDB);//仅作为显示用,不存储数据库
@ -67,9 +67,12 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.GasFlow
row.Initialize(moduleName, GasName); row.Initialize(moduleName, GasName);
} }
public void Set_Callback(string str = "") private void OnGasFlowRatioSCChanged(object value)
{ {
GasFlowRatioValue = SC.GetValue<double>($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}"); if (value is double ratio)
GasFlowRatioValue = ratio;
else
GasFlowRatioValue = 1d;
} }
public double GetGasFlowFeedBack() public double GetGasFlowFeedBack()