Uni.FlowMetersInParallel in schematic drawing, ver. 3.1.1795

This commit is contained in:
Milan Hanajik
2021-11-04 12:37:37 +01:00
parent a2a3d5940e
commit 339d79595d
5 changed files with 39 additions and 27 deletions
+23 -6
View File
@@ -4,13 +4,14 @@
using System;
using System.Collections.Generic;
using log4net;
using SchematicDrawing;
using TBF.Boxes;
using TBF.Rig.ControlBoard.Uni;
using TBF.Rig.GenericDevices;
namespace TBF.Rig.Uni.FlowMetersInParallel
{
public class FlowMeter : ComponentBase, IFlowMeter
public class FlowMeter : ComponentBase, IFlowMeter, IDrawingItCmpntWithMeasuredVal
{
private static readonly ILog log = LogManager.GetLogger(typeof(FlowMeter));
public override string ToString() { return string.Format("{0}({1})", ClassName, Cfg.ToString(-1)); }
@@ -29,6 +30,10 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
public double NominalFlow { get { return nominalFlow; } }
public double LtrPerPulse { get { return ltrPerPulse; } }
public SchematicDrawing.IDrawingItem DrawingItem { get { return flowMeterCfg as SchematicDrawing.IDrawingItem; } }
public double MsrdValLimLo { get { return flowMeterCfg.MsrdValLimLo; } set { flowMeterCfg.MsrdValLimLo = value; } }
public double MsrdValLimHi { get { return flowMeterCfg.MsrdValLimHi; } set { flowMeterCfg.MsrdValLimHi = value; } }
double[] refFreq; /// 0..sum, 1..I11, 2..I12, 3..I13
int[] refPulses;
@@ -90,8 +95,16 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
}
public bool MsrmntAvailable { get { return true; } }
public double MeasuredVal { get { return ReadFlow(); } }
public bool MsrmntAvailable
{
get { return true; }
}
public double MeasuredVal
{
get { return ReadFlow(); }
}
public string AltString { get { return "Invalid format"; } }
@@ -142,6 +155,8 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
}
if (flowMetersCount == 0) throw new Exception("Missing flowmeters");
MsrdValLimHi = nominalFlow;
ltrPerPulse = nominalFlow / (flowMetersCount * 7200.0); /// Nominal freq. is flowMetersCount * 2000 Hz (2000, 4000 or 6000 Hz)
refFreq = new double[4];
@@ -150,11 +165,13 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
public double ReadFlow()
{
/// TODO
return 0;
return nominalFlow * ReadFrequency() / (flowMetersCount * 7200.0);
}
public double ReadFrequency() { return uniCB.RefFrequency; }
public double ReadFrequency()
{
return uniCB.RefFrequency;
}
/// <summary>
/// Events: FlowDone, Error
@@ -12,7 +12,7 @@ using TBF.Rig.Generic;
namespace TBF.Rig.Uni.FlowMetersInParallel
{
public class FlowMeterCfg : ComponentCfgBase, IChildComponentCfg, IParamsProvider
public class FlowMeterCfg : ComponentCfgBase, IChildComponentCfg, IParamsProvider, IDrawingItemWithMeasuredVal
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(FlowMeterCfg) })[0];
public override XmlSerializer GetSerializer() { return Serializer; }
@@ -32,8 +32,6 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
public string Flowmeter3; /// 2 - ' ' -
public string MsrdFormat { get; set; } /// 3
public Unit MsrdUnit { get; set; } /// 4
public double MsrdValLimLo { get; set; } /// 5
public double MsrdValLimHi { get; set; } /// 6
/// Schematic drawing info
public Shape Shape { get; set; }
@@ -51,6 +49,10 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
[XmlIgnore]
public IList<GNode> GNodes { get; set; }
[XmlIgnore]
public double MsrdValLimLo { get; set; }
[XmlIgnore]
public double MsrdValLimHi { get; set; }
private IEnumerable<Config.Entities.Component> flowMeters;
@@ -64,8 +66,9 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
public FlowMeterCfg(IComponentFactory factory, string name)
: this()
{
Shape = Shape.FlowM;
Shape = Shape.ParallelFlowM;
Sz = Sz.M;
MsrdValLimLo = 0;
Name = name;
Factory = factory;
@@ -82,8 +85,6 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
Flowmeter3 = string.Empty;
MsrdFormat = "{0:F3} m2/h";
MsrdUnit = Unit.m3ph;
MsrdValLimLo = 0;
MsrdValLimHi = 1000;
}
string[] paramNames = new string[]
@@ -93,8 +94,6 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
"Flow meter 3", /// 2
"Display format", /// 3
"Unit of flow on a display", /// 4
"Flow limit Lo", /// 5
"Flow limit Hi", /// 6
};
public string ParamName(int i) { return paramNames[i]; }
public int ParamsCount() { return paramNames.Length; }
@@ -127,8 +126,6 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
case 2: return string.IsNullOrEmpty(Flowmeter3) ? "---" : Flowmeter3;
case 3: return MsrdFormat;
case 4: return MsrdUnit.ToDescription();
case 5: return MsrdValLimLo.ToString();
case 6: return MsrdValLimHi.ToString();
default:
return string.Format("Name={0} {1} {2} {3} fmt={4} unit={5} Lo={6} Hi={7}",
@@ -146,8 +143,6 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
case 2: Flowmeter3 = (str != "---") ? str : string.Empty; return CfgUpdateFlags.RestartRqrd;
case 3: MsrdFormat = str; return CfgUpdateFlags.RestartRqrd;
case 4: MsrdUnit = (str == "l/h") ? Unit.lph : Unit.m3ph; return CfgUpdateFlags.RestartRqrd;
case 5: MsrdValLimLo = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
case 6: MsrdValLimHi = TBF.Utils.ParseUDouble(str); return CfgUpdateFlags.RestartRqrd;
default:
return CfgUpdateFlags.None;
}
@@ -156,7 +151,6 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
public bool ValidateParam(int i, string str, out string message)
{
message = string.Empty;
double ddummy;
switch (i)
{
@@ -168,10 +162,6 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
break;
case 3:
return true;
case 5:
case 6:
if (TBF.Utils.TryParseUDouble(str, out ddummy)) return true;
break;
default:
message = "Invalid index";
return false;
@@ -188,8 +178,6 @@ namespace TBF.Rig.Uni.FlowMetersInParallel
prms.Flowmeter3 = this.Flowmeter3;
prms.MsrdFormat = this.MsrdFormat;
prms.MsrdUnit = this.MsrdUnit;
prms.MsrdValLimLo = this.MsrdValLimLo;
prms.MsrdValLimHi = this.MsrdValLimHi;
}
public IParamsProvider Clone()