Heat meters support for measurement with pulses, change in ResultsDB.MeterTestRslt, ver. 2.10.352

This commit is contained in:
Milan Hanajik
2016-10-06 10:11:13 +02:00
parent f51360c23d
commit c497c02ef9
25 changed files with 188 additions and 129 deletions
+10 -1
View File
@@ -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);
}
+2
View File
@@ -76,6 +76,8 @@ namespace Config.Entities
CompoundMain,
CompoundAux,
Compound,
HeatMeterVolume,
HeatMeterEnergy,
}
public enum Medium
+2 -2
View File
@@ -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")]
+16 -11
View File
@@ -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<MeterTestRslt> 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));
}
}
}
+1 -3
View File
@@ -31,9 +31,7 @@ namespace Results.Entities
public virtual IList<WaterMeter> WaterMeters { get; set; }
public virtual IList<TestRslt> 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()
{
+7 -13
View File
@@ -9,23 +9,17 @@ 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; } /// [%]
+2 -2
View File
@@ -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;
+2 -2
View File
@@ -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)
-6
View File
@@ -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);
+2 -2
View File
@@ -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")]
+2 -2
View File
@@ -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)));
+2 -2
View File
@@ -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")]
@@ -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<IComponent> 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)
{
@@ -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()
{
@@ -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)
@@ -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
@@ -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];
///
@@ -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());
@@ -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;
}
}
}
@@ -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;
}
}
}
@@ -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;
}
}
}
@@ -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")]
+9
View File
@@ -2751,6 +2751,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Pulses per kWh.
/// </summary>
internal static string PulsesPerKWh {
get {
return ResourceManager.GetString("PulsesPerKWh", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pulses per liter.
/// </summary>
@@ -1585,4 +1585,7 @@
<data name="Calibration_coefficients" xml:space="preserve">
<value>Calibration coefficients</value>
</data>
<data name="PulsesPerKWh" xml:space="preserve">
<value>Pulses per kWh</value>
</data>
</root>
+1 -1
View File
@@ -927,7 +927,7 @@
<Compile Include="BenchControl\Elde\RegisterReader\RegisterReaderCfgCtrl.Designer.cs">
<DependentUpon>RegisterReaderCfgCtrl.cs</DependentUpon>
</Compile>
<Compile Include="BenchControl\Elde\RegisterReader\RegisterReaderFactory.cs" />
<Compile Include="BenchControl\Elde\RegisterReader\Factory.cs" />
<Compile Include="BenchControl\Elde\RegulValve\RegulValveCfgCtrl.cs">
<SubType>UserControl</SubType>
</Compile>