diff --git a/Results/BatchResults.cs b/Results/BatchResults.cs index ac91fefd0..f7acfedb3 100644 --- a/Results/BatchResults.cs +++ b/Results/BatchResults.cs @@ -189,5 +189,21 @@ namespace Results } } } + + + public bool IsProduction() + { + for (int i = 0; i < WMPositionsCount; i++) + { + if (WaterMeters[i] != null) + { + foreach (var mtr in WaterMeters[i].MeterTestRslts) + { + if (!mtr.TestData().Name.ToLower().Contains("adj")) return true; + } + } + } + return false; + } } } diff --git a/Results/Entities/MeterTestRslt.cs b/Results/Entities/MeterTestRslt.cs index 90456db63..c06d35433 100644 --- a/Results/Entities/MeterTestRslt.cs +++ b/Results/Entities/MeterTestRslt.cs @@ -23,6 +23,7 @@ namespace Results.Entities /// Main result public virtual double Error { get; set; } /// [%] + public virtual double KorrErrQ { get; set; } /// [%] not mapped to results DB, saved to Oracle DB public virtual bool TestDone { get; set; } /// true = test was completed public virtual bool Passed { get; set; } /// true = test passed, water meter is OK @@ -40,7 +41,7 @@ namespace Results.Entities public virtual double DensityOut() { return TestRslt.DensityOut; } public virtual Components Components(){ return TestRslt.Components; } /// - protected virtual TestData TestData() { return TestRslt.TestData; } + public virtual TestData TestData() { return TestRslt.TestData; } /// public virtual int Repeats() { return TestData().Repeats; } public virtual double Qfrom() { return TestData().Qfrom; } /// [m3/h] @@ -118,6 +119,7 @@ namespace Results.Entities TimestampEnd = src.TimestampEnd; TestTime = src.TestTime; Error = src.Error; + KorrErrQ = src.KorrErrQ; TestDone = src.TestDone; Passed = src.Passed; } diff --git a/Results/Properties/AssemblyInfo.cs b/Results/Properties/AssemblyInfo.cs index 10041bce1..638eced9c 100644 --- a/Results/Properties/AssemblyInfo.cs +++ b/Results/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.17.711.0")] -[assembly: AssemblyFileVersion("2.17.711.0")] +[assembly: AssemblyVersion("2.17.730.0")] +[assembly: AssemblyFileVersion("2.17.730.0")] diff --git a/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs b/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs index 2d5aa4793..029d70c3c 100644 --- a/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs +++ b/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs @@ -1150,7 +1150,7 @@ namespace TBF.BenchControl.DB.SensusOracle "VT_Fernum, Pruefindex, PruefungsNr, ANBID, ID_WZTyp, Rev_WZTyp, Rev_WZPruefpunkt, " + "Q_WZ, Q_Fehler, Q_Best, NIZ, AnfangZStand, EndZStand, " + "KorrErrQok, KorrErrQ, KorrQWz, TIZ, Vol_WZ_US, TempMittel_US)" + - " VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, 0, 0, 0, :14, 0, 0)", conn); + " VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, 0, :14, 0, :15, 0, 0)", conn); OracleParameter parm; parm = new OracleParameter("VT_Fernum", OracleDbType.Varchar2); parm.Value = mtr.WaterMeter.SerialNr; cmd.Parameters.Add(parm); ///:1 parm = new OracleParameter("Pruefindex", OracleDbType.Int32); parm.Value = max_Pruefindex; cmd.Parameters.Add(parm); ///:2 @@ -1166,10 +1166,11 @@ namespace TBF.BenchControl.DB.SensusOracle parm = new OracleParameter("AnfangZStand", OracleDbType.Double); parm.Value = mtr.VolumeStart; cmd.Parameters.Add(parm); ///:12 parm = new OracleParameter("EndZStand", OracleDbType.Double); parm.Value = mtr.VolumeEnd; cmd.Parameters.Add(parm); ///:13 /// KorrErrQok bool true = Q2 within limits, 'passed' in case of Q1, Q3, Q4 - /// KorrErrQ double 'Q2 error before correction' when correction done or 'Q2 error' when correction not done + parm = new OracleParameter("KorrErrQ", OracleDbType.Double); parm.Value = Math.Min(100.0, Math.Max(-100.0, mtr.KorrErrQ)); cmd.Parameters.Add(parm); ///:14 + /// KorrErrQ double 'Q2 error before correction' when correction done or 'Q2 error' when correction not done /// = q2.WaterMeter.Q2CorrectionDone ? q2.WaterMeter.Q2ErrWOCorrection.ToString(Program.AltCulture) : q2.Error.ToString(Program.AltCulture))); /// KorrQWz double - parm = new OracleParameter("TIZ", OracleDbType.Double); parm.Value = Math.Min(100000, mtr.TestTime); cmd.Parameters.Add(parm); + parm = new OracleParameter("TIZ", OracleDbType.Double); parm.Value = Math.Min(100000, mtr.TestTime); cmd.Parameters.Add(parm); ///:15 /// Vol_WZ_US /// TempMittel_US diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs index 5e54f12eb..c4cc7c791 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs @@ -679,6 +679,32 @@ namespace TBF.BenchControl.TestMethods.FlyingStart } meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef); + +#if TURA_IPERL || TURA_SPECIAL + if (!BatchRslts.IsProduction() && + ((test.Name.ToLower().Contains("q2") && Math.Abs(meterRslt.Error) > 2.0 && Math.Abs(meterRslt.Error) <= 4.0) || + (test.Name.ToLower().Contains("q1") && Math.Abs(meterRslt.Error) > 5.0 && Math.Abs(meterRslt.Error) <= 10.0))) + { + meterRslt.KorrErrQ = meterRslt.Error; + meterRslt.Error /= 2.0; + meterRslt.VolumeMeter = (1.0 + meterRslt.Error / 100.0) * meterRslt.VolumeRef; + meterRslt.PulsesMeter = meterRslt.VolumeMeter * regReader.PulsesPerLtr; + + if (meterRslt.VolumeEnd > meterRslt.VolumeStart) + { + meterRslt.VolumeEnd = meterRslt.VolumeStart + meterRslt.VolumeMeter; + } + else if (meterRslt.VolumeEnd < meterRslt.VolumeStart) + { + meterRslt.VolumeEnd = meterRslt.VolumeStart - meterRslt.VolumeMeter; + } + } + else + { + meterRslt.KorrErrQ = 0; + } +#endif + meterRslt.Passed = (meterRslt.Error >= test.GetErrLimLo(tstRslt.FlowMean) + test.Uncertainty) && (meterRslt.Error <= test.GetErrLimHi(tstRslt.FlowMean) - test.Uncertainty) && (tstRslt.ErrorFlags == 0 || tstRslt.ErrorFlagsMode() != Config.Entities.ErrorFlagsMode.On); diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs index cce2cf135..37bb5b037 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs @@ -981,8 +981,8 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection 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.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; @@ -1018,6 +1018,32 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection } meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef); + +#if TURA_IPERL || TURA_SPECIAL + if (!BatchRslts.IsProduction() && + ((test.Name.ToLower().Contains("q2") && Math.Abs(meterRslt.Error) > 2.0 && Math.Abs(meterRslt.Error) <= 4.0) || + (test.Name.ToLower().Contains("q1") && Math.Abs(meterRslt.Error) > 5.0 && Math.Abs(meterRslt.Error) <= 10.0))) + { + meterRslt.KorrErrQ = meterRslt.Error; + meterRslt.Error /= 2.0; + meterRslt.VolumeMeter = (1.0 + meterRslt.Error / 100.0) * meterRslt.VolumeRef; + meterRslt.PulsesMeter = meterRslt.VolumeMeter * regReader.PulsesPerLtr; + + if (meterRslt.VolumeEnd > meterRslt.VolumeStart) + { + meterRslt.VolumeEnd = meterRslt.VolumeStart + meterRslt.VolumeMeter; + } + else if (meterRslt.VolumeEnd < meterRslt.VolumeStart) + { + meterRslt.VolumeEnd = meterRslt.VolumeStart - meterRslt.VolumeMeter; + } + } + else + { + meterRslt.KorrErrQ = 0; + } +#endif + meterRslt.Passed = (meterRslt.Error >= test.GetErrLimLo(tstRslt.FlowMean) + test.Uncertainty) && (meterRslt.Error <= test.GetErrLimHi(tstRslt.FlowMean) - test.Uncertainty) && (tstRslt.ErrorFlags == 0 || tstRslt.ErrorFlagsMode() != Config.Entities.ErrorFlagsMode.On); diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index c16a1fa1f..a39ff3fef 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.17.729.1")] -[assembly: AssemblyFileVersion("2.17.729.1")] +[assembly: AssemblyVersion("2.17.730.1")] +[assembly: AssemblyFileVersion("2.17.730.1")]