diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlHead/IperlHead.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlHead/IperlHead.cs index a19ae0ce5..a4ebfb7bd 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlHead/IperlHead.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlHead/IperlHead.cs @@ -37,6 +37,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead public int WMType_ID { get { return iperlHeadCfg.ProcParams.WMType_ID; } } /// Required by Oracle DB public int WMType_Rev { get { return iperlHeadCfg.ProcParams.WMType_Rev; } } /// Required by Oracle DB #endif + public float CalibTarget { get { return (ushort)iperlHeadCfg.ProcParams.CalibTarget; } } public ushort FactorLimitLo { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitLo; } } public ushort FactorLimitHi { get { return (ushort)iperlHeadCfg.ProcParams.FactorLimitHi; } } @@ -163,7 +164,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead public UInt16 CalculateNewCalibFactor(Results.Entities.MeterTestRslt adjustTestResult, UInt16 originalCalibrationFactor, UInt16 FactorLimitLo, UInt16 FactorLimitHi) { double meterVolume = adjustTestResult.VolumeMeter; - double refVolume = adjustTestResult.VolumeRef; + double targetVolume = adjustTestResult.VolumeRef * (1.0f + CalibTarget / 100.0f); OrigCalibFactor = originalCalibrationFactor; @@ -171,12 +172,14 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead { PositiveCounting = VolumeLtrEnd > VolumeLtrStart; - UInt16 newFactor = (UInt16)((double)originalCalibrationFactor * refVolume / meterVolume + 0.5); - log.InfoFormat("Calibration factor: orig={0} new={1} V_iperl={2} V_ref={3}", + UInt16 newFactor = (UInt16)((double)originalCalibrationFactor * targetVolume / meterVolume + 0.5); + log.InfoFormat("Calibration factor: orig={0} new={1} V_iperl={2} V_ref={3} V_target={4}", originalCalibrationFactor, newFactor, meterVolume.ToString("F3"), - refVolume.ToString("F3")); + adjustTestResult.VolumeRef.ToString("F3"), + targetVolume.ToString("F3")); + if (newFactor < FactorLimitLo || newFactor > FactorLimitHi) return 0; diff --git a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlHead/ProcParams.cs b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlHead/ProcParams.cs index cfab5de4a..e7c410012 100644 --- a/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlHead/ProcParams.cs +++ b/TestBenchFramework/BenchControl/TestMethods/iPerlCommunication/iPerlHead/ProcParams.cs @@ -17,6 +17,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead protected override XmlSerializer GetSerializer() { return Serializer; } public MeterType MeterType; + public float CalibTarget; /// Target error after calibration in [%] public int FactorLimitLo; /// Lower limit for the calibration factor public int FactorLimitHi; /// Upper limit for the calibration factor #if ORACLE_DB @@ -28,6 +29,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead public override void InitializeAll() { MeterType = MeterType.AutoDetect; + CalibTarget = 0; FactorLimitLo = 1000; FactorLimitHi = 8000; #if ORACLE_DB @@ -39,6 +41,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead string[] paramNames = new string[] { "iPerl type", + "Calib. target [%]", "Calib. factor Lo", "Calib. factor Hi", #if ORACLE_DB @@ -54,11 +57,12 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead switch (i) { case 0: return MeterType.ToString(); - case 1: return FactorLimitLo.ToString(); - case 2: return FactorLimitHi.ToString(); + case 1: return CalibTarget.ToString(); + case 2: return FactorLimitLo.ToString(); + case 3: return FactorLimitHi.ToString(); #if ORACLE_DB - case 3: return WMType_ID.ToString(); - case 4: return WMType_Rev.ToString(); + case 4: return WMType_ID.ToString(); + case 5: return WMType_Rev.ToString(); #endif default: return string.Empty; } @@ -74,11 +78,12 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead if (mt.ToString().Equals(strValue)) { MeterType = mt; return; } } break; - case 1: FactorLimitLo = int.Parse(strValue); return; - case 2: FactorLimitHi = int.Parse(strValue); return; + case 1: CalibTarget = Utils.ParseSFloat(strValue); return; + case 2: FactorLimitLo = int.Parse(strValue); return; + case 3: FactorLimitHi = int.Parse(strValue); return; #if ORACLE_DB - case 3: WMType_ID = int.Parse(strValue); return; - case 4: WMType_Rev = int.Parse(strValue); return; + case 4: WMType_ID = int.Parse(strValue); return; + case 5: WMType_Rev = int.Parse(strValue); return; #endif default: return; } @@ -89,20 +94,24 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead message = string.Empty; int iDummy; + float fDummy; switch (i) { case 0: for (MeterType mt = 0; mt < MeterType.Count; mt++) if (mt.ToString().Equals(strValue)) return true; break; - case 1: + case 1: + if (Utils.TryParseSFloat(strValue, out fDummy) && fDummy >= -10.0f && fDummy <= 10.0f) return true; + break; case 2: + case 3: if (int.TryParse(strValue, out iDummy) && iDummy >= 1000 && iDummy <= 8000) return true; break; #if ORACLE_DB - case 3: /// WMType_ID - case 4: /// WMType_Rev + case 4: /// WMType_ID + case 5: /// WMType_Rev if (int.TryParse(strValue, out iDummy)) return true; break; #endif @@ -118,6 +127,7 @@ namespace TBF.BenchControl.TestMethods.iPerlCommunication.iPerlHead void CopyContentTo(ProcParams prms) { prms.MeterType = this.MeterType; + prms.CalibTarget = this.CalibTarget; prms.FactorLimitLo = this.FactorLimitLo; prms.FactorLimitHi = this.FactorLimitHi; #if ORACLE_DB diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index 1ea683953..a923de5d3 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.16.658.1")] -[assembly: AssemblyFileVersion("2.16.658.1")] +[assembly: AssemblyVersion("2.16.660.1")] +[assembly: AssemblyFileVersion("2.16.660.1")]