Calibration target introduced in iPerlHead.ProcParams and iPerlhead.IperlHead. CalculateNewCalibFactor( ), ver. 2.16.660

This commit is contained in:
Milan Hanajik 2017-09-18 12:32:39 +02:00
parent 7846239be9
commit 5ef1bcbdb6
3 changed files with 30 additions and 17 deletions

View File

@ -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;

View File

@ -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

View File

@ -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")]