From 73023e2b44b775157fcdb7e83bcb9a62b0508835 Mon Sep 17 00:00:00 2001 From: "GukSang.Jin" Date: Wed, 27 May 2026 18:46:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ConeCalorimeter/Services/ExperimentDataService.cs | 3 ++- ConeCalorimeter/Services/ModbusRealtimeDataService.cs | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ConeCalorimeter/Services/ExperimentDataService.cs b/ConeCalorimeter/Services/ExperimentDataService.cs index 7329e28..d379ac9 100644 --- a/ConeCalorimeter/Services/ExperimentDataService.cs +++ b/ConeCalorimeter/Services/ExperimentDataService.cs @@ -9,6 +9,7 @@ namespace ConeCalorimeter.Services; public sealed class ExperimentDataService : IExperimentDataService { private const int MaximumRows = 1200; + private const double TotalHeatReleaseDivisor = 1000; private readonly IRealtimeDataService _realtimeDataService; private readonly DispatcherTimer _timer; @@ -167,7 +168,7 @@ public sealed class ExperimentDataService : IExperimentDataService { if (double.IsFinite(snapshot.HeatReleaseRate)) { - _accumulatedTotalHeatRelease += snapshot.HeatReleaseRate * deltaSeconds / 1000; + _accumulatedTotalHeatRelease += snapshot.HeatReleaseRate * deltaSeconds / TotalHeatReleaseDivisor; } if (double.IsFinite(snapshot.SmokeProduction)) diff --git a/ConeCalorimeter/Services/ModbusRealtimeDataService.cs b/ConeCalorimeter/Services/ModbusRealtimeDataService.cs index 1fbc72d..fa4ca16 100644 --- a/ConeCalorimeter/Services/ModbusRealtimeDataService.cs +++ b/ConeCalorimeter/Services/ModbusRealtimeDataService.cs @@ -8,6 +8,7 @@ public sealed class ModbusRealtimeDataService : IRealtimeDataService private const int ScaleCurrentMassStabilityKey = -1; private const double RealtimeZeroTolerance = 0.005; private const int ZeroValueStableReadCount = 2; + private const double HeatReleaseRateDisplayScale = 1000; private const ushort OxygenRegister = 10; private const ushort OrificeFlowRegister = 14; private const ushort OrificePressureRegister = 16; @@ -76,7 +77,7 @@ public sealed class ModbusRealtimeDataService : IRealtimeDataService CarbonDioxide: ReadRangedFloatOrEmpty("CO2", CarbonDioxideRegister, 0, 20), CarbonMonoxide: ReadRangedFloatOrEmpty("CO", CarbonMonoxideRegister, 0, 10), Absorbance: ReadAbsorbanceOrEmpty(), - HeatReleaseRate: ReadRangedFloatOrEmpty("HeatReleaseRate", HeatReleaseRateRegister, 0, 5000), + HeatReleaseRate: ReadHeatReleaseRateOrEmpty(), PeakHeatReleaseRate: ReadRangedFloatOrEmpty("PeakHeatReleaseRate", PeakHeatReleaseRateRegister, 0, 5000), CFactor: ReadRangedFloatOrEmpty("CFactor", CFactorRegister, 0, 1000), Qa180: ReadRangedFloatOrEmpty("Qa180", Qa180Register, 0, 1000), @@ -117,6 +118,14 @@ public sealed class ModbusRealtimeDataService : IRealtimeDataService : double.NaN; } + private double ReadHeatReleaseRateOrEmpty() + { + var value = ReadRangedFloatOrEmpty("HeatReleaseRate", HeatReleaseRateRegister, 0, 5000); + return double.IsFinite(value) + ? value * HeatReleaseRateDisplayScale + : double.NaN; + } + private bool TryUpdateStableAbsorbance(double value, out double stableValue) { stableValue = _stableAbsorbance ?? value;