From ed4afff0b21531df8a439236783ffcca94d43fce Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Sun, 16 Aug 2015 22:00:02 +0200 Subject: [PATCH] Changes: iPerl RR is reset at the beginnign of FlyingStartMassCollection test. etc. --- .../FlyingStartCollectionMethodSeq.cs | 9 +++ .../WaterMeters/iPerl/OptoTelegram.cs | 77 ++++++++++--------- .../WaterMeters/iPerl/WaterMeter.cs | 29 +++---- .../WaterMeters/iPerl/WaterMeterCfg.cs | 3 +- 4 files changed, 59 insertions(+), 59 deletions(-) diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStartCollectionMethod/FlyingStartCollectionMethodSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStartCollectionMethod/FlyingStartCollectionMethodSeq.cs index dbf8a6740..c71fd129e 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStartCollectionMethod/FlyingStartCollectionMethodSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStartCollectionMethod/FlyingStartCollectionMethodSeq.cs @@ -252,6 +252,15 @@ namespace TBF.BenchControl.TestMethods.FlyingStartCollectionMethod } while (!e.Contains(Event.MeasurementStarted)); + /// Reset iPerl volume measurement + foreach (var rr in sensPath.RegisterReaders) + { + if (rr is WaterMeters.iPerl.WaterMeter) + { + (rr as WaterMeters.iPerl.WaterMeter).Reset(); + } + } + /// Measurement loop - preparation readRegisters1 = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders, ref WMPulses, ref WMRefPulses); readRegisters2 = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders, ref WMPulses, ref WMRefPulses); diff --git a/TestBenchFramework/BenchControl/WaterMeters/iPerl/OptoTelegram.cs b/TestBenchFramework/BenchControl/WaterMeters/iPerl/OptoTelegram.cs index 12ba75435..98a67c643 100644 --- a/TestBenchFramework/BenchControl/WaterMeters/iPerl/OptoTelegram.cs +++ b/TestBenchFramework/BenchControl/WaterMeters/iPerl/OptoTelegram.cs @@ -39,7 +39,7 @@ namespace TBF.BenchControl.WaterMeters.iPerl /// AAAAAA EMF Int24 Value * 0.000000333 /// BBBB Magnetic field Int16 Value /// CCCC Flow Int16 Value * 0.225 * Scalig factor - /// DDDDDD Volume Int24 Value / 16000 * Scaling factor + /// DDDDDD Volume Int24 Value / 16000 * Scaling factor in Ltr /// EEEE Impedance Int16 Value /// FFFFFFFF Timestamp Uint32 Value / 8192 /// GG @@ -65,29 +65,30 @@ namespace TBF.BenchControl.WaterMeters.iPerl OptoTelegram opto = new OptoTelegram(); - Int32 value; - if (Int32.TryParse(telegram.Substring(0, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value)) - { - Int32 svalue = (value >= 0x00800000) ? (value - 0x01000000) : value; - opto.EMF = 0.000000333 * (double)svalue; - } - else return null; + double factor = ScalingFactor(meterType); - if (Int32.TryParse(telegram.Substring(7, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value)) - { - Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value; - opto.MagneticField = (Int16)svalue; - } - else return null; + Int32 value; - double factor = ScalingFactor(meterType); + //if (Int32.TryParse(telegram.Substring(0, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value)) + //{ + // Int32 svalue = (value >= 0x00800000) ? (value - 0x01000000) : value; + // opto.EMF = 0.000000333 * (double)svalue; + //} + //else return null; - if (Int32.TryParse(telegram.Substring(12, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value)) - { - Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value; - opto.Flow = 0.225 * (double)svalue * factor; - } - else return null; + //if (Int32.TryParse(telegram.Substring(7, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value)) + //{ + // Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value; + // opto.MagneticField = (Int16)svalue; + //} + //else return null; + + //if (Int32.TryParse(telegram.Substring(12, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value)) + //{ + // Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value; + // opto.Flow = 0.225 * (double)svalue * factor; + //} + //else return null; if (Int32.TryParse(telegram.Substring(17, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value)) { @@ -96,25 +97,25 @@ namespace TBF.BenchControl.WaterMeters.iPerl } else return null; - if (Int32.TryParse(telegram.Substring(24, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value)) - { - Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value; - opto.Impedance = (Int16)svalue; - } - else return null; + //if (Int32.TryParse(telegram.Substring(24, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value)) + //{ + // Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value; + // opto.Impedance = (Int16)svalue; + //} + //else return null; - UInt32 uvalue; - if (UInt32.TryParse(telegram.Substring(29, 8), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out uvalue)) - { - opto.Timestamp = uvalue; - } - else return null; + UInt32 uvalue; + if (UInt32.TryParse(telegram.Substring(29, 8), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out uvalue)) + { + opto.Timestamp = uvalue; + } + else return null; - if (UInt32.TryParse(telegram.Substring(38, 2), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out uvalue)) - { - opto.GG = (byte)uvalue; - } - else return null; + //if (UInt32.TryParse(telegram.Substring(38, 2), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out uvalue)) + //{ + // opto.GG = (byte)uvalue; + //} + //else return null; opto.sourceStr = telegram.Substring(0, Length - 2); diff --git a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs index 9fab4c39a..db06f0a9a 100644 --- a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs +++ b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeter.cs @@ -81,17 +81,7 @@ namespace TBF.BenchControl.WaterMeters.iPerl public CalibrationStruct CalibrationStruct { get { return calibrationStruct; } - set - { - calibrationStruct = value; - switch (calibrationStruct.VolumeUnits) - { - default: - case VolumeUnits.m3: volumeUnit = 1000.0; break; /// liter per m3 - case VolumeUnits.US_gallon: volumeUnit = 3.785; break; /// liter per US gallon - case VolumeUnits.UK_gallon: volumeUnit = 4.54609; break; /// liter per UK gallon - } - } + set { calibrationStruct = value; } } CalibrationStruct calibrationStruct; @@ -111,11 +101,7 @@ namespace TBF.BenchControl.WaterMeters.iPerl /// Volume of water in liter set by OptoTelegramRreceived(...) /// private double volumeLtr; - - /// - /// Volume of one water meter unit in liter. Set when reading the configuration. - /// - private double volumeUnit; + private double volumeLtrStart; private Boxes.IntBox pulses; private Boxes.IntBox refPulses; @@ -137,7 +123,6 @@ namespace TBF.BenchControl.WaterMeters.iPerl synchronized = false; synchronized2 = false; partOfTelegram = string.Empty; - volumeUnit = 1000.0; /// liter / m3 } public WaterMeter(WaterMeterCfg cfg) @@ -255,10 +240,14 @@ namespace TBF.BenchControl.WaterMeters.iPerl void ReadPulses() { - pulses.Val = (int)(volumeLtr / (double)PulsesPerLtr + 0.5); - refPulses.Val = 2; /// Do something meaningfull here + pulses.Val = (int)((volumeLtr - volumeLtrStart) / (double)PulsesPerLtr + 0.5); + refPulses.Val = StateMachine.ControlBoard.EtPulses(0); } + public void Reset() + { + volumeLtrStart = volumeLtr; + } #if USE_SEPARATE_WORKER_THREAD void Worker() @@ -354,7 +343,7 @@ namespace TBF.BenchControl.WaterMeters.iPerl void OptoTelegramRreceived(OptoTelegram optoTelegram, bool async) { - volumeLtr = optoTelegram.Volume * volumeUnit; + volumeLtr = optoTelegram.Volume; optoDataLogger.InfoFormat("{0}: {1}", Name, optoTelegram); } diff --git a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeterCfg.cs b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeterCfg.cs index 59014c9de..5a05f7bd9 100644 --- a/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeterCfg.cs +++ b/TestBenchFramework/BenchControl/WaterMeters/iPerl/WaterMeterCfg.cs @@ -52,8 +52,9 @@ namespace TBF.BenchControl.WaterMeters.iPerl public string ToString(int i) { - return string.Format("Name={0}, Opto=COM{1}, RFID=COM{2}, Group={3}", + return string.Format("Name={0}, Type={1}, Opto=COM{2}, RFID=COM{3}, Group={4}", Name, + MeterType, OptoComPortNr, RfidComPortNr, Group);