From a01f99fa7edf4fdccc90f92fd2b046335fd6adcb Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Fri, 13 Nov 2015 01:11:36 +0100 Subject: [PATCH] iPerl flow direction determination, saved into Oracle DB. --- .../BenchControl/DB/SensusOracle/Database.cs | 12 +++++++++++- .../BenchControl/WaterMeters/iPerl/WaterMeter.cs | 5 +++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs b/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs index 9c0faf284..1b3add6ab 100644 --- a/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs +++ b/TestBenchFramework/BenchControl/DB/SensusOracle/Database.cs @@ -544,6 +544,16 @@ namespace TBF.BenchControl.DB.SensusOracle } { + int Q2CorrFlowRight; + if (wMtr.CalibrationStruct.FlowArrow == WaterMeters.iPerl.FlowArrow.Left) + { + Q2CorrFlowRight = wMtr.PositiveCounting ? 1 : 2; + } + else + { + Q2CorrFlowRight = wMtr.PositiveCounting ? 2 : 1; + } + OracleCommand cmd = new OracleCommand("INSERT INTO VT_IP_ZAEHLER_PINDEX_PD(" + "VT_Fernum, Pruefindex, ANBID, WITHCORRECTION2HZ, CORRECTION2HZ, DIFF2HZ8HZ, " + "WITHQ2CORRECTION, ERRQ2, Q2CORRECTIONFLOWRIGHT, Q2CORRECTIONLEFT, Q2CORRECTIONRIGHT)" + @@ -557,7 +567,7 @@ namespace TBF.BenchControl.DB.SensusOracle parm = new OracleParameter("DIFF2HZ8HZ", OracleDbType.Double); parm.Value = 0; cmd.Parameters.Add(parm); ///:6 parm = new OracleParameter("WITHQ2CORRECTION", OracleDbType.Int32); parm.Value = wMtr.Q2CorrectionDone ? 1 : 0; cmd.Parameters.Add(parm); ///:7 parm = new OracleParameter("ERRQ2", OracleDbType.Double); parm.Value = wMtr.Q2ErrorWOCorrection; cmd.Parameters.Add(parm); ///:8 - parm = new OracleParameter("Q2CORRECTIONFLOWRIGHT", OracleDbType.Int32); parm.Value = 1;/*TODO, 1=right to left*/ cmd.Parameters.Add(parm); ///:9 + parm = new OracleParameter("Q2CORRECTIONFLOWRIGHT", OracleDbType.Int32); parm.Value = Q2CorrFlowRight;/*1=right to left*/ cmd.Parameters.Add(parm); ///:9 parm = new OracleParameter("Q2CORRECTIONLEFT", OracleDbType.Int32); parm.Value = (int)Math.Round(wMtr.CurrentQ2Correction); cmd.Parameters.Add(parm); ///:10 parm = new OracleParameter("Q2CORRECTIONRIGHT", OracleDbType.Int32); parm.Value = (int)Math.Round(wMtr.CurrentQ2Correction / 2); cmd.Parameters.Add(parm); ///:11 diff --git a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs index 753f7421c..4be4a7c74 100644 --- a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs +++ b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs @@ -87,6 +87,8 @@ namespace TBF.BenchControl.WaterMeters.iPerl } bool commFailed; + public bool PositiveCounting; + /// ConfigStruct of the water meter obtained or updated by iPerlCommunication public ConfigStruct ConfigStruct { @@ -127,8 +129,11 @@ namespace TBF.BenchControl.WaterMeters.iPerl OriginalCalibFactor = originalCalibrationFactor; double volumeMeter = Math.Abs(VolumeLtrEnd - VolumeLtrStart); + if (volumeMeter > 1E-2) { + PositiveCounting = VolumeLtrEnd > VolumeLtrStart; + UInt16 newFactor = (UInt16)((double)originalCalibrationFactor * VolumeLtrRef / volumeMeter + 0.5); log.InfoFormat("Calibration factor: orig={0} new={1} V_1={2} V_2={3} Vdiff={4} Vref={5}", originalCalibrationFactor, newFactor,