diff --git a/TBF/BenchControl/Sequences/SequenceBase.cs b/TBF/BenchControl/Sequences/SequenceBase.cs index e472be57d..a8c278a11 100644 --- a/TBF/BenchControl/Sequences/SequenceBase.cs +++ b/TBF/BenchControl/Sequences/SequenceBase.cs @@ -1588,123 +1588,125 @@ namespace TBF.BenchControl.Sequences Results.Entities.TestRslt tstRslt = ProcessData.BatchRslts.GetTestRslt(fullTestName, part); - tstRslt.MethodClass = TbfComponents.FindComponent(test.Method).ClassName; - tstRslt.StartTime = DateTime.Now; - tstRslt.EndTime = DateTime.Now + new TimeSpan(0, 0, 1); - tstRslt.FlowSetTime = 10; - tstRslt.TestTime = tstRslt.TargetTime(); - /// TODO: Verify whether 'ltrPerRefPulse' is up to date - tstRslt.PulsesMaster = (LtrPerRefPulse > 1E-6) ? (tstRslt.TargetVolume() / LtrPerRefPulse) : 1; - tstRslt.ConstMasterRaw = LtrPerRefPulse; - tstRslt.ConstMaster = LtrPerRefPulse; - tstRslt.MassStartRaw = 0; - tstRslt.MassStart = 0; - tstRslt.MassEndRaw = tstRslt.TargetVolume() * Config.Formulas.RealDensity() / 1000.0f; - tstRslt.MassEnd = tstRslt.MassEndRaw; - tstRslt.DensityIn = Config.Formulas.RealDensity(); - tstRslt.DensityLine = Config.Formulas.RealDensity(); - tstRslt.DensityDiv = Config.Formulas.RealDensity(); - tstRslt.Buoyancy = Formulas.Buoyancy(); - tstRslt.FlowMass = tstRslt.MassEnd / tstRslt.TargetTime(); - tstRslt.FlowVolume = tstRslt.TargetVolume() / tstRslt.TargetTime(); - tstRslt.VolumeCTV = tstRslt.TargetVolume(); - tstRslt.VolumeMaster = tstRslt.TargetVolume(); - tstRslt.ErrorMaster = 0; + if (tstRslt != null) + { + tstRslt.MethodClass = TbfComponents.FindComponent(test.Method).ClassName; + tstRslt.StartTime = DateTime.Now; + tstRslt.EndTime = DateTime.Now + new TimeSpan(0, 0, 1); + tstRslt.FlowSetTime = 10; + tstRslt.TestTime = tstRslt.TargetTime(); + /// TODO: Verify whether 'ltrPerRefPulse' is up to date + tstRslt.PulsesMaster = (LtrPerRefPulse > 1E-6) ? (tstRslt.TargetVolume() / LtrPerRefPulse) : 1; + tstRslt.ConstMasterRaw = LtrPerRefPulse; + tstRslt.ConstMaster = LtrPerRefPulse; + tstRslt.MassStartRaw = 0; + tstRslt.MassStart = 0; + tstRslt.MassEndRaw = tstRslt.TargetVolume() * Config.Formulas.RealDensity() / 1000.0f; + tstRslt.MassEnd = tstRslt.MassEndRaw; + tstRslt.DensityIn = Config.Formulas.RealDensity(); + tstRslt.DensityLine = Config.Formulas.RealDensity(); + tstRslt.DensityDiv = Config.Formulas.RealDensity(); + tstRslt.Buoyancy = Formulas.Buoyancy(); + tstRslt.FlowMass = tstRslt.MassEnd / tstRslt.TargetTime(); + tstRslt.FlowVolume = tstRslt.TargetVolume() / tstRslt.TargetTime(); + tstRslt.VolumeCTV = tstRslt.TargetVolume(); + tstRslt.VolumeMaster = tstRslt.TargetVolume(); + tstRslt.ErrorMaster = 0; - tstRslt.AmbTempMean = 20.0f; - tstRslt.AmbPressMean = 1.0f; - tstRslt.AmbHumiMean = 50.0f; + tstRslt.AmbTempMean = 20.0f; + tstRslt.AmbPressMean = 1.0f; + tstRslt.AmbHumiMean = 50.0f; - tstRslt.PressUpStart = 1.0f; - tstRslt.PressDownStart = 1.0f; - tstRslt.TempUpStart = 20.0f; - tstRslt.TempDownStart = 20.0f; - tstRslt.TempDivStart = 20.0f; - tstRslt.PressUpEnd = 1.0f; - tstRslt.PressDownEnd = 1.0f; - tstRslt.TempUpEnd = 20.0f; - tstRslt.TempDownEnd = 20.0f; - tstRslt.TempDivEnd = 20.0f; - tstRslt.PressUpMean = 1.0f; - tstRslt.PressDownMean = 1.0f; - tstRslt.TempUpMean = 20.0f; - tstRslt.TempDownMean = 20.0f; - tstRslt.TempDivMean = 20.0f; - tstRslt.PressUpMin = 1.0f; - tstRslt.PressDownMin = 1.0f; - tstRslt.TempUpMin = 20.0f; - tstRslt.TempDownMin = 20.0f; - tstRslt.TempDivMin = 20.0f; - tstRslt.PressUpMax = 1.0f; - tstRslt.PressDownMax = 1.0f; - tstRslt.TempUpMax = 20.0f; - tstRslt.TempDownMax = 20.0f; - tstRslt.TempDivMax = 20.0f; - tstRslt.ConductMin = Conductivity.Val; - tstRslt.ConductMax = Conductivity.Val; + tstRslt.PressUpStart = 1.0f; + tstRslt.PressDownStart = 1.0f; + tstRslt.TempUpStart = 20.0f; + tstRslt.TempDownStart = 20.0f; + tstRslt.TempDivStart = 20.0f; + tstRslt.PressUpEnd = 1.0f; + tstRslt.PressDownEnd = 1.0f; + tstRslt.TempUpEnd = 20.0f; + tstRslt.TempDownEnd = 20.0f; + tstRslt.TempDivEnd = 20.0f; + tstRslt.PressUpMean = 1.0f; + tstRslt.PressDownMean = 1.0f; + tstRslt.TempUpMean = 20.0f; + tstRslt.TempDownMean = 20.0f; + tstRslt.TempDivMean = 20.0f; + tstRslt.PressUpMin = 1.0f; + tstRslt.PressDownMin = 1.0f; + tstRslt.TempUpMin = 20.0f; + tstRslt.TempDownMin = 20.0f; + tstRslt.TempDivMin = 20.0f; + tstRslt.PressUpMax = 1.0f; + tstRslt.PressDownMax = 1.0f; + tstRslt.TempUpMax = 20.0f; + tstRslt.TempDownMax = 20.0f; + tstRslt.TempDivMax = 20.0f; + tstRslt.ConductMin = Conductivity.Val; + tstRslt.ConductMax = Conductivity.Val; - tstRslt.FlowMean = (float)RefFlowStat.Average; - tstRslt.FlowStart = (float)RefFlowStat.First; - tstRslt.FlowEnd = (float)RefFlowStat.Last; - tstRslt.FlowMin = (float)RefFlowStat.Min; - tstRslt.FlowMax = (float)RefFlowStat.Max; + tstRslt.FlowMean = (float)RefFlowStat.Average; + tstRslt.FlowStart = (float)RefFlowStat.First; + tstRslt.FlowEnd = (float)RefFlowStat.Last; + tstRslt.FlowMin = (float)RefFlowStat.Min; + tstRslt.FlowMax = (float)RefFlowStat.Max; - for (int i = 0; i < BatchRslts.WMPositionsCount; i++) - { - Results.Entities.MeterTestRslt compoundRslt = ProcessData.BatchRslts.GetMeterTestRslt(fullTestName, i, CompoundMeterId.Compound); - Results.Entities.MeterTestRslt mainRslt = ProcessData.BatchRslts.GetMeterTestRslt(fullTestName, i, CompoundMeterId.CompoundMain); - Results.Entities.MeterTestRslt auxRslt = ProcessData.BatchRslts.GetMeterTestRslt(fullTestName, i, CompoundMeterId.CompoundAux); + for (int i = 0; i < BatchRslts.WMPositionsCount; i++) + { + Results.Entities.MeterTestRslt compoundRslt = ProcessData.BatchRslts.GetMeterTestRslt(fullTestName, i, CompoundMeterId.Compound); + Results.Entities.MeterTestRslt mainRslt = ProcessData.BatchRslts.GetMeterTestRslt(fullTestName, i, CompoundMeterId.CompoundMain); + Results.Entities.MeterTestRslt auxRslt = ProcessData.BatchRslts.GetMeterTestRslt(fullTestName, i, CompoundMeterId.CompoundAux); - double compoundVolume = tstRslt.TargetVolume() * (1.0 + 0.01 * errorPct); - double mainVolume = compoundVolume * mainPart; - double auxVolume = compoundVolume * (1.0 - mainPart); + double compoundVolume = tstRslt.TargetVolume() * (1.0 + 0.01 * errorPct); + double mainVolume = compoundVolume * mainPart; + double auxVolume = compoundVolume * (1.0 - mainPart); - for (int isAux = 0; isAux <= 1; isAux++) /// 0=main, 1=aux - { - GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[2 * i + isAux]; - Results.Entities.MeterTestRslt meterRslt = (isAux == 0) ? mainRslt : auxRslt; + for (int isAux = 0; isAux <= 1; isAux++) /// 0=main, 1=aux + { + GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[2 * i + isAux]; + Results.Entities.MeterTestRslt meterRslt = (isAux == 0) ? mainRslt : auxRslt; - if (meterRslt != null && regReader != null) - { - meterRslt.VolumeMeter = (isAux == 0) ? mainVolume : auxVolume; + if (meterRslt != null && regReader != null) + { + meterRslt.VolumeMeter = (isAux == 0) ? mainVolume : auxVolume; - meterRslt.PulsesMeter = regReader.PulsesPerLtr * meterRslt.VolumeMeter; - meterRslt.PulsesMaster = tstRslt.PulsesMaster; - meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; - meterRslt.VolumeStart = 0; - meterRslt.VolumeEnd = meterRslt.VolumeMeter; - meterRslt.VolumeRef = tstRslt.TargetVolume(); - meterRslt.TimestampStart = 0; - meterRslt.TimestampEnd = tstRslt.TargetTime(); - meterRslt.TestTime = tstRslt.TargetTime(); - meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, tstRslt.VolumeCTV); - meterRslt.Passed = (errorPct >= tstRslt.ErrLimLo() + tstRslt.ErrLimMargin()) - && (errorPct <= tstRslt.ErrLimHi() - tstRslt.ErrLimMargin()); - meterRslt.TestDone = true; - } - } + meterRslt.PulsesMeter = regReader.PulsesPerLtr * meterRslt.VolumeMeter; + meterRslt.PulsesMaster = tstRslt.PulsesMaster; + meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; + meterRslt.VolumeStart = 0; + meterRslt.VolumeEnd = meterRslt.VolumeMeter; + meterRslt.VolumeRef = tstRslt.TargetVolume(); + meterRslt.TimestampStart = 0; + meterRslt.TimestampEnd = tstRslt.TargetTime(); + meterRslt.TestTime = tstRslt.TargetTime(); + meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, tstRslt.VolumeCTV); + meterRslt.Passed = (errorPct >= tstRslt.ErrLimLo() + tstRslt.ErrLimMargin()) + && (errorPct <= tstRslt.ErrLimHi() - tstRslt.ErrLimMargin()); + meterRslt.TestDone = true; + } + } - compoundRslt.VolumeRef = tstRslt.VolumeCTV; /// [l] must be calculated before main & aux. meter error - compoundRslt.VolumeMeter = mainRslt.VolumeMeter + auxRslt.VolumeMeter; + compoundRslt.VolumeRef = tstRslt.VolumeCTV; /// [l] must be calculated before main & aux. meter error + compoundRslt.VolumeMeter = mainRslt.VolumeMeter + auxRslt.VolumeMeter; - compoundRslt.PulsesMaster = tstRslt.PulsesMaster; - compoundRslt.TestTime = tstRslt.TargetTime(); - compoundRslt.Error = Formulas.ErrorFromVolumes(compoundRslt.VolumeMeter, tstRslt.VolumeCTV); - compoundRslt.Passed = (compoundRslt.Error >= tstRslt.ErrLimLo() + tstRslt.ErrLimMargin()) - && (compoundRslt.Error <= tstRslt.ErrLimHi() - tstRslt.ErrLimMargin()); - compoundRslt.TestDone = true; - tstRslt.TestDone = true; + compoundRslt.PulsesMaster = tstRslt.PulsesMaster; + compoundRslt.TestTime = tstRslt.TargetTime(); + compoundRslt.Error = Formulas.ErrorFromVolumes(compoundRslt.VolumeMeter, tstRslt.VolumeCTV); + compoundRslt.Passed = (compoundRslt.Error >= tstRslt.ErrLimLo() + tstRslt.ErrLimMargin()) + && (compoundRslt.Error <= tstRslt.ErrLimHi() - tstRslt.ErrLimMargin()); + compoundRslt.TestDone = true; + tstRslt.TestDone = true; + } + + tstRslt.Components = Results.Entities.Components.UpdateList(BatchRslts.ComponentsList, + new Results.Entities.Components((BenchInfo != null) ? BenchInfo.TestBenchId : 1, + (BenchInfo != null) ? BenchInfo.TestBenchName : "testbench", + inPath.Pump != null ? inPath.Pump.Name : string.Empty, + outPath.FlowMeter != null ? outPath.FlowMeter.Name : string.Empty, + outPath.Scale != null ? outPath.Scale.Name : string.Empty, + outPath.RegulValve != null ? outPath.RegulValve.Name : string.Empty, + outPath.Diverter != null ? outPath.Diverter.Name : string.Empty)); } - - tstRslt.Components = Results.Entities.Components - .UpdateList(BatchRslts.ComponentsList, - new Results.Entities.Components((BenchInfo != null) ? BenchInfo.TestBenchId : 1, - (BenchInfo != null) ? BenchInfo.TestBenchName : "testbench", - inPath.Pump != null ? inPath.Pump.Name : string.Empty, - outPath.FlowMeter != null ? outPath.FlowMeter.Name : string.Empty, - outPath.Scale != null ? outPath.Scale.Name : string.Empty, - outPath.RegulValve != null ? outPath.RegulValve.Name : string.Empty, - outPath.Diverter != null ? outPath.Diverter.Name : string.Empty)); } diff --git a/TBF/BenchControl/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs b/TBF/BenchControl/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs index a5223e892..68481e933 100644 --- a/TBF/BenchControl/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs +++ b/TBF/BenchControl/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2013-2019 Sensus Slovensko a.s. +/// Copyright (c) 2013-2020 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; @@ -56,9 +56,9 @@ namespace TBF.BenchControl.TestMethods.CombinedWithDetection return new List { Event.ConfigurationError }; } - if (test.Part < 1 || test.Part > Config.Data.CompoundWMsCount) + if (test.Part < 0 || test.Part > Config.Data.CompoundWMsCount) { - UiBridge.Bridge.OnError(this, string.Format("Test 'Part' should be 1 .. {0}", Config.Data.CompoundWMsCount)); + UiBridge.Bridge.OnError(this, string.Format("Test 'Part' should be '-' or 1 .. {0}", Config.Data.CompoundWMsCount)); return new List { Event.ConfigurationError }; } @@ -333,7 +333,7 @@ namespace TBF.BenchControl.TestMethods.CombinedWithDetection } flowsForDetection[0] = cBrd.ReferenceFreq * outPath.FlowMeter.NominalFlow / 2000.0; - double diff = RegisterReaders[(test.Part - 1) * 2 + 1].WMPulses - lastWMPulses[(test.Part - 1) * 2 + 1]; + double diff = RegisterReaders[Math.Max(0, test.Part - 1) * 2 + 1].WMPulses - lastWMPulses[Math.Max(0, test.Part - 1) * 2 + 1]; pulseFreqsForDetection[0] = diff / (double)(StateMachine.Time - lastTime); lastTime = StateMachine.Time; } diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index eb4a359da..58d91d3d1 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.26.1508.0")] -[assembly: AssemblyFileVersion("2.26.1508.0")] +[assembly: AssemblyVersion("2.26.1509.0")] +[assembly: AssemblyFileVersion("2.26.1509.0")]