Added to IWaterMeter and Results.Entities.WaterMeterData: TempClass, MAP, Certificate, DN, L, Q4, Text1..5, etc, ver.2.6.277

This commit is contained in:
Milan Hanajik
2016-05-02 14:53:45 +02:00
parent 5239ed6d15
commit 6a4dff5cbc
15 changed files with 755 additions and 149 deletions
+57 -2
View File
@@ -51,6 +51,61 @@ namespace Config.Entities
HotWater,
}
public enum TemperatureClass
{
Not_specified,
T30,
T50,
T70,
T90,
T130,
T180,
Y30_70,
T30_90,
T30_130,
T30_180,
Count
}
public enum Mounting
{
Not_specified,
H, /// horizontal
V, /// vertical
Count
}
public enum FlowProfileSensitivityClass
{
Not_specified,
U0, /// ?
D0, /// ?
Count
}
public enum PressureLossClass
{
Not_specified,
dp63, /// 0.063 MPa = 0.63 bar
dp40, /// 0.040 MPa = 0.40 bar
dp25, /// 0.025 MPa = 0.25 bar
dp16, /// 0.016 MPa = 0.16 bar
dp10, /// 0.010 MPa = 0.10 bar
Count
}
/// <summary> Maximum Admissible Pressure </summary>
public enum MaxAdmissiblePressure
{
Not_specified,
MAP6,
MAP10,
MAP16,
MAP25,
MAP40,
Count
}
/// <summary> Transition step is finished when this condition is fulfilled </summary>
public enum StepCondition
{
@@ -59,7 +114,7 @@ namespace Config.Entities
Scale2Empty,
Scale3Empty,
AllScalesEmpty,
Count,
Count
}
public enum Publish : sbyte
@@ -68,7 +123,7 @@ namespace Config.Entities
Always = 1,
OnScreen = 2,
Internal = 3,
Count,
Count
}
public enum TestRedType
+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.6.276.0")]
[assembly: AssemblyFileVersion("2.6.276.0")]
[assembly: AssemblyVersion("2.6.277.0")]
[assembly: AssemblyFileVersion("2.6.277.0")]
+56 -11
View File
@@ -10,15 +10,38 @@ namespace Results.Entities
public class WaterMeterData
{
public virtual int Id { get; protected set; }
public virtual string ProductName { get; set; }
public virtual string Producer { get; set; }
public virtual string MetrologicalClass { get; set; }
public virtual string ApprovalInfo { get; set; }
public virtual double Q4_Qmax { get; set; } /// [m3/h]
public virtual double Q3_Qn { get; set; } /// [m3/h]
public virtual double Q2_Qt { get; set; } /// [m3/h]
public virtual double Q1_Qmin { get; set; } /// [m3/h]
public virtual bool Compound { get; set; }
public virtual double DN { get; set; } /// [mm]
public virtual double L { get; set; } /// [mm]
public virtual Config.Entities.Mounting Mounting { get; set; } /// H / V
public virtual double Q4_Qmax { get; set; } /// [m3/h]
public virtual double Q3_Qn { get; set; } /// [m3/h]
public virtual double Q2_Qt { get; set; } /// [m3/h]
public virtual double Q1_Qmin { get; set; } /// [m3/h]
public virtual string MetrologicalClass { get; set; }
public virtual Config.Entities.TemperatureClass TemperatureClass { get; set; }
public virtual Config.Entities.PressureLossClass PressureLossClass { get; set; }
public virtual Config.Entities.MaxAdmissiblePressure MaxAdmissiblePressure { get; set; }
public virtual Config.Entities.FlowProfileSensitivityClass FlowProfileSensitivityClass { get; set; }
public virtual string ApprovalInfo { get; set; }
public virtual string Certificate { get; set; }
public virtual double PulsesPerLtr { get; set; }
public virtual string Text1 { get; set; }
public virtual string Text2 { get; set; }
public virtual string Text3 { get; set; }
public virtual string Text4 { get; set; }
public virtual string Text5 { get; set; }
public virtual bool Compound { get; set; }
#if IPERLST || IPERLST_SPECIAL
public virtual int WMTypeId { get; set; }
public virtual int WMTypeRev { get; set; }
@@ -38,13 +61,35 @@ namespace Results.Entities
{
if (!ProductName.Equals(wmd.ProductName)) return false;
if (!Producer.Equals(wmd.Producer)) return false;
if (!MetrologicalClass.Equals(wmd.MetrologicalClass)) return false;
if (!ApprovalInfo.Equals(wmd.ApprovalInfo)) return false;
if (Q4_Qmax != wmd.Q4_Qmax) return false;
if (DN != wmd.DN) return false;
if (L != wmd.L) return false;
if (Mounting != wmd.Mounting) return false;
if (Q4_Qmax != wmd.Q4_Qmax) return false;
if (Q3_Qn != wmd.Q3_Qn) return false;
if (Q2_Qt != wmd.Q2_Qt) return false;
if (Q1_Qmin != wmd.Q1_Qmin) return false;
if (Compound != wmd.Compound) return false;
if (!MetrologicalClass.Equals(wmd.MetrologicalClass)) return false;
if (!TemperatureClass.Equals(wmd.TemperatureClass)) return false;
if (!PressureLossClass.Equals(wmd.PressureLossClass)) return false;
if (!MaxAdmissiblePressure.Equals(wmd.MaxAdmissiblePressure)) return false;
if (!FlowProfileSensitivityClass.Equals(wmd.FlowProfileSensitivityClass)) return false;
if (!ApprovalInfo.Equals(wmd.ApprovalInfo)) return false;
if (Certificate != wmd.Certificate) return false;
if (PulsesPerLtr != wmd.PulsesPerLtr) return false;
if (Text1 != wmd.Text1) return false;
if (Text2 != wmd.Text2) return false;
if (Text3 != wmd.Text3) return false;
if (Text4 != wmd.Text4) return false;
if (Text5 != wmd.Text5) return false;
if (Compound != wmd.Compound) return false;
#if IPERLST || IPERLST_SPECIAL
if (WMTypeId != wmd.WMTypeId) return false;
if (WMTypeRev != wmd.WMTypeRev) return false;
+26 -4
View File
@@ -13,13 +13,35 @@ namespace Results.Mappings
Id(x => x.Id);
Map(x => x.ProductName);
Map(x => x.Producer);
Map(x => x.MetrologicalClass);
Map(x => x.ApprovalInfo);
Map(x => x.Q4_Qmax);
Map(x => x.DN);
Map(x => x.L);
Map(x => x.Mounting);
Map(x => x.Q4_Qmax);
Map(x => x.Q3_Qn);
Map(x => x.Q2_Qt);
Map(x => x.Q1_Qmin);
Map(x => x.Compound);
Map(x => x.MetrologicalClass);
Map(x => x.TemperatureClass);
Map(x => x.PressureLossClass);
Map(x => x.MaxAdmissiblePressure);
Map(x => x.FlowProfileSensitivityClass);
Map(x => x.ApprovalInfo);
Map(x => x.Certificate);
Map(x => x.PulsesPerLtr);
Map(x => x.Text1);
Map(x => x.Text2);
Map(x => x.Text3);
Map(x => x.Text4);
Map(x => x.Text5);
Map(x => x.Compound);
#if IPERLST || IPERLST_SPECIAL
Map(x => x.WMTypeId);
Map(x => x.WMTypeRev);
+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.6.276.0")]
[assembly: AssemblyFileVersion("2.6.276.0")]
[assembly: AssemblyVersion("2.6.277.0")]
[assembly: AssemblyFileVersion("2.6.277.0")]
+3 -1
View File
@@ -141,7 +141,9 @@ namespace Results
AllItems.Add(new WMeterRsltItemSpec(34, "Producer", (w, t, u, f, p) => w.WaterMeterData.Producer));
AllItems.Add(new WMeterRsltItemSpec(35, "Metrological class", (w, t, u, f, p) => w.WaterMeterData.MetrologicalClass));
AllItems.Add(new WMeterRsltItemSpec(36, "Approval info", (w, t, u, f, p) => w.WaterMeterData.ApprovalInfo));
AllItems.Add(new WMeterRsltItemSpec(37, "Q4_Qmax", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q4_Qmax).ToString()
AllItems.Add(new WMeterRsltItemSpec(36, "Certificate", (w, t, u, f, p) => w.WaterMeterData.Certificate));
AllItems.Add(new WMeterRsltItemSpec(35, "Temperature class", (w, t, u, f, p) => w.WaterMeterData.MetrologicalClass));
AllItems.Add(new WMeterRsltItemSpec(37, "Q4_Qmax", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q4_Qmax).ToString()
: Config.Units.ConvertTo(u, w.WaterMeterData.Q4_Qmax).ToString(p)));
AllItems.Add(new WMeterRsltItemSpec(38, "Q3_Qn", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q3_Qn).ToString()
: Config.Units.ConvertTo(u, w.WaterMeterData.Q3_Qn).ToString(p)));
@@ -1,7 +1,8 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using TBF.BenchControl.Generic;
using Config.Entities;
namespace TBF.BenchControl.GenericDevices
{
@@ -9,14 +10,37 @@ namespace TBF.BenchControl.GenericDevices
{
void ClearData();
string Producer { get; }
float Q3_Qn { get; }
float Q2_Qt { get; }
float Q1_Qmin { get; }
string ProductName { get; }
string Producer { get; }
float DN { get; } /// pipe diameter [mm]
float L { get; } /// building length [mm]
Mounting Mounting { get; } /// mounting H / V
float Q4_Qmax { get; } /// [m3/h]
float Q3_Qn { get; } /// [m3/h]
float Q2_Qt { get; } /// [m3/h]
float Q1_Qmin { get; } /// [m3/h]
string MetrologicalClass { get; } /// R<Q3/Q1>
TemperatureClass TemperatureClass { get; } /// T30, T50, T70, ...
PressureLossClass PressureLossClass { get; } /// dp63, dp40, dp25, dp16, dp10
MaxAdmissiblePressure MaxAdmissiblePressure { get; } /// MAP10, MAP16, MAP25, MAP40
FlowProfileSensitivityClass FlowProfileSensitivityClass { get; } /// U0/D0
string ApprovalInfo { get; }
string MetrologicalClass { get; }
string SerialNr { get; set; }
string Certificate { get; }
double PulsesPerLtr { get; }
string Text1 { get; }
string Text2 { get; }
string Text3 { get; }
string Text4 { get; }
string Text5 { get; }
string SerialNr { get; set; }
string EndState { get; set; }
bool Disabled { get; set; } /// Set to true to hide this watermeter results
bool Disabled { get; set; } /// Set to true to hide this watermeter results
}
}
@@ -261,11 +261,33 @@ namespace TBF.BenchControl.Sequences
{
ProductName = StateMachine.Procedure.Name,
Producer = WaterMeters[i].Producer,
MetrologicalClass = WaterMeters[i].MetrologicalClass,
ApprovalInfo = WaterMeters[i].ApprovalInfo,
L = WaterMeters[i].L,
DN = WaterMeters[i].DN,
Mounting = WaterMeters[i].Mounting,
Q4_Qmax = WaterMeters[i].Q4_Qmax,
Q3_Qn = WaterMeters[i].Q3_Qn,
Q2_Qt = WaterMeters[i].Q2_Qt,
Q1_Qmin = WaterMeters[i].Q1_Qmin,
MetrologicalClass = WaterMeters[i].MetrologicalClass,
TemperatureClass = WaterMeters[i].TemperatureClass,
PressureLossClass = WaterMeters[i].PressureLossClass,
MaxAdmissiblePressure = WaterMeters[i].MaxAdmissiblePressure,
FlowProfileSensitivityClass = WaterMeters[i].FlowProfileSensitivityClass,
ApprovalInfo = WaterMeters[i].ApprovalInfo,
Certificate = WaterMeters[i].Certificate,
PulsesPerLtr = WaterMeters[i].PulsesPerLtr,
Text1 = WaterMeters[i].Text1,
Text2 = WaterMeters[i].Text2,
Text3 = WaterMeters[i].Text3,
Text4 = WaterMeters[i].Text4,
Text5 = WaterMeters[i].Text5,
Compound = compound,
};
#if IPERLST || IPERLST_SPECIAL
@@ -13,38 +13,92 @@ namespace TBF.BenchControl.WaterMeters.WaterMeter
{
public class ProcParams : ProcedureParamsBase, IParamsProvider, IProcedureParams
{
public string ProductName; /// Znak fabryczny (PL)
public string Producer; /// Producent (PL), Hersteller (D)
public float Qn; /// [m3/h]
public float Qt; /// [m3/h]
public float Qmin; /// [m3/h]
public string MetrologicalClass;
public string ApprovalInfo; /// WE (PL)
public Medium WaterTemp; /// Woda: zimna / tepla (PL)
public string ProductName; /// Znak fabryczny (PL)
public string Producer; /// Producent (PL), Hersteller (D)
public float DN;
public float L; /// stavebná dĺžka [mm]
public Mounting Mounting;
public float Qmax; /// [m3/h]
public float Qn; /// [m3/h]
public float Qt; /// [m3/h]
public float Qmin; /// [m3/h]
public string MetrologicalClass; /// Metr. Klasse
public TemperatureClass TemperatureClass;
public PressureLossClass PressureLossClass;
public MaxAdmissiblePressure MaxAdmissiblePressure;
public FlowProfileSensitivityClass FlowProfileSensitivityClass;
public string ApprovalInfo; /// Zulassungszeichen, WE (PL)
public string Certificate;
public float PulsesPerLtr; /// Target low limit of the flow increase or decrease
public string Text1;
public string Text2;
public string Text3;
public string Text4;
public string Text5;
public Medium WaterTemp; /// Woda: zimna / tepla (PL)
public override void InitializeAll()
{
ProductName = "";
Producer = "";
Qn = 2.5f;
Qt = 1.0f;
Qmin = 0.01f;
MetrologicalClass = "A";
ApprovalInfo = "";
WaterTemp = Medium.ColdWater;
ProductName = string.Empty;
Producer = string.Empty;
DN = 0;
L = 0;
Mounting = Mounting.Not_specified;
Qmax = 4.0f;
Qn = 2.5f;
Qt = 0.005f;
Qmin = 0.003125f;
MetrologicalClass = "A";
TemperatureClass = TemperatureClass.Not_specified;
PressureLossClass = PressureLossClass.Not_specified;
MaxAdmissiblePressure = MaxAdmissiblePressure.Not_specified;
FlowProfileSensitivityClass = FlowProfileSensitivityClass.Not_specified;
ApprovalInfo = string.Empty;
Certificate = string.Empty;
PulsesPerLtr = 1.0f;
Text1 = string.Empty;
Text2 = string.Empty;
Text3 = string.Empty;
Text4 = string.Empty;
Text5 = string.Empty;
WaterTemp = Medium.ColdWater;
}
string[] paramNames = new string[]
{
Strings.Product_name, /// "Znak fabryczny"
Strings.Product_name,
Strings.Producer,
"DN",
Strings.L,
Strings.Mounting,
Strings.Qmax,
Strings.Qn,
Strings.Qt,
Strings.Qmin,
Strings.Metrological_class,
Strings.Temperature_class,
Strings.Pressure_loss_class,
Strings.Maximum_admissible_pressure,
Strings.Flow_profile_sensitivity_class,
Strings.Approval_info,
Strings.Water, /// "Woda"
Strings.Certificate,
Strings.PulsesPerLtr,
"Text1",
"Text2",
"Text3",
"Text4",
"Text5",
Strings.Water, /// "Woda"
};
public override string ParamName(int i) { return paramNames[i]; }
public override int ParamsCount() { return paramNames.Length; }
@@ -53,14 +107,30 @@ namespace TBF.BenchControl.WaterMeters.WaterMeter
{
switch (i)
{
case 0: return ProductName;
case 1: return Producer;
case 2: return Qn.ToString();
case 3: return Qt.ToString();
case 4: return Qmin.ToString();
case 5: return MetrologicalClass;
case 6: return ApprovalInfo;
case 7: return (WaterTemp == Medium.HotWater) ? Strings.hot : Strings.cold; /// "tepla" : "zimna";
case 0: return ProductName;
case 1: return Producer;
case 2: return DN.ToString();
case 3: return L.ToString();
case 4: return Mounting.ToString();
case 5: return Qmax.ToString();
case 6: return Qn.ToString();
case 7: return Qt.ToString();
case 8: return Qmin.ToString();
case 9: return MetrologicalClass;
case 10: return TemperatureClass.ToString();
case 11: return PressureLossClass.ToString();
case 12: return MaxAdmissiblePressure.ToString();
case 13: return FlowProfileSensitivityClass.ToString();
case 14: return ApprovalInfo;
case 15: return Certificate;
case 16: return PulsesPerLtr.ToString();
case 17: return Text1;
case 18: return Text2;
case 19: return Text3;
case 20: return Text4;
case 21: return Text5;
case 22: return (WaterTemp == Medium.HotWater) ? Strings.hot : Strings.cold; /// "tepla" : "zimna";
default: return string.Empty;
}
}
@@ -71,12 +141,53 @@ namespace TBF.BenchControl.WaterMeters.WaterMeter
{
case 0: ProductName = strValue; return;
case 1: Producer = strValue; return;
case 2: Qn = Utils.ParseUFloat(strValue); return;
case 3: Qt = Utils.ParseUFloat(strValue); return;
case 4: Qmin = Utils.ParseUFloat(strValue); return;
case 5: MetrologicalClass = strValue; return;
case 6: ApprovalInfo = strValue; return;
case 7: WaterTemp = strValue.Equals(Strings.hot) ? Medium.HotWater : Medium.ColdWater; return; /// "tepla"
case 2: DN = Utils.ParseUFloat(strValue); return;
case 3: L = Utils.ParseUFloat(strValue); return;
case 4:
for (Mounting m = 0; m < Mounting.Count; m++)
{
if (m.ToString().Equals(strValue)) { Mounting = m; return; }
}
break;
case 5: Qmax = Utils.ParseUFloat(strValue); return;
case 6: Qn = Utils.ParseUFloat(strValue); return;
case 7: Qt = Utils.ParseUFloat(strValue); return;
case 8: Qmin = Utils.ParseUFloat(strValue); return;
case 9: MetrologicalClass = strValue; return;
case 10:
for (TemperatureClass tc = 0; tc < TemperatureClass.Count; tc++)
{
if (tc.ToString().Equals(strValue)) { TemperatureClass = tc; return; }
}
break;
case 11:
for (PressureLossClass dp = 0; dp < PressureLossClass.Count; dp++)
{
if (dp.ToString().Equals(strValue)) { PressureLossClass = dp; return; }
}
break;
case 12:
for (MaxAdmissiblePressure map = 0; map < MaxAdmissiblePressure.Count; map++)
{
if (map.ToString().Equals(strValue)) { MaxAdmissiblePressure = map; return; }
}
break;
case 13:
for (FlowProfileSensitivityClass fps = 0; fps < FlowProfileSensitivityClass.Count; fps++)
{
if (fps.ToString().Equals(strValue)) { FlowProfileSensitivityClass = fps; return; }
}
break;
case 14: ApprovalInfo = strValue; return;
case 15: Certificate = strValue; return;
case 16: PulsesPerLtr = Utils.ParseUFloat(strValue); return;
case 17: Text1 = strValue; return;
case 18: Text2 = strValue; return;
case 19: Text3 = strValue; return;
case 20: Text4 = strValue; return;
case 21: Text5 = strValue; return;
case 22: WaterTemp = strValue.Equals(Strings.hot) ? Medium.HotWater : Medium.ColdWater; return; /// "tepla"
default: return;
}
}
@@ -88,17 +199,42 @@ namespace TBF.BenchControl.WaterMeters.WaterMeter
float dummy;
switch (i)
{
case 0:
case 1:
case 5:
case 6:
return true;
case 2:
case 3:
case 4:
if (Utils.TryParseUFloat(strValue, out dummy)) return true;
break;
case 7:
case 0: /// ProductName
case 1: /// Producer
case 9: /// MetrologicalClass
case 14: /// ApprovalInfo
case 15: /// Certificate
case 17: /// Text1
case 18: /// Text2
case 19: /// Text3
case 20: /// Text4
case 21: /// Text5
return true;
case 2: /// DN
case 3: /// L
case 5: /// Qmax
case 6: /// Qn
case 7: /// Qt
case 8: /// Qmin
case 16: /// PulsesPerLtr
if (Utils.TryParseUFloat(strValue, out dummy)) return true;
break;
case 4:
for (Mounting tc = 0; tc < Mounting.Count; tc++) if (tc.ToString().Equals(strValue)) return true;
break;
case 10:
for (TemperatureClass tc = 0; tc < TemperatureClass.Count; tc++) if (tc.ToString().Equals(strValue)) return true;
break;
case 11:
for (PressureLossClass tc = 0; tc < PressureLossClass.Count; tc++) if (tc.ToString().Equals(strValue)) return true;
break;
case 12:
for (MaxAdmissiblePressure map = 0; map < MaxAdmissiblePressure.Count; map++) if (map.ToString().Equals(strValue)) return true;
break;
case 13:
for (FlowProfileSensitivityClass tc = 0; tc < FlowProfileSensitivityClass.Count; tc++) if (tc.ToString().Equals(strValue)) return true;
break;
case 22:
if (strValue.Equals(Strings.cold) || strValue.Equals(Strings.hot)) return true; /// "zimna", "tepla"
break;
default:
@@ -112,14 +248,30 @@ namespace TBF.BenchControl.WaterMeters.WaterMeter
void CopyContentTo(ProcParams prms)
{
prms.ProductName = this.ProductName;
prms.Producer = this.Producer;
prms.Qn = this.Qn;
prms.ProductName = this.ProductName;
prms.Producer = this.Producer;
prms.DN = this.DN;
prms.L = this.L;
prms.Mounting = this.Mounting;
prms.Qmax = this.Qmax;
prms.Qn = this.Qn;
prms.Qt = this.Qt;
prms.Qmin = this.Qmin;
prms.ApprovalInfo = this.ApprovalInfo;
prms.MetrologicalClass = this.MetrologicalClass;
prms.WaterTemp = this.WaterTemp;
prms.MetrologicalClass = this.MetrologicalClass;
prms.TemperatureClass = this.TemperatureClass;
prms.PressureLossClass = this.PressureLossClass;
prms.MaxAdmissiblePressure = this.MaxAdmissiblePressure;
prms.FlowProfileSensitivityClass = this.FlowProfileSensitivityClass;
prms.ApprovalInfo = this.ApprovalInfo;
prms.Certificate = this.Certificate;
prms.PulsesPerLtr = this.PulsesPerLtr;
prms.Text1 = this.Text1;
prms.Text2 = this.Text2;
prms.Text3 = this.Text3;
prms.Text4 = this.Text4;
prms.Text5 = this.Text5;
prms.WaterTemp = this.WaterTemp;
}
public IParamsProvider Clone()
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using log4net;
using TBF.BenchControl;
using Config.Entities;
namespace TBF.BenchControl.WaterMeters.WaterMeter
{
@@ -18,26 +19,42 @@ namespace TBF.BenchControl.WaterMeters.WaterMeter
readonly WaterMeterCfg waterMeterCfg;
/// <summary>WaterMeter producer</summary>
public string ProductName { get { return waterMeterCfg.ProcParams.ProductName; } }
/// <summary>WaterMeter type (product name) and producer</summary>
public string ProductName { get { return waterMeterCfg.ProcParams.ProductName; } }
public string Producer { get { return waterMeterCfg.ProcParams.Producer; } }
/// <summary>WaterMeter producer</summary>
public string Producer { get { return waterMeterCfg.ProcParams.Producer; } }
public double PulsesPerLtr { get { return (double)waterMeterCfg.ProcParams.PulsesPerLtr; } }
/// <summary>Nominal water flow in [m3/h]</summary>
/// <summary>Pipe diameter [mm]</summary>
public float DN { get { return waterMeterCfg.ProcParams.DN; } }
/// <summary>Build lenght [mm]</summary>
public float L { get { return waterMeterCfg.ProcParams.L; } }
public Mounting Mounting { get { return waterMeterCfg.ProcParams.Mounting; } }
/// <summary>Nominal water flow in [m3/h]</summary>
public float Q4_Qmax { get { return waterMeterCfg.ProcParams.Qmax; } }
public float Q3_Qn { get { return waterMeterCfg. ProcParams.Qn; } }
/// <summary>Nominal water flow in [m3/h]</summary>
public float Q2_Qt { get { return waterMeterCfg.ProcParams.Qt; } }
/// <summary>Nominal water flow in [m3/h]</summary>
public float Q1_Qmin { get { return waterMeterCfg.ProcParams.Qmin; } }
/// <summary>Metrological class</summary>
/// <summary>Metrological class, etc</summary>
public string MetrologicalClass { get { return waterMeterCfg.ProcParams.MetrologicalClass; } }
public TemperatureClass TemperatureClass { get { return waterMeterCfg.ProcParams.TemperatureClass; } }
public PressureLossClass PressureLossClass { get { return waterMeterCfg.ProcParams.PressureLossClass; } }
public MaxAdmissiblePressure MaxAdmissiblePressure { get { return waterMeterCfg.ProcParams.MaxAdmissiblePressure; } }
public FlowProfileSensitivityClass FlowProfileSensitivityClass { get { return waterMeterCfg.ProcParams.FlowProfileSensitivityClass; } }
/// <summary>WaterMeter approval information or signature</summary>
public string ApprovalInfo { get { return waterMeterCfg.ProcParams.ApprovalInfo; } }
public string Certificate { get { return waterMeterCfg.ProcParams.Certificate; } }
public string Text1 { get { return waterMeterCfg.ProcParams.Text1; } }
public string Text2 { get { return waterMeterCfg.ProcParams.Text2; } }
public string Text3 { get { return waterMeterCfg.ProcParams.Text3; } }
public string Text4 { get { return waterMeterCfg.ProcParams.Text4; } }
public string Text5 { get { return waterMeterCfg.ProcParams.Text5; } }
/// <summary>Water: cold / hot</summary>
public Config.Entities.Medium WaterTemp { get { return waterMeterCfg.ProcParams.WaterTemp; } }
@@ -14,38 +14,92 @@ namespace TBF.BenchControl.WaterMeters.iPerl
{
public class ProcParams : ProcedureParamsBase, IParamsProvider, IProcedureParams
{
public float PulsesPerLtr; /// Target low limit of the flow increase or decrease
public string Producer; /// Hersteller
public float Qn; /// [m3/h]
public float Q2; /// [m3/h]
public float Q1; /// [m3/h]
public string ApprovalInfo; /// Zulassungszeichen
public string MetrologicalClass; /// Metr. Klasse
public int WMType_ID; /// Required for Oracle DB: ID_WZTyp in table VT_PRUEFPUNKT_SOLL_SD
public int WMType_Rev; /// Required for Oracle DB: Rev_WZTyp in table VT_PRUEFPUNKT_SOLL_SD
public string ProductName; /// Znak fabryczny (PL)
public string Producer; /// Producent (PL), Hersteller (D)
public float DN;
public float L; /// stavebná dĺžka [mm]
public Mounting Mounting;
public float Q4; /// [m3/h]
public float Qn; /// [m3/h]
public float Q2; /// [m3/h]
public float Q1; /// [m3/h]
public string MetrologicalClass; /// Metr. Klasse
public TemperatureClass TemperatureClass;
public PressureLossClass PressureLossClass;
public MaxAdmissiblePressure MaxAdmissiblePressure;
public FlowProfileSensitivityClass FlowProfileSensitivityClass;
public string ApprovalInfo; /// Zulassungszeichen, WE (PL)
public string Certificate;
public float PulsesPerLtr; /// Target low limit of the flow increase or decrease
public string Text1;
public string Text2;
public string Text3;
public string Text4;
public string Text5;
public int WMType_ID; /// Required for Oracle DB: ID_WZTyp in table VT_PRUEFPUNKT_SOLL_SD
public int WMType_Rev; /// Required for Oracle DB: Rev_WZTyp in table VT_PRUEFPUNKT_SOLL_SD
public override void InitializeAll()
{
PulsesPerLtr = 1.0f;
Producer = "";
Qn = 2.5f;
ProductName = string.Empty;
Producer = string.Empty;
DN = 0;
L = 0;
Mounting = Mounting.Not_specified;
Q4 = 4.0f;
Qn = 2.5f;
Q2 = 0.005f;
Q1 = 0.003125f;
ApprovalInfo = "";
MetrologicalClass = "A";
MetrologicalClass = "R800";
TemperatureClass = TemperatureClass.Not_specified;
PressureLossClass = PressureLossClass.Not_specified;
MaxAdmissiblePressure = MaxAdmissiblePressure.Not_specified;
FlowProfileSensitivityClass = FlowProfileSensitivityClass.Not_specified;
ApprovalInfo = string.Empty;
Certificate = string.Empty;
PulsesPerLtr = 1.0f;
Text1 = string.Empty;
Text2 = string.Empty;
Text3 = string.Empty;
Text4 = string.Empty;
Text5 = string.Empty;
WMType_ID = 2; /// Value for iPerl DN15
WMType_Rev = 1; /// Value for iPerl DN15
}
string[] paramNames = new string[]
{
Strings.PulsesPerLtr,
Strings.Product_name,
Strings.Producer,
"DN",
Strings.L,
Strings.Mounting,
"Q4",
"Q3",
"Q2",
"Q1",
Strings.Approval_info,
Strings.Metrological_class,
Strings.Temperature_class,
Strings.Pressure_loss_class,
Strings.Maximum_admissible_pressure,
Strings.Flow_profile_sensitivity_class,
Strings.Approval_info,
Strings.Certificate,
Strings.PulsesPerLtr,
"Text1",
"Text2",
"Text3",
"Text4",
"Text5",
"WMType ID",
"WMType Rev.",
};
@@ -56,15 +110,31 @@ namespace TBF.BenchControl.WaterMeters.iPerl
{
switch (i)
{
case 0: return PulsesPerLtr.ToString();
case 1: return Producer;
case 2: return Qn.ToString();
case 3: return Q2.ToString();
case 4: return Q1.ToString();
case 5: return ApprovalInfo;
case 6: return MetrologicalClass;
case 7: return WMType_ID.ToString();
case 8: return WMType_Rev.ToString();
case 0: return ProductName;
case 1: return Producer;
case 2: return DN.ToString();
case 3: return L.ToString();
case 4: return Mounting.ToString();
case 5: return Q4.ToString();
case 6: return Qn.ToString();
case 7: return Q2.ToString();
case 8: return Q1.ToString();
case 9: return MetrologicalClass;
case 10: return TemperatureClass.ToString();
case 11: return PressureLossClass.ToString();
case 12: return MaxAdmissiblePressure.ToString();
case 13: return FlowProfileSensitivityClass.ToString();
case 14: return ApprovalInfo;
case 15: return Certificate;
case 16: return PulsesPerLtr.ToString();
case 17: return Text1;
case 18: return Text2;
case 19: return Text3;
case 20: return Text4;
case 21: return Text5;
case 22: return WMType_ID.ToString();
case 23: return WMType_Rev.ToString();
default: return string.Empty;
}
}
@@ -73,15 +143,56 @@ namespace TBF.BenchControl.WaterMeters.iPerl
{
switch (i)
{
case 0: PulsesPerLtr = Utils.ParseUFloat(strValue); return;
case 1: Producer = strValue; return;
case 2: Qn = Utils.ParseUFloat(strValue); return;
case 3: Q2 = Utils.ParseUFloat(strValue); return;
case 4: Q1 = Utils.ParseUFloat(strValue); return;
case 5: ApprovalInfo = strValue; return;
case 6: MetrologicalClass = strValue; return;
case 7: WMType_ID = int.Parse(strValue); return;
case 8: WMType_Rev = int.Parse(strValue); return;
case 0: ProductName = strValue; return;
case 1: Producer = strValue; return;
case 2: DN = Utils.ParseUFloat(strValue); return;
case 3: L = Utils.ParseUFloat(strValue); return;
case 4:
for (Mounting m = 0; m < Mounting.Count; m++)
{
if (m.ToString().Equals(strValue)) { Mounting = m; return; }
}
break;
case 5: Q4 = Utils.ParseUFloat(strValue); return;
case 6: Qn = Utils.ParseUFloat(strValue); return;
case 7: Q2 = Utils.ParseUFloat(strValue); return;
case 8: Q1 = Utils.ParseUFloat(strValue); return;
case 9: MetrologicalClass = strValue; return;
case 10:
for (TemperatureClass tc = 0; tc < TemperatureClass.Count; tc++)
{
if (tc.ToString().Equals(strValue)) { TemperatureClass = tc; return; }
}
break;
case 11:
for (PressureLossClass dp = 0; dp < PressureLossClass.Count; dp++)
{
if (dp.ToString().Equals(strValue)) { PressureLossClass = dp; return; }
}
break;
case 12:
for (MaxAdmissiblePressure map = 0; map < MaxAdmissiblePressure.Count; map++)
{
if (map.ToString().Equals(strValue)) { MaxAdmissiblePressure = map; return; }
}
break;
case 13:
for (FlowProfileSensitivityClass fps = 0; fps < FlowProfileSensitivityClass.Count; fps++)
{
if (fps.ToString().Equals(strValue)) { FlowProfileSensitivityClass = fps; return; }
}
break;
case 14: ApprovalInfo = strValue; return;
case 15: Certificate = strValue; return;
case 16: PulsesPerLtr = Utils.ParseUFloat(strValue); return;
case 17: Text1 = strValue; return;
case 18: Text2 = strValue; return;
case 19: Text3 = strValue; return;
case 20: Text4 = strValue; return;
case 21: Text5 = strValue; return;
case 22: WMType_ID = int.Parse(strValue); return;
case 23: WMType_Rev = int.Parse(strValue); return;
default: return;
}
}
@@ -94,20 +205,43 @@ namespace TBF.BenchControl.WaterMeters.iPerl
int iDummy;
switch (i)
{
case 0:
if (Utils.TryParseUFloat(strValue, out dummy)) return true;
break;
case 2:
case 3:
case 4:
case 0: /// ProductName
case 1: /// Producer
case 9: /// MetrologicalClass
case 14: /// ApprovalInfo
case 15: /// Certificate
case 17: /// Text1
case 18: /// Text2
case 19: /// Text3
case 20: /// Text4
case 21: /// Text5
return true;
case 2: /// DN
case 3: /// L
case 5: /// Q4
case 6: /// Q3
case 7: /// Q2
case 8: /// Q1
case 16: /// PulsesPerLtr
if (Utils.TryParseUFloat(strValue, out dummy)) return true;
break;
case 1:
case 5:
case 6:
return true;
case 7:
case 8:
case 4:
for (Mounting tc = 0; tc < Mounting.Count; tc++) if (tc.ToString().Equals(strValue)) return true;
break;
case 10:
for (TemperatureClass tc = 0; tc < TemperatureClass.Count; tc++) if (tc.ToString().Equals(strValue)) return true;
break;
case 11:
for (PressureLossClass tc = 0; tc < PressureLossClass.Count; tc++) if (tc.ToString().Equals(strValue)) return true;
break;
case 12:
for (MaxAdmissiblePressure map = 0; map < MaxAdmissiblePressure.Count; map++) if (map.ToString().Equals(strValue)) return true;
break;
case 13:
for (FlowProfileSensitivityClass tc = 0; tc < FlowProfileSensitivityClass.Count; tc++) if (tc.ToString().Equals(strValue)) return true;
break;
case 22: /// WMType_ID
case 23: /// WMType_Rev
if (int.TryParse(strValue, out iDummy)) return true;
break;
default:
@@ -121,13 +255,29 @@ namespace TBF.BenchControl.WaterMeters.iPerl
void CopyContentTo(ProcParams prms)
{
prms.PulsesPerLtr = this.PulsesPerLtr;
prms.Producer = this.Producer;
prms.Qn = this.Qn;
prms.ProductName = this.ProductName;
prms.Producer = this.Producer;
prms.DN = this.DN;
prms.L = this.L;
prms.Mounting = this.Mounting;
prms.Q4 = this.Q4;
prms.Qn = this.Qn;
prms.Q2 = this.Q2;
prms.Q1 = this.Q1;
prms.MetrologicalClass = this.MetrologicalClass;
prms.TemperatureClass = this.TemperatureClass;
prms.PressureLossClass = this.PressureLossClass;
prms.MaxAdmissiblePressure = this.MaxAdmissiblePressure;
prms.FlowProfileSensitivityClass = this.FlowProfileSensitivityClass;
prms.ApprovalInfo = this.ApprovalInfo;
prms.MetrologicalClass = this.MetrologicalClass;
prms.Certificate = this.Certificate;
prms.PulsesPerLtr = this.PulsesPerLtr;
prms.Text1 = this.Text1;
prms.Text2 = this.Text2;
prms.Text3 = this.Text3;
prms.Text4 = this.Text4;
prms.Text5 = this.Text5;
prms.WMType_ID = this.WMType_ID;
prms.WMType_Rev = this.WMType_Rev;
}
@@ -34,19 +34,40 @@ namespace TBF.BenchControl.WaterMeters.iPerl
public double LtrsPerPulse { get { return ltrsPerPulse; } }
readonly double ltrsPerPulse;
/// <summary>WaterMeter producer</summary>
/// <summary>WaterMeter type (product name) and producer</summary>
public string ProductName { get { return iPerlCfg.ProcParams.ProductName; } }
public string Producer { get { return iPerlCfg.ProcParams.Producer; } }
/// <summary>Pipe diameter [mm]</summary>
public float DN { get { return iPerlCfg.ProcParams.DN; } }
/// <summary>Build lenght [mm]</summary>
public float L { get { return iPerlCfg.ProcParams.L; } }
public Mounting Mounting { get { return iPerlCfg.ProcParams.Mounting; } }
/// <summary>Nominal water flow in [m3/h]</summary>
public float Q3_Qn { get { return iPerlCfg.ProcParams.Qn; } }
public float Q4_Qmax { get { return iPerlCfg.ProcParams.Q4; } }
public float Q3_Qn { get { return iPerlCfg.ProcParams.Qn; } }
public float Q2_Qt { get { return iPerlCfg.ProcParams.Q2; } }
public float Q1_Qmin { get { return iPerlCfg.ProcParams.Q1; } }
/// <summary>WaterMeter approval information or signature</summary>
public string ApprovalInfo { get { return iPerlCfg.ProcParams.ApprovalInfo; } }
/// <summary>Metrological class, etc</summary>
public string MetrologicalClass { get { return iPerlCfg.ProcParams.MetrologicalClass; } }
public TemperatureClass TemperatureClass { get { return iPerlCfg.ProcParams.TemperatureClass; } }
public PressureLossClass PressureLossClass { get { return iPerlCfg.ProcParams.PressureLossClass; } }
public MaxAdmissiblePressure MaxAdmissiblePressure { get { return iPerlCfg.ProcParams.MaxAdmissiblePressure; } }
public FlowProfileSensitivityClass FlowProfileSensitivityClass { get { return iPerlCfg.ProcParams.FlowProfileSensitivityClass; } }
/// <summary>Metrological class</summary>
public string MetrologicalClass { get { return iPerlCfg.ProcParams.MetrologicalClass; } }
/// <summary>WaterMeter approval information or signature</summary>
public string ApprovalInfo { get { return iPerlCfg.ProcParams.ApprovalInfo; } }
public string Certificate { get { return iPerlCfg.ProcParams.Certificate; } }
public string Text1 { get { return iPerlCfg.ProcParams.Text1; } }
public string Text2 { get { return iPerlCfg.ProcParams.Text2; } }
public string Text3 { get { return iPerlCfg.ProcParams.Text3; } }
public string Text4 { get { return iPerlCfg.ProcParams.Text4; } }
public string Text5 { get { return iPerlCfg.ProcParams.Text5; } }
/// <summary>WM Type ID for Oracle DB</summary>
public int WMType_ID { get { return iPerlCfg.ProcParams.WMType_ID; } }
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.6.276.1")]
[assembly: AssemblyFileVersion("2.6.276.1")]
[assembly: AssemblyVersion("2.6.277.1")]
[assembly: AssemblyFileVersion("2.6.277.1")]
+72
View File
@@ -411,6 +411,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Certificate.
/// </summary>
internal static string Certificate {
get {
return ResourceManager.GetString("Certificate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Changes will be lost. Do you want to proceed?.
/// </summary>
@@ -1104,6 +1113,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Flow profile sensitivity class.
/// </summary>
internal static string Flow_profile_sensitivity_class {
get {
return ResourceManager.GetString("Flow_profile_sensitivity_class", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow Selection.
/// </summary>
@@ -1266,6 +1284,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Length.
/// </summary>
internal static string L {
get {
return ResourceManager.GetString("L", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Language.
/// </summary>
@@ -1392,6 +1419,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Maximum admissible pressure.
/// </summary>
internal static string Maximum_admissible_pressure {
get {
return ResourceManager.GetString("Maximum_admissible_pressure", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Measure the mass.
/// </summary>
@@ -1500,6 +1536,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Mounting.
/// </summary>
internal static string Mounting {
get {
return ResourceManager.GetString("Mounting", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Name.
/// </summary>
@@ -1914,6 +1959,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Pressure loss class.
/// </summary>
internal static string Pressure_loss_class {
get {
return ResourceManager.GetString("Pressure_loss_class", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure meter.
/// </summary>
@@ -2211,6 +2265,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Qmax.
/// </summary>
internal static string Qmax {
get {
return ResourceManager.GetString("Qmax", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Qmin.
/// </summary>
@@ -2769,6 +2832,15 @@ namespace TBF.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Temperature class.
/// </summary>
internal static string Temperature_class {
get {
return ResourceManager.GetString("Temperature_class", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Test.
/// </summary>
+24
View File
@@ -1222,4 +1222,28 @@
<data name="Invalid_calib_info_Correct_pls" xml:space="preserve">
<value>Invalid calibration information. Correct it please.</value>
</data>
<data name="Qmax" xml:space="preserve">
<value>Qmax</value>
</data>
<data name="Certificate" xml:space="preserve">
<value>Certificate</value>
</data>
<data name="L" xml:space="preserve">
<value>Length</value>
</data>
<data name="Maximum_admissible_pressure" xml:space="preserve">
<value>Maximum admissible pressure</value>
</data>
<data name="Temperature_class" xml:space="preserve">
<value>Temperature class</value>
</data>
<data name="Flow_profile_sensitivity_class" xml:space="preserve">
<value>Flow profile sensitivity class</value>
</data>
<data name="Mounting" xml:space="preserve">
<value>Mounting</value>
</data>
<data name="Pressure_loss_class" xml:space="preserve">
<value>Pressure loss class</value>
</data>
</root>