tbf/TBF/Rig/WaterMeters/WaterMeter/WaterMeter.cs

106 lines
4.2 KiB
C#

///
/// Copyright (c) 2013-2023 Sensus Slovensko a.s.
///
using log4net;
using Common;
namespace TBF.Rig.WaterMeters.WaterMeter
{
/// <summary>
/// This component = instance of this class is a placeholder for a combined main watermeter
/// </summary>
public class WaterMeter : ComponentBase, GenericDevices.IWaterMeter
{
private static readonly ILog log = LogManager.GetLogger(typeof(WaterMeter));
public override string ToString() { return string.Format("{0}({1})", ClassName, Cfg.ToString(-1)); }
readonly WaterMeterCfg waterMeterCfg;
/// <summary>WaterMeter type (product name) and producer</summary>
public string ProductName { get { return waterMeterCfg.ProcParams.ProductName; } }
public string Producer { get { return waterMeterCfg.ProcParams.Producer; } }
public double PulsesPerLtr { get { return waterMeterCfg.ProcParams.PulsesPerLtr; } }
/// <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 FlowNames Qnames { get { return waterMeterCfg.ProcParams.Qnames; } }
public double Q4_Qmax { get { return waterMeterCfg.ProcParams.Qmax; } }
public double Q3_Qn { get { return waterMeterCfg.ProcParams.Qn; } }
public double Q2_Qt { get { return waterMeterCfg.ProcParams.Qt; } }
public double Q1_Qmin { get { return waterMeterCfg.ProcParams.Qmin; } }
public double ErrLimHiQ { get { return waterMeterCfg.ProcParams.ErrLimHiQ; } }
public double ErrLimLoQ { get { return waterMeterCfg.ProcParams.ErrLimLoQ; } }
/// <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 Medium Medium { get { return waterMeterCfg.ProcParams.WaterTemp; } }
#if IPERL
public ushort OriginalCalibFactor;
public ushort CalibFactor;
public double Q2ErrorWOCorrection;
public bool Q2CorrectionDone;
public double Q2Correction;
public int Q2CorrRFlow;
public int Q2CorrLFlow;
public double Diff2Hz8Hz;
public bool Hz2CorrectionDone;
public int Hz2CorrectionFactor;
public string FWVersion;
#endif
/// Properties set by the Begin and the End form or the iPerl head
public string SerialNr { get; set; }
public string EndState { get; set; }
public string BeginState { get; set; }
public bool Disabled { get; set; }
public WaterMeter() { }
public WaterMeter(Generic.IComponentCfg cfg)
: base(cfg)
{
waterMeterCfg = cfg as WaterMeterCfg;
}
public override void Initialize()
{
ClearData();
log.FatalFormat("{0} initialized: {1}", Name, this);
}
public void ClearData()
{
SerialNr = string.Empty;
EndState = string.Empty;
BeginState = string.Empty;
Disabled = false;
}
}
}