From c842c503610cf4ec2a3aa2192ecaebbae5fcb8ff Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Wed, 24 Aug 2016 18:30:00 +0200 Subject: [PATCH] Heat meters evaluation added to FlyingStartMassCollectionSeq and FlyingStartSeq, ver. 2.10.345 --- .../FixedStartMassCollectionSeq.cs | 14 +- .../TestMethods/FlyingStart/FlyingStartSeq.cs | 168 +++++++--- .../FlyingStart/HeatMeters/TestParams.cs | 10 +- .../FlyingStartMassCollectionSeq.cs | 292 +++++++++--------- .../HeatMeters/TestParams.cs | 10 +- TestBenchFramework/Properties/AssemblyInfo.cs | 4 +- 6 files changed, 294 insertions(+), 204 deletions(-) diff --git a/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs index f8c875aa6..936e5930a 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs @@ -26,7 +26,9 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection /// Event.OpArgumentError . Target flow is out of range /// Event.Error . . . . . . Unspecified error /// - public IList Execute(Config.Entities.Test test, bool compound, HeatMeters.TestParams heatMetersTestParams) + public IList Execute(Config.Entities.Test test, + bool compound, + HeatMeters.TestParams heatMetersTestParams) { Elde.ControlBoardDev cBrd = StateMachine.ControlBoard; @@ -105,7 +107,9 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection } while (!e.Contains(Event.ValvesSet)); - + /// + /// Display prompt to emerge temperature meters to appropriate baths for heat meters test + /// if (heatMetersTestParams != null && !string.IsNullOrEmpty(heatMetersTestParams.Prompt)) { State.Create("FixedStartMassCollection : Show heat meters prompt (exchange temperature meters)") @@ -430,6 +434,7 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection RefFlow.Val = cBrd.ReferenceFlow; UpdateAllStatistics(); + if (heatMetersTestParams != null) { if (lastEnergyUpdateTime == 0) @@ -449,7 +454,6 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection } } - if (compound) { /// TODO: Reimplement for combined meters @@ -733,11 +737,11 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection } else if (heatMetersTestParams != null) { - tstRslt.RefEnergy = Energy.Sum * tstRslt.VolumeCTV / VolumeForEnergy.Sum; /// [J]=[J]*[l]/[l] - /// /// Heat meters /// + tstRslt.RefEnergy = Energy.Sum * tstRslt.VolumeCTV / VolumeForEnergy.Sum; /// [J]=[J]*[l]/[l] + for (int i = 0; i < BatchRslts.WMPositionsCount; i++) { if (test.Part != 0 && test.Part != Utils.PartNr(i + 1, BatchRslts.Batch.Compound)) continue; diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs index b5ac3e855..648cab0a5 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs @@ -66,6 +66,23 @@ namespace TBF.BenchControl.TestMethods.FlyingStart TestProgressEventArgs.SetEstimatedTimes(new int[] { 1, 1, 1, 30, Convert.ToInt32(test.TstTime) + 15, 0, 0 }); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.JustStarted)); + /// + /// Display prompt to emerge temperature meters to appropriate baths for heat meters test + /// + if (heatMetersTestParams != null && !string.IsNullOrEmpty(heatMetersTestParams.Prompt)) + { + State.Create("FixedStartMassCollection : Show heat meters prompt (exchange temperature meters)") + .AddOperation(checkUiOp) + .AddOperation(new Operations.MessageBoxOp(heatMetersTestParams.Prompt)) + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + } + while (!e.Contains(Event.OK)); + } + //------------------------------------------------ Bridge.OnActivity(this, Strings.Setting_the_flow); //------------------------------------------------ @@ -116,56 +133,55 @@ namespace TBF.BenchControl.TestMethods.FlyingStart int flowSetTime = StateMachine.Time - flowSetTime0; float currentFlow = RefFlow.Val; + if (heatMetersTestParams != null && heatMetersPath != null) + { + //--------------------------------------------------- + Bridge.OnActivity(this, Strings.Setting_temperature); + //--------------------------------------------------- - if (heatMetersTestParams != null && heatMetersPath != null) - { - //--------------------------------------------------- - Bridge.OnActivity(this, Strings.Setting_temperature); - //--------------------------------------------------- + int lastTimeSec = StateMachine.Time; + float Tw_last = 0; + float Tc_last = 0; - int lastTimeSec = StateMachine.Time; - float Tw_last = 0; - float Tc_last = 0; - FloatBox Tw1 = new FloatBox(); - FloatBox Tw2 = new FloatBox(); - FloatBox Tc1 = new FloatBox(); - FloatBox Tc2 = new FloatBox(); + State.Create("FixedStartMassCollection : Check temperature stabilized.") + .AddOperation(checkUiOp) + .AddOperation(heatMetersPath.TMeterRefWarm1.ReadTempOp(ref TempRefWarm1)) + .AddOperation(heatMetersPath.TMeterRefWarm2.ReadTempOp(ref TempRefWarm2)) + .AddOperation(heatMetersPath.TMeterRefCold1.ReadTempOp(ref TempRefCold1)) + .AddOperation(heatMetersPath.TMeterRefCold2.ReadTempOp(ref TempRefCold2)) + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + if (e.Contains(Event.Next)) goto temperature_set; - State.Create("FixedStartMassCollection : Check temperature stabilized.") - .AddOperation(checkUiOp) - .AddOperation(heatMetersPath.TMeterRefWarm1.ReadTempOp(ref Tw1)) - .AddOperation(heatMetersPath.TMeterRefWarm2.ReadTempOp(ref Tw2)) - .AddOperation(heatMetersPath.TMeterRefCold1.ReadTempOp(ref Tc1)) - .AddOperation(heatMetersPath.TMeterRefCold2.ReadTempOp(ref Tc2)) - .EnterState(); - do - { - if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } - if (e.Contains(Event.Next)) goto temperature_set; + if (TempRefWarm1.Val != 0 && TempRefWarm2.Val != 0 && TempRefCold1.Val != 0 && TempRefCold2.Val != 0) + { + if (StateMachine.Time - lastTimeSec > 10 || StateMachine.Time - lastTimeSec < 0) + { + float Tw = (TempRefWarm1.Val + TempRefWarm2.Val) / 2.0f; + float Tc = (TempRefCold1.Val + TempRefCold2.Val) / 2.0f; + if (heatMetersTestParams.TempWarmLo <= Tw && Tw <= heatMetersTestParams.TempWarmHi && + heatMetersTestParams.TempColdLo <= Tc && Tc <= heatMetersTestParams.TempColdHi && + Math.Abs(Tw - Tw_last) <= heatMetersTestParams.ChangeInTimeWarm && + Math.Abs(Tc - Tc_last) <= heatMetersTestParams.ChangeInTimeCold && + Math.Abs(TempRefWarm1.Val - TempRefWarm2.Val) <= heatMetersTestParams.DeltaTempWarm && + Math.Abs(TempRefCold1.Val - TempRefCold2.Val) <= heatMetersTestParams.DeltaTempCold) + { + goto temperature_set; + } - if (StateMachine.Time - lastTimeSec > 10 || StateMachine.Time - lastTimeSec < 0) - { - float Tw = (Tw1.Val + Tw2.Val) / 2.0f; - float Tc = (Tc1.Val + Tc2.Val) / 2.0f; - if (heatMetersTestParams.TempWarmLo <= Tw && Tw <= heatMetersTestParams.TempWarmHi && - heatMetersTestParams.TempColdLo <= Tc && Tc <= heatMetersTestParams.TempColdHi && - Math.Abs(Tw - Tw_last) <= heatMetersTestParams.ChangeInTimeWarm && - Math.Abs(Tc - Tc_last) <= heatMetersTestParams.ChangeInTimeCold && - Math.Abs(Tw1.Val - Tw2.Val) <= heatMetersTestParams.DeltaTempWarm && - Math.Abs(Tc1.Val - Tc2.Val) <= heatMetersTestParams.DeltaTempCold) - { - goto temperature_set; - } + lastTimeSec = StateMachine.Time; + Tw_last = Tw; + Tc_last = Tc; + } + } + } + while (true); + } - lastTimeSec = StateMachine.Time; - Tw_last = Tw; - Tc_last = Tc; - } - } - while (true); - } - - temperature_set: + temperature_set: /// Extract cameras from the current sensors path, add operations to the detection state IList measureOperations = new List(); @@ -251,8 +267,28 @@ namespace TBF.BenchControl.TestMethods.FlyingStart RefFreq.Val = cBrd.ReferenceFreq; RefFlow.Val = cBrd.ReferenceFlow; + UpdateAllStatistics(); + if (heatMetersTestParams != null) + { + if (lastEnergyUpdateTime == 0) + { + lastEnergyUpdateTime = StateMachine.Time; + } + else + { + //double deltaTime = (double)(StateMachine.Time - lastEnergyUpdateTime); + float T_in = (TempRefWarm1.Val + TempRefWarm2.Val) / 2; /// [°C] + float T_out = (TempRefCold1.Val + TempRefCold2.Val) / 2; /// [°C] + double deltaVolume = LtrPerRefPulse * RefPulsesDelta; /// [l] + double deltaEnergy = 0.001 * deltaVolume * (T_in - T_out) * Formulas.HeatCoefficientWater(16, T_in, T_out, heatMetersTestParams.FlowMeasuredAtHiTempPipe); /// [J] = [m3] * [K] * [J/(m3 K)] + Energy.Update(deltaEnergy); + VolumeForEnergy.Update(deltaVolume); + lastEnergyUpdateTime = StateMachine.Time; + } + } + Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test)); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test)); } @@ -351,10 +387,44 @@ namespace TBF.BenchControl.TestMethods.FlyingStart } else if (heatMetersTestParams != null) { - /// - /// Heat meters - /// - } + /// + /// Heat meters + /// + tstRslt.RefEnergy = Energy.Sum * tstRslt.VolumeCTV / VolumeForEnergy.Sum; /// [J]=[J]*[l]/[l] + + for (int i = 0; i < BatchRslts.WMPositionsCount; i++) + { + if (test.Part != 0 && test.Part != Utils.PartNr(i + 1, BatchRslts.Batch.Compound)) continue; + + Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Single); + GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[i]; + + if (meterRslt != null && regReader != null) + { + meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; + meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses); + meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses); + + meterRslt.TestTime = tstRslt.TestTime; /// TODO: Malo by sa citat z dosky + meterRslt.VolumeStart = 0; /// liter + meterRslt.VolumeEnd = 0; /// liter + meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter + meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter + + /// TODO: Rewrite the following 2 lines + meterRslt.EnergyStart = 0.0; + meterRslt.EnergyEnd = 1.0; + + meterRslt.Energy = meterRslt.EnergyEnd - meterRslt.EnergyStart; + meterRslt.RefEnergy = tstRslt.RefEnergy; + + meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.Energy, meterRslt.RefEnergy); + meterRslt.Passed = (meterRslt.Error >= test.ErrLimLo + test.Uncertainty) + && (meterRslt.Error <= test.ErrLimHi - test.Uncertainty); + meterRslt.TestDone = true; + } + } + } else { /// diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/HeatMeters/TestParams.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/HeatMeters/TestParams.cs index b8a0f68d6..cb2ee385e 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/HeatMeters/TestParams.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/HeatMeters/TestParams.cs @@ -22,7 +22,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStart.HeatMeters public float DeltaTempCold; public float ChangeInTimeWarm; public float ChangeInTimeCold; - public string HeatMetersPath; + public string Prompt; public override void InitializeAll() { @@ -41,7 +41,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStart.HeatMeters "Delta T cold", "Change in time T warm", "Change in time T cold", - "Heat meters path", + Strings.Prompt, }; public override string ParamName(int i) { return paramNames[i]; } public override int ParamsCount() { return paramNames.Length; } @@ -59,7 +59,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStart.HeatMeters case 6: return DeltaTempCold.ToString(); case 7: return ChangeInTimeWarm.ToString(); case 8: return ChangeInTimeCold.ToString(); - case 9: return HeatMetersPath; + case 9: return Prompt; default: return string.Empty; } } @@ -77,7 +77,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStart.HeatMeters case 6: DeltaTempCold = Utils.ParseUFloat(strValue); return; case 7: ChangeInTimeWarm = Utils.ParseUFloat(strValue); return; case 8: ChangeInTimeCold = Utils.ParseUFloat(strValue); return; - case 9: HeatMetersPath = strValue; return; + case 9: Prompt = strValue; return; default: return; } } @@ -126,7 +126,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStart.HeatMeters prms.DeltaTempCold = DeltaTempCold; prms.ChangeInTimeWarm = ChangeInTimeWarm; prms.ChangeInTimeCold = ChangeInTimeCold; - prms.HeatMetersPath = HeatMetersPath; + prms.Prompt = Prompt; } public IParamsProvider Clone() diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs index 2256a9bb4..11ed05064 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs @@ -106,6 +106,22 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection while (!e.Contains(Event.ValvesSet)); } + /// + /// Display prompt to emerge temperature meters to appropriate baths for heat meters test + /// + if (heatMetersTestParams != null && !string.IsNullOrEmpty(heatMetersTestParams.Prompt)) + { + State.Create("FixedStartMassCollection : Show heat meters prompt (exchange temperature meters)") + .AddOperation(checkUiOp) + .AddOperation(new Operations.MessageBoxOp(heatMetersTestParams.Prompt)) + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + } + while (!e.Contains(Event.OK)); + } if (inPath.Pump != null) { @@ -219,55 +235,55 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection int flowSetTime = StateMachine.Time - flowSetTime0; float currentFlow = RefFlow.Val; - if (heatMetersTestParams != null && heatMetersPath != null) - { - //--------------------------------------------------- - Bridge.OnActivity(this, Strings.Setting_temperature); - //--------------------------------------------------- + if (heatMetersTestParams != null && heatMetersPath != null) + { + //--------------------------------------------------- + Bridge.OnActivity(this, Strings.Setting_temperature); + //--------------------------------------------------- - int lastTimeSec = StateMachine.Time; - float Tw_last = 0; - float Tc_last = 0; - FloatBox Tw1 = new FloatBox(); - FloatBox Tw2 = new FloatBox(); - FloatBox Tc1 = new FloatBox(); - FloatBox Tc2 = new FloatBox(); + int lastTimeSec = StateMachine.Time; + float Tw_last = 0; + float Tc_last = 0; - State.Create("FixedStartMassCollection : Check temperature stabilized.") - .AddOperation(checkUiOp) - .AddOperation(heatMetersPath.TMeterRefWarm1.ReadTempOp(ref Tw1)) - .AddOperation(heatMetersPath.TMeterRefWarm2.ReadTempOp(ref Tw2)) - .AddOperation(heatMetersPath.TMeterRefCold1.ReadTempOp(ref Tc1)) - .AddOperation(heatMetersPath.TMeterRefCold2.ReadTempOp(ref Tc2)) - .EnterState(); - do - { - if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } - if (e.Contains(Event.Next)) goto temperature_set; + State.Create("FixedStartMassCollection : Check temperature stabilized.") + .AddOperation(checkUiOp) + .AddOperation(heatMetersPath.TMeterRefWarm1.ReadTempOp(ref TempRefWarm1)) + .AddOperation(heatMetersPath.TMeterRefWarm2.ReadTempOp(ref TempRefWarm2)) + .AddOperation(heatMetersPath.TMeterRefCold1.ReadTempOp(ref TempRefCold1)) + .AddOperation(heatMetersPath.TMeterRefCold2.ReadTempOp(ref TempRefCold2)) + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + if (e.Contains(Event.Next)) goto temperature_set; - if (StateMachine.Time - lastTimeSec > 10 || StateMachine.Time - lastTimeSec < 0) - { - float Tw = (Tw1.Val + Tw2.Val) / 2.0f; - float Tc = (Tc1.Val + Tc2.Val) / 2.0f; - if (heatMetersTestParams.TempWarmLo <= Tw && Tw <= heatMetersTestParams.TempWarmHi && - heatMetersTestParams.TempColdLo <= Tc && Tc <= heatMetersTestParams.TempColdHi && - Math.Abs(Tw - Tw_last) <= heatMetersTestParams.ChangeInTimeWarm && - Math.Abs(Tc - Tc_last) <= heatMetersTestParams.ChangeInTimeCold && - Math.Abs(Tw1.Val - Tw2.Val) <= heatMetersTestParams.DeltaTempWarm && - Math.Abs(Tc1.Val - Tc2.Val) <= heatMetersTestParams.DeltaTempCold) - { - goto temperature_set; - } + if (TempRefWarm1.Val != 0 && TempRefWarm2.Val != 0 && TempRefCold1.Val != 0 && TempRefCold2.Val != 0) + { + if (StateMachine.Time - lastTimeSec > 10 || StateMachine.Time - lastTimeSec < 0) + { + float Tw = (TempRefWarm1.Val + TempRefWarm2.Val) / 2.0f; + float Tc = (TempRefCold1.Val + TempRefCold2.Val) / 2.0f; + if (heatMetersTestParams.TempWarmLo <= Tw && Tw <= heatMetersTestParams.TempWarmHi && + heatMetersTestParams.TempColdLo <= Tc && Tc <= heatMetersTestParams.TempColdHi && + Math.Abs(Tw - Tw_last) <= heatMetersTestParams.ChangeInTimeWarm && + Math.Abs(Tc - Tc_last) <= heatMetersTestParams.ChangeInTimeCold && + Math.Abs(TempRefWarm1.Val - TempRefWarm2.Val) <= heatMetersTestParams.DeltaTempWarm && + Math.Abs(TempRefCold1.Val - TempRefCold2.Val) <= heatMetersTestParams.DeltaTempCold) + { + goto temperature_set; + } - lastTimeSec = StateMachine.Time; - Tw_last = Tw; - Tc_last = Tc; - } - } - while (true); - } + lastTimeSec = StateMachine.Time; + Tw_last = Tw; + Tc_last = Tc; + } + } + } + while (true); + } - temperature_set: + temperature_set: /// Extract cameras from the current sensors path, add operations to the detection state IList measureOperations = new List(); @@ -423,8 +439,28 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection RefFreq.Val = cBrd.ReferenceFreq; RefFlow.Val = cBrd.ReferenceFlow; + UpdateAllStatistics(); + if (heatMetersTestParams != null) + { + if (lastEnergyUpdateTime == 0) + { + lastEnergyUpdateTime = StateMachine.Time; + } + else + { + //double deltaTime = (double)(StateMachine.Time - lastEnergyUpdateTime); + float T_in = (TempRefWarm1.Val + TempRefWarm2.Val) / 2; /// [°C] + float T_out = (TempRefCold1.Val + TempRefCold2.Val) / 2; /// [°C] + double deltaVolume = LtrPerRefPulse * RefPulsesDelta; /// [l] + double deltaEnergy = 0.001 * deltaVolume * (T_in - T_out) * Formulas.HeatCoefficientWater(16, T_in, T_out, heatMetersTestParams.FlowMeasuredAtHiTempPipe); /// [J] = [m3] * [K] * [J/(m3 K)] + Energy.Update(deltaEnergy); + VolumeForEnergy.Update(deltaVolume); + lastEnergyUpdateTime = StateMachine.Time; + } + } + Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test)); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test)); } @@ -622,10 +658,44 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection } else if (heatMetersTestParams != null) { - /// - /// Heat meters - /// - } + /// + /// Heat meters + /// + tstRslt.RefEnergy = Energy.Sum * tstRslt.VolumeCTV / VolumeForEnergy.Sum; /// [J]=[J]*[l]/[l] + + for (int i = 0; i < BatchRslts.WMPositionsCount; i++) + { + if (test.Part != 0 && test.Part != Utils.PartNr(i + 1, BatchRslts.Batch.Compound)) continue; + + Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Single); + GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[i]; + + if (meterRslt != null && regReader != null) + { + meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; + meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses); + meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses); + + meterRslt.TestTime = tstRslt.TestTime; /// TODO: Malo by sa citat z dosky + meterRslt.VolumeStart = 0; /// liter + meterRslt.VolumeEnd = 0; /// liter + meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter + meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter + + /// TODO: Rewrite the following 2 lines + meterRslt.EnergyStart = 0.0; + meterRslt.EnergyEnd = 1.0; + + meterRslt.Energy = meterRslt.EnergyEnd - meterRslt.EnergyStart; + meterRslt.RefEnergy = tstRslt.RefEnergy; + + meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.Energy, meterRslt.RefEnergy); + meterRslt.Passed = (meterRslt.Error >= test.ErrLimLo + test.Uncertainty) + && (meterRslt.Error <= test.ErrLimHi - test.Uncertainty); + meterRslt.TestDone = true; + } + } + } else { /// @@ -635,102 +705,48 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection { if (test.Part != 0 && test.Part != Utils.PartNr(i + 1, BatchRslts.Batch.Compound)) continue; - if (BatchRslts.Batch.Compound) + /// MetersKind.Single meters + Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Single); + GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[i]; + WaterMeters.iPerl.WaterMeter iPerl = regReader as WaterMeters.iPerl.WaterMeter; + + if (meterRslt != null && regReader != null) { - /// - /// Compound meters - /// - Results.Entities.MeterTestRslt mainMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.CompoundMain); - Results.Entities.MeterTestRslt auxMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.CompoundAux); + meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; + meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses); + meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses); - for (int isAux = 0; isAux <= 1; isAux++) /// 0=main, 1=aux + if (iPerl != null) { - GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[2 * i + isAux]; - Results.Entities.MeterTestRslt meterRslt = (isAux == 0) ? mainMeterRslt : auxMeterRslt; - - if (meterRslt != null && regReader != null) - { - meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; - - /// Optionally supress pulses from the large water meter - meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses); - meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses); - - meterRslt.TestTime = tstRslt.TestTime; - meterRslt.VolumeStart = 0; - meterRslt.VolumeEnd = 0; - meterRslt.VolumeRef = tstRslt.VolumeCTV; - meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter - - if (meterRslt.PulsesMaster != 0) - { - meterRslt.VolumeMeter *= (tstRslt.PulsesMaster / meterRslt.PulsesMaster); - } - - meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, tstRslt.VolumeCTV); /// Main/Aux meter error is not usedfor evaluation - } - } - - Results.Entities.MeterTestRslt compoundMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Compound); - - if (compoundMeterRslt != null && mainMeterRslt != null && auxMeterRslt != null) - { - compoundMeterRslt.VolumeRef = tstRslt.VolumeCTV; - compoundMeterRslt.VolumeMeter = mainMeterRslt.VolumeMeter + auxMeterRslt.VolumeMeter; - compoundMeterRslt.PulsesMaster = tstRslt.PulsesMaster; - compoundMeterRslt.TestTime = tstRslt.TestTime; - compoundMeterRslt.Error = Formulas.ErrorFromVolumes(compoundMeterRslt.VolumeMeter, compoundMeterRslt.VolumeRef); - compoundMeterRslt.Passed = (compoundMeterRslt.Error >= test.ErrLimLo + test.Uncertainty) - && (compoundMeterRslt.Error <= test.ErrLimHi - test.Uncertainty); - mainMeterRslt.Passed = auxMeterRslt.Passed = compoundMeterRslt.Passed; - mainMeterRslt.TestDone = auxMeterRslt.TestDone = compoundMeterRslt.TestDone = true; - } - } - else - { - /// MetersKind.Single meters - Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Single); - GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[i]; - WaterMeters.iPerl.WaterMeter iPerl = regReader as WaterMeters.iPerl.WaterMeter; - - if (meterRslt != null && regReader != null) - { - meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; - meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses); - meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses); - - if (iPerl != null) - { - meterRslt.TimestampStart = iPerl.TimestampSecStart; - meterRslt.TimestampEnd = iPerl.NoSamples ? (iPerl.TimestampSecStart + tstRslt.TestTime) : iPerl.TimestampSecEnd; - meterRslt.TestTime = iPerl.NoSamples ? tstRslt.TestTime : (meterRslt.TimestampEnd - meterRslt.TimestampStart); - meterRslt.VolumeStart = iPerl.VolumeLtrStart; /// liter - meterRslt.VolumeEnd = iPerl.VolumeLtrEnd; /// liter - meterRslt.VolumeMeter = Math.Abs(iPerl.VolumeLtrEnd - iPerl.VolumeLtrStart); - meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime; - iPerl.VolumeLtrRef = meterRslt.VolumeRef; + meterRslt.TimestampStart = iPerl.TimestampSecStart; + meterRslt.TimestampEnd = iPerl.NoSamples ? (iPerl.TimestampSecStart + tstRslt.TestTime) : iPerl.TimestampSecEnd; + meterRslt.TestTime = iPerl.NoSamples ? tstRslt.TestTime : (meterRslt.TimestampEnd - meterRslt.TimestampStart); + meterRslt.VolumeStart = iPerl.VolumeLtrStart; /// liter + meterRslt.VolumeEnd = iPerl.VolumeLtrEnd; /// liter + meterRslt.VolumeMeter = Math.Abs(iPerl.VolumeLtrEnd - iPerl.VolumeLtrStart); + meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime; + iPerl.VolumeLtrRef = meterRslt.VolumeRef; #if IPERLST || IPERLST_SPECIAL - meterRslt.WaterMeter.CalibFactor = (iPerl.CalibrationStruct != null) ? iPerl.CalibrationStruct.Calibration : 0; - meterRslt.WaterMeter.Q2Correction = iPerl.Q2CorrectionFactor; + meterRslt.WaterMeter.CalibFactor = (iPerl.CalibrationStruct != null) ? iPerl.CalibrationStruct.Calibration : 0; + meterRslt.WaterMeter.Q2Correction = iPerl.Q2CorrectionFactor; #endif - iPerl.LastTestResult2 = iPerl.LastTestResult; /// Save shift previous test result - iPerl.LastTestResult = meterRslt; /// Save this test result - iPerl.NominalTestFlow = 500.0 * (test.Qfrom + test.Qto); /// Ave. + convert to liter/hour - } - else - { - meterRslt.TestTime = tstRslt.TestTime; /// TODO: Malo by sa citat z dosky - meterRslt.VolumeStart = 0; /// liter - meterRslt.VolumeEnd = 0; /// liter - meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter - meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter - } - - meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef); - meterRslt.Passed = (meterRslt.Error >= test.ErrLimLo + test.Uncertainty) - && (meterRslt.Error <= test.ErrLimHi - test.Uncertainty); - meterRslt.TestDone = true; + iPerl.LastTestResult2 = iPerl.LastTestResult; /// Save shift previous test result + iPerl.LastTestResult = meterRslt; /// Save this test result + iPerl.NominalTestFlow = 500.0 * (test.Qfrom + test.Qto); /// Ave. + convert to liter/hour } + else + { + meterRslt.TestTime = tstRslt.TestTime; /// TODO: Malo by sa citat z dosky + meterRslt.VolumeStart = 0; /// liter + meterRslt.VolumeEnd = 0; /// liter + meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter + meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter + } + + meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef); + meterRslt.Passed = (meterRslt.Error >= test.ErrLimLo + test.Uncertainty) + && (meterRslt.Error <= test.ErrLimHi - test.Uncertainty); + meterRslt.TestDone = true; } } } diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/HeatMeters/TestParams.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/HeatMeters/TestParams.cs index c54442f5a..435eba972 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/HeatMeters/TestParams.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/HeatMeters/TestParams.cs @@ -22,7 +22,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection.HeatMeters public float DeltaTempCold; public float ChangeInTimeWarm; public float ChangeInTimeCold; - public string HeatMetersPath; + public string Prompt; public override void InitializeAll() { @@ -41,7 +41,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection.HeatMeters "Delta T cold", "Change in time T warm", "Change in time T cold", - "Heat meters path", + Strings.Prompt, }; public override string ParamName(int i) { return paramNames[i]; } public override int ParamsCount() { return paramNames.Length; } @@ -59,7 +59,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection.HeatMeters case 6: return DeltaTempCold.ToString(); case 7: return ChangeInTimeWarm.ToString(); case 8: return ChangeInTimeCold.ToString(); - case 9: return HeatMetersPath; + case 9: return Prompt; default: return string.Empty; } } @@ -77,7 +77,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection.HeatMeters case 6: DeltaTempCold = Utils.ParseUFloat(strValue); return; case 7: ChangeInTimeWarm = Utils.ParseUFloat(strValue); return; case 8: ChangeInTimeCold = Utils.ParseUFloat(strValue); return; - case 9: HeatMetersPath = strValue; return; + case 9: Prompt = strValue; return; default: return; } } @@ -126,7 +126,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection.HeatMeters prms.DeltaTempCold = DeltaTempCold; prms.ChangeInTimeWarm = ChangeInTimeWarm; prms.ChangeInTimeCold = ChangeInTimeCold; - prms.HeatMetersPath = HeatMetersPath; + prms.Prompt = Prompt; } public IParamsProvider Clone() diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index 1d6954389..23ae59c1d 100644 --- a/TestBenchFramework/Properties/AssemblyInfo.cs +++ b/TestBenchFramework/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.10.344.1")] -[assembly: AssemblyFileVersion("2.10.344.1")] +[assembly: AssemblyVersion("2.10.345.1")] +[assembly: AssemblyFileVersion("2.10.345.1")]