diff --git a/Config/Data.cs b/Config/Data.cs index 1a6694bc0..5f9dc4bab 100644 --- a/Config/Data.cs +++ b/Config/Data.cs @@ -12,40 +12,49 @@ namespace Config public const int WMsCount = 3; public const int LineSize = 1; public const int CompoundWMsCount = 1; + public const int HeatMetersCount = 0; #elif DN100 || BADGER_VELKA_TRAT public const int WMsCount = 3; public const int LineSize = 3; public const int CompoundWMsCount = 1; + public const int HeatMetersCount = 0; #elif FUZHOU300 || FUZHOU150 || PT200IL || PUCHONG_PT200 || GENESIS public const int WMsCount = 6; public const int LineSize = 6; public const int CompoundWMsCount = 3; + public const int HeatMetersCount = 0; #elif TORINO50 || BADGER_MALA_TRAT public const int WMsCount = 6; public const int LineSize = 6; public const int CompoundWMsCount = 1; + public const int HeatMetersCount = 0; #elif TORUN_PT50_2015 || CEVAK_PT40_272 || MURES_PT40 || FUZHOU_40 public const int WMsCount = 20; public const int LineSize = 10; public const int CompoundWMsCount = 1; + public const int HeatMetersCount = 0; #elif IPERLST public const int WMsCount = 40; public const int LineSize = 20; public const int CompoundWMsCount = 1; + public const int HeatMetersCount = 0; #elif IPERLST_SPECIAL public const int WMsCount = 6; public const int LineSize = 6; public const int CompoundWMsCount = 1; + public const int HeatMetersCount = 0; #elif SLM_50 public const int WMsCount = 12; public const int LineSize = 12; public const int CompoundWMsCount = 1; + public const int HeatMetersCount = 6; #elif SLM_END public const int WMsCount = 12; public const int LineSize = 6; public const int CompoundWMsCount = 1; + public const int HeatMetersCount = 0; #endif - public static int MaxPartNr() + public static int MaxPartNr() { return Math.Max(WMsCount / LineSize, CompoundWMsCount); } diff --git a/Config/Entities/Enums.cs b/Config/Entities/Enums.cs index 323002bd2..c95d63c64 100644 --- a/Config/Entities/Enums.cs +++ b/Config/Entities/Enums.cs @@ -76,6 +76,8 @@ namespace Config.Entities CompoundMain, CompoundAux, Compound, + HeatMeterVolume, + HeatMeterEnergy, } public enum Medium diff --git a/Config/Properties/AssemblyInfo.cs b/Config/Properties/AssemblyInfo.cs index 238ecdb4d..856ebae67 100644 --- a/Config/Properties/AssemblyInfo.cs +++ b/Config/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.10.351.0")] -[assembly: AssemblyFileVersion("2.10.351.0")] +[assembly: AssemblyVersion("2.10.352.0")] +[assembly: AssemblyFileVersion("2.10.352.0")] diff --git a/Results/BatchResults.cs b/Results/BatchResults.cs index 8d86655b7..8b8924e39 100644 --- a/Results/BatchResults.cs +++ b/Results/BatchResults.cs @@ -91,22 +91,27 @@ namespace Results if (t.Part != 0 && waterMeterParts[i] != 0 && t.Part != waterMeterParts[i]) continue; + /// /// Create empty watermeter test results and add them to the list and to dictionaries - if (!d.Batch.Compound) + /// + IList wmtrs = d.WaterMeters[i].MeterTestRslts; + if (d.Batch.Compound) { - MeterTestRslt mtr = new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.Single); - d.WaterMeters[i].MeterTestRslts.Add(mtr); + /// Compound water meter + wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.CompoundMain)); + wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.CompoundAux)); + wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.Compound)); + } + else if (d.Batch.HeatMeter) + { + /// Heat meter + wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.HeatMeterVolume)); + wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.HeatMeterEnergy)); } else { - MeterTestRslt mainMTR = new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.CompoundMain); - d.WaterMeters[i].MeterTestRslts.Add(mainMTR); - - MeterTestRslt auxMTR = new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.CompoundAux); - d.WaterMeters[i].MeterTestRslts.Add(auxMTR); - - MeterTestRslt cmpdMTR = new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.Compound); - d.WaterMeters[i].MeterTestRslts.Add(cmpdMTR); + /// Water meter + wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.Single)); } } } diff --git a/Results/Entities/Batch.cs b/Results/Entities/Batch.cs index 533f2c73c..f7542ab0f 100644 --- a/Results/Entities/Batch.cs +++ b/Results/Entities/Batch.cs @@ -31,9 +31,7 @@ namespace Results.Entities public virtual IList WaterMeters { get; set; } public virtual IList TestRslts { get; set; } public virtual bool Compound { get; set; } /// Not mapped to DB now -#if HEAT_METERS_SUPPORT - public virtual bool HeatMeter { get; set; } /// Not mapped to DB now -#endif + public virtual bool HeatMeter { get; set; } /// Not mapped to DB now public Batch() { diff --git a/Results/Entities/MeterTestRslt.cs b/Results/Entities/MeterTestRslt.cs index 24b71b98a..11d31369f 100644 --- a/Results/Entities/MeterTestRslt.cs +++ b/Results/Entities/MeterTestRslt.cs @@ -9,24 +9,18 @@ namespace Results.Entities { public virtual int Id { get; protected set; } - public virtual byte CompoundMeterId { get; set; } /// 0=single, 1=compound/main, 2=compound/aux., 3=compound/overal - public virtual double PulsesMeter { get; set; } /// # of water meter pulses + public virtual byte CompoundMeterId { get; set; } /// 0=single, 1=compound/main, 2=compound/aux., 3=compound/overal, 4=heat meter volume, 5=heat meter energy + public virtual double PulsesMeter { get; set; } /// # of water meter or heat meter pulses public virtual double PulsesMaster { get; set; } /// # of reference flowmeter pulses (gated by this water meter pulses) - public virtual double PulsesPerLiter { get; set; } /// # of water meter pulses per one liter - public virtual double VolumeStart { get; set; } /// [l] - public virtual double VolumeEnd { get; set; } /// [l] - public virtual double VolumeMeter { get; set; } /// [l] - public virtual double VolumeRef { get; set; } /// [l] + public virtual double PulsesPerLiter { get; set; } /// [l ^ -1], in case of heat meters (CompoundMeterId==5) pulses per kWh in [kWh ^ -1] + public virtual double VolumeStart { get; set; } /// Volume or energy (CompoundMeterId==5) on test start in [l] or [J] + public virtual double VolumeEnd { get; set; } /// Volume or energy (CompoundMeterId==5) on test end in [l] or [J] + public virtual double VolumeMeter { get; set; } /// Measured volume or energy (CompoundMeterId==5) in [l] or [J] + public virtual double VolumeRef { get; set; } /// Reference volume or energy (CompoundMeterId==5) in [l] or [J] public virtual double TimestampStart { get; set; } /// [s] public virtual double TimestampEnd { get; set; } /// [s] public virtual double TestTime { get; set; } /// [s] - /// - /// Heat meter - public virtual double EnergyStart { get; set; } /// [J] - public virtual double EnergyEnd { get; set; } /// [J] - public virtual double Energy { get; set; } /// [J] - public virtual double RefEnergy { get; set; } /// [J] - + /// Main result public virtual double Error { get; set; } /// [%] public virtual bool TestDone { get; set; } /// true = test was completed diff --git a/Results/Entities/WaterMeterData.cs b/Results/Entities/WaterMeterData.cs index 21759e6ed..167697c1a 100644 --- a/Results/Entities/WaterMeterData.cs +++ b/Results/Entities/WaterMeterData.cs @@ -47,9 +47,8 @@ namespace Results.Entities public virtual string Text5 { get; set; } public virtual bool Compound { get; set; } -#if HEAT_METER_SUPPORT public virtual bool HeatMeter { get; set; } -#endif + #if IPERLST || IPERLST_SPECIAL public virtual int WMTypeId { get; set; } public virtual int WMTypeRev { get; set; } @@ -102,6 +101,7 @@ namespace Results.Entities if (Text5 != wmd.Text5) return false; if (Compound != wmd.Compound) return false; + if (HeatMeter != wmd.HeatMeter) return false; #if IPERLST || IPERLST_SPECIAL if (WMTypeId != wmd.WMTypeId) return false; diff --git a/Results/ItemSpec.cs b/Results/ItemSpec.cs index 03a7e0ddb..406e86af4 100644 --- a/Results/ItemSpec.cs +++ b/Results/ItemSpec.cs @@ -166,8 +166,8 @@ namespace Results AllItems.Add(new ItemSpec("Batch end time", Strings.End, x => x.Batch().EndTime.ToShortTimeString(), (x, y, z) => x.Batch().EndTime.ToShortTimeString())); /// Heat meters results - AllItems.Add(new ItemSpec("Energy", Strings.Energy, x => x.Energy.ToString(), null)); - AllItems.Add(new ItemSpec("Reference energy", Strings.Energy_ref, x => x.RefEnergy.ToString(), null)); + AllItems.Add(new ItemSpec("Energy", Strings.Energy, null, (x,y,z) => z.VolumeMeter.ToString())); + AllItems.Add(new ItemSpec("Reference energy", Strings.Energy_ref, null, (x,y,z) => z.VolumeRef.ToString())); } public static ItemSpec GetItem(string name) diff --git a/Results/Mappings/MeterTestRsltMap.cs b/Results/Mappings/MeterTestRsltMap.cs index 5ccb5c9b0..b0332ad6c 100644 --- a/Results/Mappings/MeterTestRsltMap.cs +++ b/Results/Mappings/MeterTestRsltMap.cs @@ -25,12 +25,6 @@ namespace Results.Mappings Map(x => x.Error); Map(x => x.TestDone); Map(x => x.Passed); -#if HEAT_METERS_SUPPORT - Map(x => x.EnergyStart); - Map(x => x.EnergyEnd); - Map(x => x.Energy); - Map(x => x.RefEnergy); -#endif References(x => x.WaterMeter); References(x => x.TestRslt); diff --git a/Results/Properties/AssemblyInfo.cs b/Results/Properties/AssemblyInfo.cs index d4aa17abc..77cf0fbf0 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.10.351.0")] -[assembly: AssemblyFileVersion("2.10.351.0")] +[assembly: AssemblyVersion("2.10.352.0")] +[assembly: AssemblyFileVersion("2.10.352.0")] diff --git a/Results/WMeterRsltItemSpec.cs b/Results/WMeterRsltItemSpec.cs index afbc13381..f7d839698 100644 --- a/Results/WMeterRsltItemSpec.cs +++ b/Results/WMeterRsltItemSpec.cs @@ -136,8 +136,8 @@ namespace Results AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume, Strings.Volume + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_volume, Strings.VolRef + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeRef).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); #if HEAT_METERS_SUPPORT - AllItems.Add(new WMeterRsltItemSpec(ItemID.Energy, Strings.Energy + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).Energy).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_energy, Strings.Energy_ref + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).RefEnergy).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Energy, Strings.Energy + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_energy, Strings.Energy_ref + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeRef).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); #endif #if IPERLST || IPERLST_SPECIAL AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, Strings.Error + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "0" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).Error).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); diff --git a/ResultsBrowser/Properties/AssemblyInfo.cs b/ResultsBrowser/Properties/AssemblyInfo.cs index 440af4a28..c6ffff8fa 100644 --- a/ResultsBrowser/Properties/AssemblyInfo.cs +++ b/ResultsBrowser/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.10.351.0")] -[assembly: AssemblyFileVersion("2.10.351.0")] +[assembly: AssemblyVersion("2.10.352.0")] +[assembly: AssemblyFileVersion("2.10.352.0")] diff --git a/TestBenchFramework/BenchControl/Elde/RegisterReader/RegisterReaderFactory.cs b/TestBenchFramework/BenchControl/Elde/RegisterReader/Factory.cs similarity index 91% rename from TestBenchFramework/BenchControl/Elde/RegisterReader/RegisterReaderFactory.cs rename to TestBenchFramework/BenchControl/Elde/RegisterReader/Factory.cs index 35059abd1..01e454193 100644 --- a/TestBenchFramework/BenchControl/Elde/RegisterReader/RegisterReaderFactory.cs +++ b/TestBenchFramework/BenchControl/Elde/RegisterReader/Factory.cs @@ -6,7 +6,7 @@ using TBF.BenchControl.Generic; namespace TBF.BenchControl.Elde.RegisterReader { - public class RegisterReaderFactory : IComponentFactory + public class Factory : IComponentFactory { public string ClassName { get { return "RegisterReader"; } } @@ -16,7 +16,7 @@ namespace TBF.BenchControl.Elde.RegisterReader public IComponent GetComponent(IComponentCfg cfg, IList components) { return new RegisterReader(cfg, components); } - public IComponentCfg DefaultConfig() { return new RegisterReaderCfg(this); } + public IComponentCfg DefaultConfig() { return new RegisterReaderCfg("Sick", this); } public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component) { diff --git a/TestBenchFramework/BenchControl/Elde/RegisterReader/RRProcedureParams.cs b/TestBenchFramework/BenchControl/Elde/RegisterReader/RRProcedureParams.cs index 2a5bc4f90..1962a0dcd 100644 --- a/TestBenchFramework/BenchControl/Elde/RegisterReader/RRProcedureParams.cs +++ b/TestBenchFramework/BenchControl/Elde/RegisterReader/RRProcedureParams.cs @@ -13,7 +13,7 @@ namespace TBF.BenchControl.Elde.RegisterReader { public class RRProcedureParams : ProcedureParamsBase, IParamsProvider, IProcedureParams { - public float PulsesPerLtr; /// Target low limit of the flow increase or decrease + public float PulsesPerLtr; /// [l^-1] public override void InitializeAll() { diff --git a/TestBenchFramework/BenchControl/Elde/RegisterReader/RegisterReaderCfg.cs b/TestBenchFramework/BenchControl/Elde/RegisterReader/RegisterReaderCfg.cs index 0986f7fba..079f4e400 100644 --- a/TestBenchFramework/BenchControl/Elde/RegisterReader/RegisterReaderCfg.cs +++ b/TestBenchFramework/BenchControl/Elde/RegisterReader/RegisterReaderCfg.cs @@ -33,16 +33,16 @@ namespace TBF.BenchControl.Elde.RegisterReader /// Private parameterless constructor invoked by all other (public) constructors RegisterReaderCfg() { - Name = "Sick"; - ParentName = "CB"; - Position = 1; ProcParams = new RRProcedureParams(); } - public RegisterReaderCfg(IComponentFactory factory) + public RegisterReaderCfg(string name, IComponentFactory factory) : this() { - this.Factory = factory; + Name = name; + Factory = factory; + ParentName = "CB"; + Position = 1; } public string ToString(int i) diff --git a/TestBenchFramework/BenchControl/GenericDevices/IRegisterReader.cs b/TestBenchFramework/BenchControl/GenericDevices/IRegisterReader.cs index 23ae1f306..0e81064e5 100644 --- a/TestBenchFramework/BenchControl/GenericDevices/IRegisterReader.cs +++ b/TestBenchFramework/BenchControl/GenericDevices/IRegisterReader.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2013-2015 Sensus Metering Systems +/// Copyright (c) 2013-2016 Sensus Metering Systems /// using TBF.BenchControl.Generic; using TBF.Boxes; @@ -8,8 +8,8 @@ namespace TBF.BenchControl.GenericDevices { public interface IRegisterReader : IComponent { - double PulsesPerLtr { get; } /// Entered by users in configuration - double LtrsPerPulse { get; } /// To calculate the volume from WMPulses + double PulsesPerLtr { get; } /// [l^-1] ... water meter or volume measurement part of a heat meter + double LtrsPerPulse { get; } /// [l] int WMPulses { get; } /// Counted pulses of the water meter double WMVolume { get; } /// Counted volume of the water metter diff --git a/TestBenchFramework/BenchControl/Sequences/MainSeq.cs b/TestBenchFramework/BenchControl/Sequences/MainSeq.cs index dc5ec7d30..04612c2ed 100644 --- a/TestBenchFramework/BenchControl/Sequences/MainSeq.cs +++ b/TestBenchFramework/BenchControl/Sequences/MainSeq.cs @@ -249,7 +249,8 @@ namespace TBF.BenchControl.Sequences foreach (var wm in WaterMeters) wm.ClearData(); /// Clean water meter data bool compound = (StateMachine.Procedure.MetersKind == MetersKind.Combined); - int waterMetersCount = Math.Min(WaterMeters.Count, compound ? Config.Data.CompoundWMsCount : Config.Data.WMsCount); + bool heatMeters = (StateMachine.Procedure.MetersKind == MetersKind.HeatMeter); + int waterMetersCount = Math.Min(WaterMeters.Count, heatMeters ? Config.Data.HeatMetersCount : (compound ? Config.Data.CompoundWMsCount : Config.Data.WMsCount)); /// Results.Entities.WaterMeterData[] waterMeterData = new Results.Entities.WaterMeterData[waterMetersCount]; /// diff --git a/TestBenchFramework/BenchControl/TbfComponents.cs b/TestBenchFramework/BenchControl/TbfComponents.cs index 906186f85..913afdae3 100644 --- a/TestBenchFramework/BenchControl/TbfComponents.cs +++ b/TestBenchFramework/BenchControl/TbfComponents.cs @@ -73,7 +73,7 @@ namespace TBF.BenchControl Factories.Add(new Elde.PumpTandem.PumpFactory()); Factories.Add(new Modbus.QuidoRS.Factory()); /// QuidoRS Factories.Add(new TestMethods.ReferenceFlowmeterCalibration.TestMethodFactory()); - Factories.Add(new Elde.RegisterReader.RegisterReaderFactory()); + Factories.Add(new Elde.RegisterReader.Factory()); Factories.Add(new Elde.RegulValve.RegulValveFactory()); Factories.Add(new Elde.RegulValveTandem.RegulValveTandemFactory()); Factories.Add(new ResultsPrinters.Cevak.PrinterFactory()); diff --git a/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs index 936e5930a..fab0a880c 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs @@ -740,38 +740,52 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection /// /// Heat meters /// - tstRslt.RefEnergy = Energy.Sum * tstRslt.VolumeCTV / VolumeForEnergy.Sum; /// [J]=[J]*[l]/[l] + tstRslt.RefEnergy = Energy.Sum * tstRslt.VolumeCTV / VolumeForEnergy.Sum; /// [J] = [J] * [l] / [l] for (int i = 0; i < BatchRslts.WMPositionsCount; i++) { if (test.Part != 0 && test.Part != Utils.PartNr(i + 1, BatchRslts.Batch.Compound)) continue; - Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Single); - BenchControl.Elde.FixedStartRegisterReader.RegisterReader regReader = - sensPath.RegisterReaders[i] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader; + Results.Entities.MeterTestRslt volumeRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.HeatMeterVolume); + Results.Entities.MeterTestRslt energyRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.HeatMeterEnergy); - if (meterRslt != null && regReader != null) + BenchControl.Elde.FixedStartRegisterReader.RegisterReader volumeRegReader = + (sensPath.RegisterReaders.Length > 2 * i) ? sensPath.RegisterReaders[2 * i] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader : null; + + BenchControl.Elde.FixedStartRegisterReader.RegisterReader energyRegReader = + (sensPath.RegisterReaders.Length > 2 * i + 1) ? sensPath.RegisterReaders[2 * i + 1] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader : null; + + if (volumeRslt != null && volumeRegReader != null) { - meterRslt.PulsesPerLiter = 1.0f; - meterRslt.VolumeStart = regReader.BeginWMState; - meterRslt.VolumeEnd = regReader.EndWMState; - meterRslt.VolumeMeter = meterRslt.VolumeEnd - meterRslt.VolumeStart; - meterRslt.VolumeRef = tstRslt.VolumeCTV; /// liter - meterRslt.PulsesMeter = meterRslt.VolumeMeter; - meterRslt.PulsesMaster = tstRslt.PulsesMaster; - meterRslt.TestTime = tstRslt.TestTime; - if (dataEntryCmpnt is GenericDevices.IHasHeatMtrStatesForm) - { - meterRslt.EnergyStart = (dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm).EnergyStartState(i); - meterRslt.EnergyEnd = (dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm).EnergyEndState(i); - meterRslt.Energy = meterRslt.EnergyEnd - meterRslt.EnergyStart; - } - meterRslt.RefEnergy = tstRslt.RefEnergy; + volumeRslt.PulsesPerLiter = 1.0f; + volumeRslt.VolumeStart = volumeRegReader.BeginWMState; + volumeRslt.VolumeEnd = volumeRegReader.EndWMState; + volumeRslt.VolumeMeter = volumeRslt.VolumeEnd - volumeRslt.VolumeStart; + volumeRslt.VolumeRef = tstRslt.VolumeCTV; + volumeRslt.PulsesMeter = volumeRslt.VolumeMeter; + volumeRslt.PulsesMaster = tstRslt.PulsesMaster; /// <----------------- ??? + volumeRslt.TestTime = tstRslt.TestTime; - meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.Energy, meterRslt.RefEnergy); - meterRslt.Passed = (meterRslt.Error >= test.ErrLimLo + test.Uncertainty) - && (meterRslt.Error <= test.ErrLimHi - test.Uncertainty); - meterRslt.TestDone = true; + volumeRslt.Error = Formulas.ErrorFromVolumes(volumeRslt.VolumeMeter, volumeRslt.VolumeRef); + volumeRslt.Passed = (volumeRslt.Error >= test.ErrLimLo + test.Uncertainty) + && (volumeRslt.Error <= test.ErrLimHi - test.Uncertainty); + volumeRslt.TestDone = true; + } + + if (energyRslt != null && energyRegReader != null && dataEntryCmpnt is GenericDevices.IHasHeatMtrStatesForm) + { + volumeRslt.PulsesPerLiter = 1.0f; + energyRslt.VolumeStart = (dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm).EnergyStartState(i); + energyRslt.VolumeEnd = (dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm).EnergyEndState(i); + energyRslt.VolumeMeter = energyRslt.VolumeEnd - energyRslt.VolumeStart; + energyRslt.VolumeRef = tstRslt.RefEnergy; + energyRslt.PulsesMeter = energyRslt.VolumeMeter; + energyRslt.PulsesMaster = tstRslt.PulsesMaster; /// <----------------- ??? + + energyRslt.Error = Formulas.ErrorFromVolumes(energyRslt.VolumeMeter, energyRslt.VolumeRef); + energyRslt.Passed = (energyRslt.Error >= test.ErrLimLo + test.Uncertainty) + && (energyRslt.Error <= test.ErrLimHi - test.Uncertainty); + energyRslt.TestDone = true; } } } diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs index 648cab0a5..fcf564a9f 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs @@ -396,32 +396,47 @@ namespace TBF.BenchControl.TestMethods.FlyingStart { if (test.Part != 0 && test.Part != Utils.PartNr(i + 1, BatchRslts.Batch.Compound)) continue; - Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Single); - GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[i]; + Results.Entities.MeterTestRslt volumeRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.HeatMeterVolume); + Results.Entities.MeterTestRslt energyRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.HeatMeterEnergy); - if (meterRslt != null && regReader != null) + BenchControl.Elde.FixedStartRegisterReader.RegisterReader volumeRegReader = + (sensPath.RegisterReaders.Length > 2 * i) ? sensPath.RegisterReaders[2 * i] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader : null; + + BenchControl.Elde.FixedStartRegisterReader.RegisterReader energyRegReader = + (sensPath.RegisterReaders.Length > 2 * i + 1) ? sensPath.RegisterReaders[2 * i + 1] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader : null; + + if (volumeRslt != null && volumeRegReader != null) { - meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; - meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses); - meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses); + volumeRslt.PulsesPerLiter = volumeRegReader.PulsesPerLtr; /// [l ^ -1] + volumeRslt.PulsesMeter = Convert.ToDouble(volumeRegReader.WMPulses); + volumeRslt.PulsesMaster = Convert.ToDouble(volumeRegReader.WMRefPulses); + volumeRslt.VolumeStart = 0; + volumeRslt.VolumeEnd = 0; + volumeRslt.VolumeMeter = volumeRslt.PulsesMeter * volumeRegReader.LtrsPerPulse; /// [l] + volumeRslt.VolumeRef = volumeRslt.PulsesMaster * tstRslt.ConstMaster; /// [l] + volumeRslt.TestTime = tstRslt.TestTime; /// [s] - meterRslt.TestTime = tstRslt.TestTime; /// TODO: Malo by sa citat z dosky - meterRslt.VolumeStart = 0; /// liter - meterRslt.VolumeEnd = 0; /// liter - meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter - meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter + volumeRslt.Error = Formulas.ErrorFromVolumes(volumeRslt.VolumeMeter, volumeRslt.VolumeRef); + volumeRslt.Passed = (volumeRslt.Error >= test.ErrLimLo + test.Uncertainty) + && (volumeRslt.Error <= test.ErrLimHi - test.Uncertainty); + volumeRslt.TestDone = true; + } - /// TODO: Rewrite the following 2 lines - meterRslt.EnergyStart = 0.0; - meterRslt.EnergyEnd = 1.0; + if (energyRslt != null && energyRegReader != null) + { + energyRslt.PulsesPerLiter = energyRegReader.PulsesPerLtr; /// [kWh ^ -1] + energyRslt.PulsesMeter = Convert.ToDouble(energyRegReader.WMPulses); + energyRslt.PulsesMaster = Convert.ToDouble(energyRegReader.WMRefPulses); + energyRslt.VolumeStart = 0; + energyRslt.VolumeEnd = 0; + energyRslt.VolumeMeter = energyRslt.PulsesMeter * Config.Units.ConvertFrom(Config.Unit.kWh, energyRegReader.LtrsPerPulse); /// [J] + energyRslt.VolumeRef = tstRslt.RefEnergy; /// [J] + energyRslt.TestTime = tstRslt.TestTime; /// [s] - meterRslt.Energy = meterRslt.EnergyEnd - meterRslt.EnergyStart; - meterRslt.RefEnergy = tstRslt.RefEnergy; - - meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.Energy, meterRslt.RefEnergy); - meterRslt.Passed = (meterRslt.Error >= test.ErrLimLo + test.Uncertainty) - && (meterRslt.Error <= test.ErrLimHi - test.Uncertainty); - meterRslt.TestDone = true; + energyRslt.Error = Formulas.ErrorFromVolumes(energyRslt.VolumeMeter, energyRslt.VolumeRef); + energyRslt.Passed = (energyRslt.Error >= test.ErrLimLo + test.Uncertainty) + && (energyRslt.Error <= test.ErrLimHi - test.Uncertainty); + energyRslt.TestDone = true; } } } diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs index 11ed05064..8d9571855 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs @@ -667,32 +667,47 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection { if (test.Part != 0 && test.Part != Utils.PartNr(i + 1, BatchRslts.Batch.Compound)) continue; - Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.Single); - GenericDevices.IRegisterReader regReader = sensPath.RegisterReaders[i]; + Results.Entities.MeterTestRslt volumeRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.HeatMeterVolume); + Results.Entities.MeterTestRslt energyRslt = BatchRslts.GetMeterTestRslt(testName, i, Config.Entities.CompoundMeterId.HeatMeterEnergy); - if (meterRslt != null && regReader != null) + BenchControl.Elde.FixedStartRegisterReader.RegisterReader volumeRegReader = + (sensPath.RegisterReaders.Length > 2 * i) ? sensPath.RegisterReaders[2 * i] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader : null; + + BenchControl.Elde.FixedStartRegisterReader.RegisterReader energyRegReader = + (sensPath.RegisterReaders.Length > 2 * i + 1) ? sensPath.RegisterReaders[2 * i + 1] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader : null; + + if (volumeRslt != null && volumeRegReader != null) { - meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; - meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses); - meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses); + volumeRslt.PulsesPerLiter = volumeRegReader.PulsesPerLtr; /// [l ^ -1] + volumeRslt.PulsesMeter = Convert.ToDouble(volumeRegReader.WMPulses); + volumeRslt.PulsesMaster = Convert.ToDouble(volumeRegReader.WMRefPulses); + volumeRslt.VolumeStart = 0; + volumeRslt.VolumeEnd = 0; + volumeRslt.VolumeMeter = volumeRslt.PulsesMeter * volumeRegReader.LtrsPerPulse; /// [l] + volumeRslt.VolumeRef = volumeRslt.PulsesMaster * tstRslt.ConstMaster; /// [l] + volumeRslt.TestTime = tstRslt.TestTime; /// [s] - meterRslt.TestTime = tstRslt.TestTime; /// TODO: Malo by sa citat z dosky - meterRslt.VolumeStart = 0; /// liter - meterRslt.VolumeEnd = 0; /// liter - meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse; /// liter - meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster; /// liter + volumeRslt.Error = Formulas.ErrorFromVolumes(volumeRslt.VolumeMeter, volumeRslt.VolumeRef); + volumeRslt.Passed = (volumeRslt.Error >= test.ErrLimLo + test.Uncertainty) + && (volumeRslt.Error <= test.ErrLimHi - test.Uncertainty); + volumeRslt.TestDone = true; + } - /// TODO: Rewrite the following 2 lines - meterRslt.EnergyStart = 0.0; - meterRslt.EnergyEnd = 1.0; + if (energyRslt != null && energyRegReader != null) + { + energyRslt.PulsesPerLiter = energyRegReader.PulsesPerLtr; /// [kWh ^ -1] + energyRslt.PulsesMeter = Convert.ToDouble(energyRegReader.WMPulses); + energyRslt.PulsesMaster = Convert.ToDouble(energyRegReader.WMRefPulses); + energyRslt.VolumeStart = 0; + energyRslt.VolumeEnd = 0; + energyRslt.VolumeMeter = energyRslt.PulsesMeter * Config.Units.ConvertFrom(Config.Unit.kWh, energyRegReader.LtrsPerPulse); /// [J] + energyRslt.VolumeRef = tstRslt.RefEnergy; /// [J] + energyRslt.TestTime = tstRslt.TestTime; /// [s] - meterRslt.Energy = meterRslt.EnergyEnd - meterRslt.EnergyStart; - meterRslt.RefEnergy = tstRslt.RefEnergy; - - meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.Energy, meterRslt.RefEnergy); - meterRslt.Passed = (meterRslt.Error >= test.ErrLimLo + test.Uncertainty) - && (meterRslt.Error <= test.ErrLimHi - test.Uncertainty); - meterRslt.TestDone = true; + energyRslt.Error = Formulas.ErrorFromVolumes(energyRslt.VolumeMeter, energyRslt.VolumeRef); + energyRslt.Passed = (energyRslt.Error >= test.ErrLimLo + test.Uncertainty) + && (energyRslt.Error <= test.ErrLimHi - test.Uncertainty); + energyRslt.TestDone = true; } } } diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index e6ba6f80c..0fd2f3a3c 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.10.351.1")] -[assembly: AssemblyFileVersion("2.10.351.1")] +[assembly: AssemblyVersion("2.10.352.1")] +[assembly: AssemblyFileVersion("2.10.352.1")] diff --git a/TestBenchFramework/Resources/Strings.Designer.cs b/TestBenchFramework/Resources/Strings.Designer.cs index 92b990105..97dc90e7c 100644 --- a/TestBenchFramework/Resources/Strings.Designer.cs +++ b/TestBenchFramework/Resources/Strings.Designer.cs @@ -2751,6 +2751,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Pulses per kWh. + /// + internal static string PulsesPerKWh { + get { + return ResourceManager.GetString("PulsesPerKWh", resourceCulture); + } + } + /// /// Looks up a localized string similar to Pulses per liter. /// diff --git a/TestBenchFramework/Resources/Strings.resx b/TestBenchFramework/Resources/Strings.resx index 5a63147ef..764314823 100644 --- a/TestBenchFramework/Resources/Strings.resx +++ b/TestBenchFramework/Resources/Strings.resx @@ -1585,4 +1585,7 @@ Calibration coefficients + + Pulses per kWh + \ No newline at end of file diff --git a/TestBenchFramework/TBF.csproj b/TestBenchFramework/TBF.csproj index 0309e3a2f..bd1113b34 100644 --- a/TestBenchFramework/TBF.csproj +++ b/TestBenchFramework/TBF.csproj @@ -927,7 +927,7 @@ RegisterReaderCfgCtrl.cs - + UserControl