Uni.FlowMetersInParallel in schematic drawing, ver. 3.1.1795
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user