diff --git a/MECF.Framework.RT.Core/Managers/PDS/ProcessDataStatCounter.cs b/MECF.Framework.RT.Core/Managers/PDS/ProcessDataStatCounter.cs index 18ac62c..55e5c9e 100644 --- a/MECF.Framework.RT.Core/Managers/PDS/ProcessDataStatCounter.cs +++ b/MECF.Framework.RT.Core/Managers/PDS/ProcessDataStatCounter.cs @@ -17,6 +17,7 @@ namespace MECF.Framework.RT.Core.Managers.PDS private DateTime _lastPollingTime = DateTime.MinValue; private readonly R_TRIG _trigDataPollingError = new(); private FunFilter _dataFilter; + private readonly R_TRIG _rTrigPollDataFailed = new(); #endregion @@ -94,7 +95,15 @@ namespace MECF.Framework.RT.Core.Managers.PDS var sum = 0.0d; 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)) { sum += dFlow * ts.TotalSeconds; diff --git a/MECF.Framework.RT.EquipmentLibrary/HardwareUnits/GasFlow/GasFlowUnit.cs b/MECF.Framework.RT.EquipmentLibrary/HardwareUnits/GasFlow/GasFlowUnit.cs index c1d7a6e..8ceaf9a 100644 --- a/MECF.Framework.RT.EquipmentLibrary/HardwareUnits/GasFlow/GasFlowUnit.cs +++ b/MECF.Framework.RT.EquipmentLibrary/HardwareUnits/GasFlow/GasFlowUnit.cs @@ -55,8 +55,8 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.GasFlow public void Initialize(string moduleName) { ModuleName = moduleName; - SC.RegisterValueChangedCallback($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}", (o) => { Set_Callback(o.ToString()); }); - GasFlowRatioValue = SC.GetValue($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}"); + SC.RegisterValueChangedCallback($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}", OnGasFlowRatioSCChanged); + GasFlowRatioValue = SC.SafeGetValue($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}", 1d); if (GasName == "PN2_Vent") 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); } - public void Set_Callback(string str = "") + private void OnGasFlowRatioSCChanged(object value) { - GasFlowRatioValue = SC.GetValue($"PM.{ModuleName}.Efficiency.{GasFlowRatioName}"); + if (value is double ratio) + GasFlowRatioValue = ratio; + else + GasFlowRatioValue = 1d; } public double GetGasFlowFeedBack()