PMaxTest and LeakTest improvements:
- result items P_xy_start and P_xy_end added - DurationLeak test parameter for LeakTest method - correct default parameters for Danfoss.VLT2800.Pump (FC protocol) - bug fixes
This commit is contained in:
@@ -110,6 +110,7 @@ namespace TBF.BenchControl.Danfoss.VLT2800
|
|||||||
|
|
||||||
bitPosition = pumpCfg.BitPosition;
|
bitPosition = pumpCfg.BitPosition;
|
||||||
Mask = (((ulong)1) << bitPosition);
|
Mask = (((ulong)1) << bitPosition);
|
||||||
|
Mask |= (((ulong)1) << (bitPosition + 1));
|
||||||
|
|
||||||
log.Debug(this.ToString());
|
log.Debug(this.ToString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ namespace TBF.BenchControl.Danfoss.VLT2800
|
|||||||
/// Serialized parameters
|
/// Serialized parameters
|
||||||
///
|
///
|
||||||
public int Delay; // Delay of the pump function in [s] (affects the duration of transition sequence steps)
|
public int Delay; // Delay of the pump function in [s] (affects the duration of transition sequence steps)
|
||||||
public PumpProtocol Protocol; // Modbus or FC
|
public PumpProtocol Protocol; // Modbus or FC with Siemens address
|
||||||
public int BitPosition;
|
public int BitPosition;
|
||||||
public int BusAddress; // Modbus or FC address in range 1..247 (Modbus) or 1..31 (FC)
|
public int BusAddress; // Modbus or FC address in range 1..247 (Modbus) or 1..31 (FC with Siemens address)
|
||||||
public int ComPortNr;
|
public int ComPortNr;
|
||||||
public int BaudRate;
|
public int BaudRate;
|
||||||
public Parity Parity;
|
public Parity Parity;
|
||||||
@@ -28,14 +28,16 @@ namespace TBF.BenchControl.Danfoss.VLT2800
|
|||||||
PumpCfg()
|
PumpCfg()
|
||||||
{
|
{
|
||||||
Name = "Pump-Danfoss";
|
Name = "Pump-Danfoss";
|
||||||
|
ParentName = string.Empty;
|
||||||
Delay = 1;
|
Delay = 1;
|
||||||
Protocol = PumpProtocol.Modbus;
|
ComPortNr = 3;
|
||||||
|
|
||||||
|
/// Default protocol settings (the same as Danfoss VLT2800 factory settings)
|
||||||
|
Protocol = PumpProtocol.FC;
|
||||||
BusAddress = 1;
|
BusAddress = 1;
|
||||||
ParentName = string.Empty;
|
|
||||||
ComPortNr = 5;
|
|
||||||
BaudRate = 9600;
|
BaudRate = 9600;
|
||||||
DataBits = 8;
|
DataBits = 8;
|
||||||
Parity = System.IO.Ports.Parity.None;
|
Parity = System.IO.Ports.Parity.Even; /// 'Parity.None' is the default value for Protocol = PumpProtocol.Modbus
|
||||||
StopBits = System.IO.Ports.StopBits.One;
|
StopBits = System.IO.Ports.StopBits.One;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,17 +37,17 @@
|
|||||||
|
|
||||||
public enum ValveCategory
|
public enum ValveCategory
|
||||||
{
|
{
|
||||||
All = 0, /// Valve will be shown in all paths
|
All = 0, /// Valve will be shown in all paths
|
||||||
Feeding, /// Valve will be shown in Feeding paths
|
Feeding, /// Valve will be shown in Feeding paths
|
||||||
Bench, /// Valve will be shown in Bench paths
|
Bench, /// Valve will be shown in Bench paths
|
||||||
Output, /// Valve will be shown in Output paths
|
Output, /// Valve will be shown in Output paths
|
||||||
None, /// Valve will not be shown in the paths
|
None, /// Valve will not be shown in the paths
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum PumpProtocol
|
public enum PumpProtocol
|
||||||
{
|
{
|
||||||
Modbus,
|
Modbus, /// Modbus protocol, default serial settings are 9600Bd, 8bits, NoP, 1stop
|
||||||
FC,
|
FC, /// FC protocol with Siemens address (1..31), default serial settings are 9600Bd, 8bits, PE, 1stop
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -740,7 +740,7 @@ namespace TBF.BenchControl.Sequences
|
|||||||
sb.Append(";"); sb.Append("0");
|
sb.Append(";"); sb.Append("0");
|
||||||
sb.Append(";"); sb.Append("2");
|
sb.Append(";"); sb.Append("2");
|
||||||
sb.Append(";"); sb.Append(" ");
|
sb.Append(";"); sb.Append(" ");
|
||||||
sb.Append(";"); sb.Append(outPath.Balance.Cfg.Name);
|
sb.Append(";"); if (outPath.Balance != null) sb.Append(outPath.Balance.Name);
|
||||||
sb.Append(";"); sb.Append(tstRslt.AmbientTempAve);
|
sb.Append(";"); sb.Append(tstRslt.AmbientTempAve);
|
||||||
sb.Append(";"); sb.Append(tstRslt.AmbientPressAve);
|
sb.Append(";"); sb.Append(tstRslt.AmbientPressAve);
|
||||||
sb.Append(";"); sb.Append(tstRslt.AmbientHumiAve);
|
sb.Append(";"); sb.Append(tstRslt.AmbientHumiAve);
|
||||||
@@ -780,8 +780,10 @@ namespace TBF.BenchControl.Sequences
|
|||||||
sb.Append(";"); sb.Append(tstRslt.Time); /// t
|
sb.Append(";"); sb.Append(tstRslt.Time); /// t
|
||||||
sb.Append(";"); sb.Append(tstRslt.ErrorMaster); /// Eelm . . . chyba etalonu voci komercne pravej hodnote
|
sb.Append(";"); sb.Append(tstRslt.ErrorMaster); /// Eelm . . . chyba etalonu voci komercne pravej hodnote
|
||||||
sb.Append(";"); sb.Append(" "); /// Emass . . . chyba druheho etalonu voci komercne pravej hodnote (teraz vynechavame)
|
sb.Append(";"); sb.Append(" "); /// Emass . . . chyba druheho etalonu voci komercne pravej hodnote (teraz vynechavame)
|
||||||
sb.Append(";"); sb.Append(1.0f / outPath.FlowMeter.LtrPerPulse);
|
sb.Append(";"); if (outPath.FlowMeter != null && outPath.FlowMeter.LtrPerPulse != 0)
|
||||||
/// Const.MID . konstanta eatlonu
|
{
|
||||||
|
sb.Append(1.0f / outPath.FlowMeter.LtrPerPulse);/// Const.MID . konstanta eatlonu
|
||||||
|
}
|
||||||
sb.Append(";"); sb.Append(" "); /// Const.MA . . konstanta druheho etalonu
|
sb.Append(";"); sb.Append(" "); /// Const.MA . . konstanta druheho etalonu
|
||||||
sb.Append(";"); sb.Append(tstRslt.TimeDivStart0); /// Time Div Start celkovy cas v [ms]
|
sb.Append(";"); sb.Append(tstRslt.TimeDivStart0); /// Time Div Start celkovy cas v [ms]
|
||||||
sb.Append(";"); sb.Append(tstRslt.TimeDivStart1); /// Time Div Start1
|
sb.Append(";"); sb.Append(tstRslt.TimeDivStart1); /// Time Div Start1
|
||||||
|
|||||||
@@ -9,15 +9,17 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
{
|
{
|
||||||
public class LeakTestParams : TestParamsBase, IParamsProvider, ITestParams
|
public class LeakTestParams : TestParamsBase, IParamsProvider, ITestParams
|
||||||
{
|
{
|
||||||
public float PressureLo; /// Presure range low limit in bar
|
public float PressureLo; /// Presure range low limit in kPa
|
||||||
public float PressureHi; /// Presure range high limit in bar
|
public float PressureHi; /// Presure range high limit in kPa
|
||||||
public int Duration; /// Duration of the test in [s]
|
public int DurationPMax; /// Duration of PMax test in [s]
|
||||||
|
public int DurationLeak; /// Duration of Leak test in [s]
|
||||||
|
|
||||||
public override void InitializeAll()
|
public override void InitializeAll()
|
||||||
{
|
{
|
||||||
PressureLo = 1.0f;
|
PressureLo = 500.0f; /// kPa
|
||||||
PressureHi = 2.0f;
|
PressureHi = 600.0f; /// kPa
|
||||||
Duration = 10;
|
DurationPMax = 10;
|
||||||
|
DurationLeak = 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -25,7 +27,8 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
{
|
{
|
||||||
Strings.PressureLo_bar,
|
Strings.PressureLo_bar,
|
||||||
Strings.PressureHi_bar,
|
Strings.PressureHi_bar,
|
||||||
Strings.Duration_s,
|
Strings.Duration_PMax_s,
|
||||||
|
Strings.Duration_Leak_s,
|
||||||
};
|
};
|
||||||
public override string ParamName(int i) { return paramNames[i]; }
|
public override string ParamName(int i) { return paramNames[i]; }
|
||||||
public override int ParamsCount() { return paramNames.Length; }
|
public override int ParamsCount() { return paramNames.Length; }
|
||||||
@@ -34,9 +37,10 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
{
|
{
|
||||||
switch (i)
|
switch (i)
|
||||||
{
|
{
|
||||||
case 0: return PressureLo.ToString();
|
case 0: return (PressureLo / 100.0f).ToString(); /// Saved in kPa, UI in bar
|
||||||
case 1: return PressureHi.ToString();
|
case 1: return (PressureHi / 100.0f).ToString(); /// Saved in kPa, UI in bar
|
||||||
case 2: return Duration.ToString();
|
case 2: return DurationPMax.ToString();
|
||||||
|
case 3: return DurationLeak.ToString();
|
||||||
default: return string.Empty;
|
default: return string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -45,9 +49,10 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
{
|
{
|
||||||
switch (i)
|
switch (i)
|
||||||
{
|
{
|
||||||
case 0: PressureLo = Utils.ParseUFloat(strValue); return;
|
case 0: PressureLo = 100.0f * Utils.ParseUFloat(strValue); return; /// Saved in kPa, UI in bar
|
||||||
case 1: PressureHi = Utils.ParseSFloat(strValue); return;
|
case 1: PressureHi = 100.0f * Utils.ParseSFloat(strValue); return; /// Saved in kPa, UI in bar
|
||||||
case 2: Duration = int.Parse(strValue); return;
|
case 2: DurationPMax = int.Parse(strValue); return;
|
||||||
|
case 3: DurationLeak = int.Parse(strValue); return;
|
||||||
default: return;
|
default: return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,6 +70,7 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
if (Utils.TryParseUFloat(strValue, out dummy)) return true;
|
if (Utils.TryParseUFloat(strValue, out dummy)) return true;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
case 3:
|
||||||
if (int.TryParse(strValue, out iDummy)) return true;
|
if (int.TryParse(strValue, out iDummy)) return true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -90,7 +96,8 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
|
|
||||||
PressureLo = tmp.PressureLo;
|
PressureLo = tmp.PressureLo;
|
||||||
PressureHi = tmp.PressureHi;
|
PressureHi = tmp.PressureHi;
|
||||||
Duration = tmp.Duration;
|
DurationPMax = tmp.DurationPMax;
|
||||||
|
DurationLeak = tmp.DurationLeak;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -27,67 +27,52 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
{
|
{
|
||||||
Elde.ControlBoardDev cBrd = StateMachine.ControlBoard;
|
Elde.ControlBoardDev cBrd = StateMachine.ControlBoard;
|
||||||
|
|
||||||
IList<Event> e = new List<Event>(); /// Events from currently running operations
|
IList<Event> e = new List<Event>(); /// Events from currently running operations
|
||||||
Event retVal = Event.Done;
|
Event retVal = Event.Done;
|
||||||
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
|
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
|
||||||
|
|
||||||
ltrPerRefPulse = outPath.FlowMeter.LtrPerPulse; /// [ltr/pulse], nominal flow in [m3/h]
|
processDataLoggingOp = new TBF.BenchControl.Operations.ProcessDataLoggingOp(processDataLogger, this);
|
||||||
|
|
||||||
/// Notes:
|
|
||||||
/// float timeHr = volumeLtr / (1000.0f * targetFlow);
|
|
||||||
/// float timeSec = 3600.0f * timeHr;
|
|
||||||
/// int refPulses = (int)(timeSec * (2000.0f * targetFlow / pOut.FlowMeter.NominalFlow));
|
|
||||||
int totalPulses = (int)(test.Volume / ltrPerRefPulse + 0.5f);
|
|
||||||
|
|
||||||
processDataLoggingOp = new TBF.BenchControl.Operations.ProcessDataLoggingOp(processDataLogger, this);
|
|
||||||
|
|
||||||
int repetitionNr = 1; /// First test: repetitionNr=1
|
|
||||||
|
|
||||||
//====================================
|
|
||||||
// Transition or SetRoute - Start
|
// Transition or SetRoute - Start
|
||||||
//====================================
|
|
||||||
switch (Transition(transitionStart, TransitionContext.TestStart))
|
switch (Transition(transitionStart, TransitionContext.TestStart))
|
||||||
{
|
{
|
||||||
case Event.Error: { retVal = Event.Error; goto stopTest; }
|
case Event.Error: { retVal = Event.Error; goto stopTest; }
|
||||||
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
|
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Start the test, initialize test results
|
/// Start the test, initialize test results
|
||||||
Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, repetitionNr, inPath, benchPath, outPath, sensPath, totalPulses));
|
Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, 1, inPath, benchPath, outPath, sensPath, 0));
|
||||||
Entities.TestResult tstRslt = new Entities.TestResult(test, repetitionNr, Entities.MetersKind.Single);
|
Entities.TestResult tstRslt = new Entities.TestResult(test, 1, Entities.MetersKind.Single);
|
||||||
|
|
||||||
//------------------------------------------------
|
|
||||||
Bridge.OnActivity(this, Strings.Starting_the_pump);
|
|
||||||
//------------------------------------------------
|
|
||||||
int flowSetTime0 = StateMachine.Time;
|
|
||||||
float estFlowSetTime = 10.0f;
|
|
||||||
|
|
||||||
|
//------------------------------------------------
|
||||||
|
Bridge.OnActivity(this, Strings.Starting_the_pump);
|
||||||
|
//------------------------------------------------
|
||||||
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);
|
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);
|
||||||
|
|
||||||
State.Create("LeakTest : Starting the pump")
|
State.Create("LeakTest : Starting the pump")
|
||||||
.AddOperation(checkUiOp)
|
.AddOperation(checkUiOp)
|
||||||
.AddOperation(cBrd.SetValvesOp(inPath.Pump, null))
|
.AddOperation(cBrd.SetValvesOp(inPath.Pump, null))
|
||||||
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||||
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||||
.AddOperation(outPath.TempDiv.ReadTempOp(ref tempDiv))
|
|
||||||
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||||
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||||
.EnterState();
|
.EnterState();
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
e = StateMachine.WaitRunDevsRunOps();
|
e = StateMachine.WaitRunDevsRunOps();
|
||||||
if (e.Contains(Event.UiCmdStop)) { retVal = Event.UiCmdStop; goto stopTest; }
|
if (e.Contains(Event.UiCmdStop)) { retVal = Event.UiCmdStop; goto stopTest; }
|
||||||
}
|
}
|
||||||
while (e.Contains(Event.ValvesBusy));
|
while (e.Contains(Event.ValvesBusy));
|
||||||
|
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
Bridge.OnActivity(this, Strings.Setting_the_water_pressure);
|
Bridge.OnActivity(this, Strings.Setting_the_water_pressure);
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
|
|
||||||
const float pumpPowerStep = 3.0f;
|
|
||||||
float pumpPower = test.PumpPower;
|
float pumpPower = test.PumpPower;
|
||||||
int startTime = StateMachine.Time;
|
int startTime = StateMachine.Time;
|
||||||
do
|
|
||||||
|
while (true)
|
||||||
{
|
{
|
||||||
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(pumpPower);
|
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(pumpPower);
|
||||||
|
|
||||||
@@ -95,7 +80,6 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
.AddOperation(checkUiOp)
|
.AddOperation(checkUiOp)
|
||||||
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||||
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||||
.AddOperation(outPath.TempDiv.ReadTempOp(ref tempDiv))
|
|
||||||
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||||
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||||
.AddOperation(new Operations.TimerOp(5))
|
.AddOperation(new Operations.TimerOp(5))
|
||||||
@@ -109,57 +93,146 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
}
|
}
|
||||||
while (e.Contains(Event.TimerBusy));
|
while (e.Contains(Event.TimerBusy));
|
||||||
|
|
||||||
UiBridge.Bridge.OnLog(this, string.Format("time = {0}, pump_power = {1}%, pressure_up = {2}, pressure_down = {3}\r\n",
|
UiBridge.Bridge.OnLog(this, string.Format("time = {0}, pump_power = {1}%, pressure_up = {2}kPa, pressure_down = {3}kPa\r\n",
|
||||||
StateMachine.Time - startTime,
|
StateMachine.Time - startTime,
|
||||||
pumpPower.ToString("F0"),
|
pumpPower.ToString("F0"),
|
||||||
pressIn.Val.ToString("F3"),
|
pressIn.Val.ToString("F1"),
|
||||||
pressIn.Val.ToString("F3")));
|
pressIn.Val.ToString("F1")));
|
||||||
|
|
||||||
if (pumpPower == 100.0f) break; /// Already at the max.pump power
|
float step = (pumpPower < 40.0f) ? 5.0f : ((pumpPower < 60.0f) ? 3.0f : ((pumpPower < 80.0f) ? 2.0f : 1.0f));
|
||||||
|
|
||||||
pumpPower += pumpPowerStep;
|
if (pressOut.Val < testParams.PressureLo)
|
||||||
if (pumpPower >= 100.0f) pumpPower = 100.0f; /// Max. 100%
|
{
|
||||||
|
if (pumpPower == 100.0f) break; /// Already at max. pump power -> Quit loop
|
||||||
|
pumpPower = Math.Min(pumpPower + step, 100.0f); /// Limit max. power to 100%
|
||||||
|
}
|
||||||
|
else if (pressOut.Val > testParams.PressureHi)
|
||||||
|
{
|
||||||
|
if (pumpPower == 0) break; /// Already at min. pump power -> Quit loop
|
||||||
|
pumpPower = Math.Max(pumpPower - step, 0); /// Limit min. power to 0%
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break; /// Pressure is in the range -> Quit loop
|
||||||
|
}
|
||||||
}
|
}
|
||||||
while (testParams.PressureLo <= pressOut.Val && pressOut.Val <= testParams.PressureHi);
|
|
||||||
|
|
||||||
pressure_set:
|
pressure_set:
|
||||||
|
|
||||||
int time = StateMachine.Time;
|
startTime = StateMachine.Time;
|
||||||
tstRslt.TimeStart = DateTime.Now;
|
int estimtdEndTime = startTime + testParams.DurationPMax;
|
||||||
ResetAveragedData();
|
|
||||||
bool firstTime = true;
|
|
||||||
|
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
Bridge.OnActivity(this, Strings.Test_in_progress);
|
Bridge.OnActivity(this, Strings.Test_in_progress);
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
State.Create("LeakTest : Starting the test")
|
State.Create("LeakTest : Maximum water pressure set")
|
||||||
.AddOperation(checkUiOp)
|
.AddOperation(checkUiOp)
|
||||||
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||||
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||||
.AddOperation(outPath.TempDiv.ReadTempOp(ref tempDiv))
|
|
||||||
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||||
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||||
.AddOperation(new Operations.TimerOp(testParams.Duration))
|
.AddOperation(new Operations.TimerOp(testParams.DurationPMax))
|
||||||
.EnterState();
|
.EnterState();
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
e = StateMachine.WaitRunDevsRunOps();
|
e = StateMachine.WaitRunDevsRunOps();
|
||||||
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
|
|
||||||
|
tstRslt.TempInStart = tempIn.Val;
|
||||||
|
tstRslt.TempOutStart = tempOut.Val;
|
||||||
|
tstRslt.PressInStart = pressIn.Val;
|
||||||
|
tstRslt.PressOutStart = pressOut.Val;
|
||||||
|
|
||||||
|
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
|
||||||
if (e.Contains(Event.UiCmdStop)) { retVal = Event.UiCmdStop; goto stopTest; }
|
if (e.Contains(Event.UiCmdStop)) { retVal = Event.UiCmdStop; goto stopTest; }
|
||||||
|
|
||||||
if (firstTime)
|
int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
|
||||||
{
|
Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
|
||||||
firstTime = false; /// Do the following only once
|
}
|
||||||
tstRslt.TempInStart = tempIn.Val;
|
while (e.Contains(Event.TimerBusy));
|
||||||
tstRslt.TempOutStart = tempOut.Val;
|
|
||||||
tstRslt.TempDivStart = tempDiv.Val;
|
closing_valve:
|
||||||
tstRslt.PressInStart = pressIn.Val;
|
|
||||||
tstRslt.PressOutStart = pressOut.Val;
|
//------------------------------------------------
|
||||||
}
|
Bridge.OnActivity(this, Strings.Closing_valve_Pump_off);
|
||||||
|
//------------------------------------------------
|
||||||
|
State.Create("LeakTest : Closing the valve")
|
||||||
|
.AddOperation(checkUiOp)
|
||||||
|
.AddOperation(cBrd.SetValvesOp(null, outPath.StartValve))
|
||||||
|
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||||
|
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||||
|
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||||
|
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||||
|
.EnterState();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
e = StateMachine.WaitRunDevsRunOps();
|
||||||
|
|
||||||
|
tstRslt.TempInStart = tempIn.Val;
|
||||||
|
tstRslt.TempOutStart = tempOut.Val;
|
||||||
|
tstRslt.PressInStart = pressIn.Val;
|
||||||
|
tstRslt.PressOutStart = pressOut.Val;
|
||||||
|
|
||||||
|
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
|
||||||
|
if (e.Contains(Event.UiCmdStop)) { retVal = Event.UiCmdStop; goto stopTest; }
|
||||||
|
}
|
||||||
|
while (e.Contains(Event.ValvesBusy));
|
||||||
|
|
||||||
|
valve_closed:
|
||||||
|
|
||||||
|
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOff();
|
||||||
|
|
||||||
|
State.Create("LeakTest : Closing the valve")
|
||||||
|
.AddOperation(checkUiOp)
|
||||||
|
.AddOperation(cBrd.SetValvesOp(null, inPath.Pump))
|
||||||
|
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||||
|
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||||
|
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||||
|
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||||
|
.EnterState();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
e = StateMachine.WaitRunDevsRunOps();
|
||||||
|
|
||||||
|
tstRslt.TempInStart = tempIn.Val;
|
||||||
|
tstRslt.TempOutStart = tempOut.Val;
|
||||||
|
tstRslt.PressInStart = pressIn.Val;
|
||||||
|
tstRslt.PressOutStart = pressOut.Val;
|
||||||
|
|
||||||
|
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
|
||||||
|
if (e.Contains(Event.UiCmdStop)) { retVal = Event.UiCmdStop; goto stopTest; }
|
||||||
|
}
|
||||||
|
while (e.Contains(Event.ValvesBusy));
|
||||||
|
|
||||||
|
|
||||||
|
pump_is_off:
|
||||||
|
|
||||||
|
tstRslt.TimeStart = DateTime.Now;
|
||||||
|
startTime = StateMachine.Time;
|
||||||
|
estimtdEndTime = startTime + testParams.DurationLeak;
|
||||||
|
ResetAveragedData();
|
||||||
|
|
||||||
|
//------------------------------------------------
|
||||||
|
Bridge.OnActivity(this, Strings.Test_in_progress);
|
||||||
|
//------------------------------------------------
|
||||||
|
State.Create("LeakTest : Starting the test")
|
||||||
|
.AddOperation(checkUiOp)
|
||||||
|
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||||
|
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||||
|
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||||
|
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||||
|
.AddOperation(new Operations.TimerOp(testParams.DurationLeak))
|
||||||
|
.EnterState();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
e = StateMachine.WaitRunDevsRunOps();
|
||||||
|
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
|
||||||
|
if (e.Contains(Event.UiCmdStop)) { retVal = Event.UiCmdStop; goto stopTest; }
|
||||||
|
|
||||||
|
int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
|
||||||
|
Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
|
||||||
|
|
||||||
tstRslt.TempInEnd = tempIn.Val;
|
tstRslt.TempInEnd = tempIn.Val;
|
||||||
tstRslt.TempOutEnd = tempOut.Val;
|
tstRslt.TempOutEnd = tempOut.Val;
|
||||||
tstRslt.TempDivEnd = tempDiv.Val;
|
|
||||||
tstRslt.PressInEnd = pressIn.Val;
|
tstRslt.PressInEnd = pressIn.Val;
|
||||||
tstRslt.PressOutEnd = pressOut.Val;
|
tstRslt.PressOutEnd = pressOut.Val;
|
||||||
tstRslt.MassEndRaw = mass.Val;
|
tstRslt.MassEndRaw = mass.Val;
|
||||||
@@ -168,9 +241,9 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
}
|
}
|
||||||
while (e.Contains(Event.TimerBusy));
|
while (e.Contains(Event.TimerBusy));
|
||||||
|
|
||||||
/// Measurement loop - end
|
/// Measurement loop - end
|
||||||
|
|
||||||
test_completed:
|
test_completed:
|
||||||
|
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
Bridge.OnActivity(this, Strings.Test_completed);
|
Bridge.OnActivity(this, Strings.Test_completed);
|
||||||
@@ -188,49 +261,49 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
///
|
///
|
||||||
UpdateTestRsltWithAveragedData(tstRslt);
|
UpdateTestRsltWithAveragedData(tstRslt);
|
||||||
|
|
||||||
tstRslt.TimeEnd = DateTime.Now;
|
tstRslt.TimeEnd = DateTime.Now;
|
||||||
tstRslt.BatchNr = Program.LocalSettings.BatchNr;
|
tstRslt.BatchNr = Program.LocalSettings.BatchNr;
|
||||||
tstRslt.MassStart = 0;
|
tstRslt.MassStart = 0;
|
||||||
tstRslt.MassEnd = 0;
|
tstRslt.MassEnd = 0;
|
||||||
tstRslt.MassDiff = 0;
|
tstRslt.MassDiff = 0;
|
||||||
tstRslt.DensityIn = Formulas.WaterDensityFromTemp(tstRslt.TempInAvrg); /// [kg/m3]
|
tstRslt.DensityIn = Formulas.WaterDensityFromTemp(tstRslt.TempInAvrg); /// [kg/m3]
|
||||||
tstRslt.DensityOut = Formulas.WaterDensityFromTemp(tstRslt.TempOutAvrg); /// [kg/m3]
|
tstRslt.DensityOut = Formulas.WaterDensityFromTemp(tstRslt.TempOutAvrg);/// [kg/m3]
|
||||||
tstRslt.DensityDiv = Formulas.WaterDensityFromTemp(tstRslt.TempDivAvrg); /// [kg/m3]
|
tstRslt.DensityDiv = 0; /// [kg/m3]
|
||||||
tstRslt.Time = testParams.Duration; /// [s] measurement time
|
tstRslt.Time = testParams.DurationPMax; /// [s] measurement time
|
||||||
tstRslt.FlowMass = 0; /// [kg/h]
|
tstRslt.FlowMass = 0; /// [kg/h]
|
||||||
tstRslt.FlowVolume = 0; /// [l/h]
|
tstRslt.FlowVolume = 0; /// [l/h]
|
||||||
tstRslt.PulsesMaster = 0; /// Pulses of the master flow meter (test total)
|
tstRslt.PulsesMaster = 0; /// Pulses of the master flow meter (test total)
|
||||||
tstRslt.VolumeMaster = 0; /// [l] volume from the master flow meter
|
tstRslt.VolumeMaster = 0; /// [l] volume from the master flow meter
|
||||||
tstRslt.ConstMaster = 0; /// Convert the flow to [m3/h]
|
tstRslt.ConstMaster = 0; /// Convert the flow to [m3/h]
|
||||||
tstRslt.VolumeCTV = 0; /// [l] 1000.0f is because density is in [kg/m3]
|
tstRslt.VolumeCTV = 0; /// [l] 1000.0f is because density is in [kg/m3]
|
||||||
tstRslt.ErrorMaster = 0;
|
tstRslt.ErrorMaster = 0;
|
||||||
tstRslt.TimeDivStart0 = 0;
|
tstRslt.TimeDivStart0 = 0;
|
||||||
tstRslt.TimeDivStart1 = 0;
|
tstRslt.TimeDivStart1 = 0;
|
||||||
tstRslt.TimeDivStart2 = 0;
|
tstRslt.TimeDivStart2 = 0;
|
||||||
tstRslt.TimeDivStart3 = 0;
|
tstRslt.TimeDivStart3 = 0;
|
||||||
tstRslt.TimeDivStart4 = 0;
|
tstRslt.TimeDivStart4 = 0;
|
||||||
tstRslt.TimeDivStart5 = 0;
|
tstRslt.TimeDivStart5 = 0;
|
||||||
tstRslt.TimeDivEnd0 = 0;
|
tstRslt.TimeDivEnd0 = 0;
|
||||||
tstRslt.TimeDivEnd1 = 0;
|
tstRslt.TimeDivEnd1 = 0;
|
||||||
tstRslt.TimeDivEnd2 = 0;
|
tstRslt.TimeDivEnd2 = 0;
|
||||||
tstRslt.TimeDivEnd3 = 0;
|
tstRslt.TimeDivEnd3 = 0;
|
||||||
tstRslt.TimeDivEnd4 = 0;
|
tstRslt.TimeDivEnd4 = 0;
|
||||||
tstRslt.TimeDivEnd5 = 0;
|
tstRslt.TimeDivEnd5 = 0;
|
||||||
|
|
||||||
for (int i = 0; i < Program.WMsCount; i++)
|
for (int i = 0; i < Program.WMsCount; i++)
|
||||||
{
|
{
|
||||||
if (sensPath.RegisterReaders[i] != null)
|
if (sensPath.RegisterReaders[i] != null)
|
||||||
{
|
{
|
||||||
tstRslt.Meters[i].SerialNr = (WaterMeters.Count > i) ? WaterMeters[i].SerialNr : string.Empty;
|
tstRslt.Meters[i].SerialNr = (WaterMeters.Count > i) ? WaterMeters[i].SerialNr : string.Empty;
|
||||||
tstRslt.Meters[i].VolumeStart = 0;
|
tstRslt.Meters[i].VolumeStart = 0;
|
||||||
tstRslt.Meters[i].VolumeEnd = 0;
|
tstRslt.Meters[i].VolumeEnd = 0;
|
||||||
tstRslt.Meters[i].VolumeMeter = 0;
|
tstRslt.Meters[i].VolumeMeter = 0;
|
||||||
tstRslt.Meters[i].VolumeRef = 0;
|
tstRslt.Meters[i].VolumeRef = 0;
|
||||||
tstRslt.Meters[i].PulsesMeter = 0;
|
tstRslt.Meters[i].PulsesMeter = 0;
|
||||||
tstRslt.Meters[i].PulsesMaster = 0;
|
tstRslt.Meters[i].PulsesMaster = 0;
|
||||||
tstRslt.Meters[i].Time = testParams.Duration;
|
tstRslt.Meters[i].Time = testParams.DurationPMax;
|
||||||
tstRslt.Meters[i].VolumeErrorPct= 0;
|
tstRslt.Meters[i].VolumeErrorPct = 0;
|
||||||
tstRslt.Meters[i].Passed = true;
|
tstRslt.Meters[i].Passed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// Add data - end
|
/// Add data - end
|
||||||
@@ -245,10 +318,9 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
|
|
||||||
stopTest:
|
stopTest:
|
||||||
|
|
||||||
///----------------------///
|
///
|
||||||
/// Quit this sequence ///
|
/// Quit this sequence
|
||||||
///----------------------///
|
///
|
||||||
|
|
||||||
State.Create("LeakTest : Stopping diverter, gate, etc.")
|
State.Create("LeakTest : Stopping diverter, gate, etc.")
|
||||||
.AddOperation(checkUiOp)
|
.AddOperation(checkUiOp)
|
||||||
.AddOperation(cBrd.StopPreviousOp())
|
.AddOperation(cBrd.StopPreviousOp())
|
||||||
@@ -264,7 +336,7 @@ namespace TBF.BenchControl.TestMethods.LeakTest
|
|||||||
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
|
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
|
||||||
switch (Transition(transitionStop, TransitionContext.TestEnd))
|
switch (Transition(transitionStop, TransitionContext.TestEnd))
|
||||||
{
|
{
|
||||||
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
|
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
|
||||||
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
|
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,15 +9,15 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
{
|
{
|
||||||
public class PMaxTestParams : TestParamsBase, IParamsProvider, ITestParams
|
public class PMaxTestParams : TestParamsBase, IParamsProvider, ITestParams
|
||||||
{
|
{
|
||||||
public float PressureLo; /// Presure range low limit in bar
|
public float PressureLo; /// Presure range low limit in kPa
|
||||||
public float PressureHi; /// Presure range high limit in bar
|
public float PressureHi; /// Presure range high limit in kPa
|
||||||
public int Duration; /// Duration of the test in [s]
|
public int DurationPMax; /// Duration of the test in [s]
|
||||||
|
|
||||||
public override void InitializeAll()
|
public override void InitializeAll()
|
||||||
{
|
{
|
||||||
PressureLo = 1.0f;
|
PressureLo = 500.0f; /// kPa
|
||||||
PressureHi = 2.0f;
|
PressureHi = 600.0f; /// kPa
|
||||||
Duration = 10;
|
DurationPMax = 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -34,9 +34,9 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
{
|
{
|
||||||
switch (i)
|
switch (i)
|
||||||
{
|
{
|
||||||
case 0: return PressureLo.ToString();
|
case 0: return (PressureLo / 100.0f).ToString(); /// Saved in kPa, UI in bar
|
||||||
case 1: return PressureHi.ToString();
|
case 1: return (PressureHi / 100.0f).ToString(); /// Saved in kPa, UI in bar
|
||||||
case 2: return Duration.ToString();
|
case 2: return DurationPMax.ToString();
|
||||||
default: return string.Empty;
|
default: return string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -45,9 +45,9 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
{
|
{
|
||||||
switch (i)
|
switch (i)
|
||||||
{
|
{
|
||||||
case 0: PressureLo = Utils.ParseUFloat(strValue); return;
|
case 0: PressureLo = 100.0f * Utils.ParseUFloat(strValue); return; /// Saved in kPa, UI in bar
|
||||||
case 1: PressureHi = Utils.ParseSFloat(strValue); return;
|
case 1: PressureHi = 100.0f * Utils.ParseSFloat(strValue); return; /// Saved in kPa, UI in bar
|
||||||
case 2: Duration = int.Parse(strValue); return;
|
case 2: DurationPMax = int.Parse(strValue); return;
|
||||||
default: return;
|
default: return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
|
|
||||||
PressureLo = tmp.PressureLo;
|
PressureLo = tmp.PressureLo;
|
||||||
PressureHi = tmp.PressureHi;
|
PressureHi = tmp.PressureHi;
|
||||||
Duration = tmp.Duration;
|
DurationPMax = tmp.DurationPMax;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -31,21 +31,10 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
Event retVal = Event.Done;
|
Event retVal = Event.Done;
|
||||||
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
|
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
|
||||||
|
|
||||||
ltrPerRefPulse = outPath.FlowMeter.LtrPerPulse; /// [ltr/pulse], nominal flow in [m3/h]
|
|
||||||
|
|
||||||
/// Notes:
|
|
||||||
/// float timeHr = volumeLtr / (1000.0f * targetFlow);
|
|
||||||
/// float timeSec = 3600.0f * timeHr;
|
|
||||||
/// int refPulses = (int)(timeSec * (2000.0f * targetFlow / pOut.FlowMeter.NominalFlow));
|
|
||||||
int totalPulses = (int)(test.Volume / ltrPerRefPulse + 0.5f);
|
|
||||||
|
|
||||||
processDataLoggingOp = new TBF.BenchControl.Operations.ProcessDataLoggingOp(processDataLogger, this);
|
processDataLoggingOp = new TBF.BenchControl.Operations.ProcessDataLoggingOp(processDataLogger, this);
|
||||||
|
|
||||||
int repetitionNr = 1; /// First test: repetitionNr=1
|
|
||||||
|
|
||||||
//====================================
|
|
||||||
// Transition or SetRoute - Start
|
// Transition or SetRoute - Start
|
||||||
//====================================
|
|
||||||
switch (Transition(transitionStart, TransitionContext.TestStart))
|
switch (Transition(transitionStart, TransitionContext.TestStart))
|
||||||
{
|
{
|
||||||
case Event.Error: { retVal = Event.Error; goto stopTest; }
|
case Event.Error: { retVal = Event.Error; goto stopTest; }
|
||||||
@@ -53,15 +42,12 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Start the test, initialize test results
|
/// Start the test, initialize test results
|
||||||
Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, repetitionNr, inPath, benchPath, outPath, sensPath, totalPulses));
|
Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, 1, inPath, benchPath, outPath, sensPath, 0));
|
||||||
Entities.TestResult tstRslt = new Entities.TestResult(test, repetitionNr, Entities.MetersKind.Single);
|
Entities.TestResult tstRslt = new Entities.TestResult(test, 1, Entities.MetersKind.Single);
|
||||||
|
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
Bridge.OnActivity(this, Strings.Starting_the_pump);
|
Bridge.OnActivity(this, Strings.Starting_the_pump);
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
int flowSetTime0 = StateMachine.Time;
|
|
||||||
float estFlowSetTime = 10.0f;
|
|
||||||
|
|
||||||
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);
|
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);
|
||||||
|
|
||||||
State.Create("PMaxTest : Starting the pump")
|
State.Create("PMaxTest : Starting the pump")
|
||||||
@@ -69,7 +55,6 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
.AddOperation(cBrd.SetValvesOp(inPath.Pump, null))
|
.AddOperation(cBrd.SetValvesOp(inPath.Pump, null))
|
||||||
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||||
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||||
.AddOperation(outPath.TempDiv.ReadTempOp(ref tempDiv))
|
|
||||||
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||||
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||||
.EnterState();
|
.EnterState();
|
||||||
@@ -84,10 +69,10 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
Bridge.OnActivity(this, Strings.Setting_the_water_pressure);
|
Bridge.OnActivity(this, Strings.Setting_the_water_pressure);
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
|
|
||||||
const float pumpPowerStep = 3.0f;
|
|
||||||
float pumpPower = test.PumpPower;
|
float pumpPower = test.PumpPower;
|
||||||
int startTime = StateMachine.Time;
|
int startTime = StateMachine.Time;
|
||||||
do
|
|
||||||
|
while (true)
|
||||||
{
|
{
|
||||||
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(pumpPower);
|
if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(pumpPower);
|
||||||
|
|
||||||
@@ -95,7 +80,6 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
.AddOperation(checkUiOp)
|
.AddOperation(checkUiOp)
|
||||||
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||||
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||||
.AddOperation(outPath.TempDiv.ReadTempOp(ref tempDiv))
|
|
||||||
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||||
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||||
.AddOperation(new Operations.TimerOp(5))
|
.AddOperation(new Operations.TimerOp(5))
|
||||||
@@ -109,25 +93,41 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
}
|
}
|
||||||
while (e.Contains(Event.TimerBusy));
|
while (e.Contains(Event.TimerBusy));
|
||||||
|
|
||||||
UiBridge.Bridge.OnLog(this, string.Format("time = {0}, pump_power = {1}%, pressure_up = {2}, pressure_down = {3}\r\n",
|
UiBridge.Bridge.OnLog(this, string.Format("time = {0}, pump_power = {1}%, pressure_up = {2}kPa, pressure_down = {3}kPa\r\n",
|
||||||
StateMachine.Time - startTime,
|
StateMachine.Time - startTime,
|
||||||
pumpPower.ToString("F0"),
|
pumpPower.ToString("F0"),
|
||||||
pressIn.Val.ToString("F3"),
|
pressIn.Val.ToString("F1"),
|
||||||
pressIn.Val.ToString("F3")));
|
pressIn.Val.ToString("F1")));
|
||||||
|
|
||||||
if (pumpPower == 100.0f) break; /// Already at the max.pump power
|
tstRslt.TempInStart = tempIn.Val;
|
||||||
|
tstRslt.TempOutStart = tempOut.Val;
|
||||||
|
tstRslt.PressInStart = pressIn.Val;
|
||||||
|
tstRslt.PressOutStart = pressOut.Val;
|
||||||
|
|
||||||
pumpPower += pumpPowerStep;
|
float step = (pumpPower < 40.0f) ? 5.0f : ((pumpPower < 60.0f) ? 3.0f : ((pumpPower < 80.0f) ? 2.0f : 1.0f));
|
||||||
if (pumpPower >= 100.0f) pumpPower = 100.0f; /// Max. 100%
|
|
||||||
|
if (pressOut.Val < testParams.PressureLo)
|
||||||
|
{
|
||||||
|
if (pumpPower == 100.0f) break; /// Already at max. pump power -> Quit loop
|
||||||
|
pumpPower = Math.Min(pumpPower + step, 100.0f); /// Limit max. power to 100%
|
||||||
|
}
|
||||||
|
else if (pressOut.Val > testParams.PressureHi)
|
||||||
|
{
|
||||||
|
if (pumpPower == 0) break; /// Already at min. pump power -> Quit loop
|
||||||
|
pumpPower = Math.Max(pumpPower - step, 0); /// Limit min. power to 0%
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break; /// Pressure is in the range -> Quit loop
|
||||||
|
}
|
||||||
}
|
}
|
||||||
while (testParams.PressureLo <= pressOut.Val && pressOut.Val <= testParams.PressureHi);
|
|
||||||
|
|
||||||
pressure_set:
|
pressure_set:
|
||||||
|
|
||||||
int time = StateMachine.Time;
|
tstRslt.TimeStart = DateTime.Now;
|
||||||
tstRslt.TimeStart = DateTime.Now;
|
startTime = StateMachine.Time;
|
||||||
|
int endTime = startTime + testParams.DurationPMax;
|
||||||
ResetAveragedData();
|
ResetAveragedData();
|
||||||
bool firstTime = true;
|
|
||||||
|
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
Bridge.OnActivity(this, Strings.Test_in_progress);
|
Bridge.OnActivity(this, Strings.Test_in_progress);
|
||||||
@@ -136,10 +136,9 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
.AddOperation(checkUiOp)
|
.AddOperation(checkUiOp)
|
||||||
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||||
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||||
.AddOperation(outPath.TempDiv.ReadTempOp(ref tempDiv))
|
|
||||||
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||||
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||||
.AddOperation(new Operations.TimerOp(testParams.Duration))
|
.AddOperation(new Operations.TimerOp(testParams.DurationPMax))
|
||||||
.EnterState();
|
.EnterState();
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@@ -147,19 +146,11 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
|
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
|
||||||
if (e.Contains(Event.UiCmdStop)) { retVal = Event.UiCmdStop; goto stopTest; }
|
if (e.Contains(Event.UiCmdStop)) { retVal = Event.UiCmdStop; goto stopTest; }
|
||||||
|
|
||||||
if (firstTime)
|
int remainingTime = Math.Max(endTime - StateMachine.Time, 0);
|
||||||
{
|
Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
|
||||||
firstTime = false; /// Do the following only once
|
|
||||||
tstRslt.TempInStart = tempIn.Val;
|
|
||||||
tstRslt.TempOutStart = tempOut.Val;
|
|
||||||
tstRslt.TempDivStart = tempDiv.Val;
|
|
||||||
tstRslt.PressInStart = pressIn.Val;
|
|
||||||
tstRslt.PressOutStart = pressOut.Val;
|
|
||||||
}
|
|
||||||
|
|
||||||
tstRslt.TempInEnd = tempIn.Val;
|
tstRslt.TempInEnd = tempIn.Val;
|
||||||
tstRslt.TempOutEnd = tempOut.Val;
|
tstRslt.TempOutEnd = tempOut.Val;
|
||||||
tstRslt.TempDivEnd = tempDiv.Val;
|
|
||||||
tstRslt.PressInEnd = pressIn.Val;
|
tstRslt.PressInEnd = pressIn.Val;
|
||||||
tstRslt.PressOutEnd = pressOut.Val;
|
tstRslt.PressOutEnd = pressOut.Val;
|
||||||
tstRslt.MassEndRaw = mass.Val;
|
tstRslt.MassEndRaw = mass.Val;
|
||||||
@@ -195,8 +186,8 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
tstRslt.MassDiff = 0;
|
tstRslt.MassDiff = 0;
|
||||||
tstRslt.DensityIn = Formulas.WaterDensityFromTemp(tstRslt.TempInAvrg); /// [kg/m3]
|
tstRslt.DensityIn = Formulas.WaterDensityFromTemp(tstRslt.TempInAvrg); /// [kg/m3]
|
||||||
tstRslt.DensityOut = Formulas.WaterDensityFromTemp(tstRslt.TempOutAvrg); /// [kg/m3]
|
tstRslt.DensityOut = Formulas.WaterDensityFromTemp(tstRslt.TempOutAvrg); /// [kg/m3]
|
||||||
tstRslt.DensityDiv = Formulas.WaterDensityFromTemp(tstRslt.TempDivAvrg); /// [kg/m3]
|
tstRslt.DensityDiv = 0; /// [kg/m3]
|
||||||
tstRslt.Time = testParams.Duration; /// [s] measurement time
|
tstRslt.Time = testParams.DurationPMax; /// [s] measurement time
|
||||||
tstRslt.FlowMass = 0; /// [kg/h]
|
tstRslt.FlowMass = 0; /// [kg/h]
|
||||||
tstRslt.FlowVolume = 0; /// [l/h]
|
tstRslt.FlowVolume = 0; /// [l/h]
|
||||||
tstRslt.PulsesMaster = 0; /// Pulses of the master flow meter (test total)
|
tstRslt.PulsesMaster = 0; /// Pulses of the master flow meter (test total)
|
||||||
@@ -228,7 +219,7 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
tstRslt.Meters[i].VolumeRef = 0;
|
tstRslt.Meters[i].VolumeRef = 0;
|
||||||
tstRslt.Meters[i].PulsesMeter = 0;
|
tstRslt.Meters[i].PulsesMeter = 0;
|
||||||
tstRslt.Meters[i].PulsesMaster = 0;
|
tstRslt.Meters[i].PulsesMaster = 0;
|
||||||
tstRslt.Meters[i].Time = testParams.Duration;
|
tstRslt.Meters[i].Time = testParams.DurationPMax;
|
||||||
tstRslt.Meters[i].VolumeErrorPct= 0;
|
tstRslt.Meters[i].VolumeErrorPct= 0;
|
||||||
tstRslt.Meters[i].Passed = true;
|
tstRslt.Meters[i].Passed = true;
|
||||||
}
|
}
|
||||||
@@ -245,10 +236,9 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
|
|||||||
|
|
||||||
stopTest:
|
stopTest:
|
||||||
|
|
||||||
///----------------------///
|
///
|
||||||
/// Quit this sequence ///
|
/// Quit this sequence
|
||||||
///----------------------///
|
///
|
||||||
|
|
||||||
State.Create("PMaxTest : Stopping diverter, gate, etc.")
|
State.Create("PMaxTest : Stopping diverter, gate, etc.")
|
||||||
.AddOperation(checkUiOp)
|
.AddOperation(checkUiOp)
|
||||||
.AddOperation(cBrd.StopPreviousOp())
|
.AddOperation(cBrd.StopPreviousOp())
|
||||||
|
|||||||
@@ -106,10 +106,18 @@ namespace TBF.Forms
|
|||||||
(x, y, z) => z.TestResult.TempOutAvrg.ToString("F2")));
|
(x, y, z) => z.TestResult.TempOutAvrg.ToString("F2")));
|
||||||
AllItems.Add(new ResultItemSpec("T div", Strings.T_div, x => x.TestResult.TempDivAvrg.ToString("F2"),
|
AllItems.Add(new ResultItemSpec("T div", Strings.T_div, x => x.TestResult.TempDivAvrg.ToString("F2"),
|
||||||
(x, y, z) => z.TestResult.TempDivAvrg.ToString("F2")));
|
(x, y, z) => z.TestResult.TempDivAvrg.ToString("F2")));
|
||||||
AllItems.Add(new ResultItemSpec("P in", Strings.P_in, x => x.TestResult.PressInAvrg.ToString("F3"),
|
AllItems.Add(new ResultItemSpec("P up", Strings.P_in, x => x.TestResult.PressInAvrg.ToString("F3"),
|
||||||
(x, y, z) => z.TestResult.PressInAvrg.ToString("F3")));
|
(x, y, z) => z.TestResult.PressInAvrg.ToString("F3")));
|
||||||
AllItems.Add(new ResultItemSpec("P out", Strings.P_out, x => x.TestResult.PressOutAvrg.ToString("F3"),
|
AllItems.Add(new ResultItemSpec("P up start", Strings.P_in_start, x => x.TestResult.PressInStart.ToString("F3"),
|
||||||
|
(x, y, z) => z.TestResult.PressInStart.ToString("F3")));
|
||||||
|
AllItems.Add(new ResultItemSpec("P up end", Strings.P_in_end, x => x.TestResult.PressInEnd.ToString("F3"),
|
||||||
|
(x, y, z) => z.TestResult.PressInEnd.ToString("F3")));
|
||||||
|
AllItems.Add(new ResultItemSpec("P down", Strings.P_out, x => x.TestResult.PressOutAvrg.ToString("F3"),
|
||||||
(x, y, z) => z.TestResult.PressOutAvrg.ToString("F3")));
|
(x, y, z) => z.TestResult.PressOutAvrg.ToString("F3")));
|
||||||
|
AllItems.Add(new ResultItemSpec("P down start", Strings.P_out_start, x => x.TestResult.PressOutStart.ToString("F3"),
|
||||||
|
(x, y, z) => z.TestResult.PressOutStart.ToString("F3")));
|
||||||
|
AllItems.Add(new ResultItemSpec("P down end", Strings.P_out_end, x => x.TestResult.PressOutEnd.ToString("F3"),
|
||||||
|
(x, y, z) => z.TestResult.PressOutEnd.ToString("F3")));
|
||||||
AllItems.Add(new ResultItemSpec("Reference error", "Err.ref. [%]", x => x.TestResult.ErrorMaster.ToString("F3"),
|
AllItems.Add(new ResultItemSpec("Reference error", "Err.ref. [%]", x => x.TestResult.ErrorMaster.ToString("F3"),
|
||||||
(x, y, z) => z.TestResult.ErrorMaster.ToString("F3")));
|
(x, y, z) => z.TestResult.ErrorMaster.ToString("F3")));
|
||||||
AllItems.Add(new ResultItemSpec("Ambient temperature", "T amb", x => x.TestResult.AmbientTempAve.ToString("F1"),
|
AllItems.Add(new ResultItemSpec("Ambient temperature", "T amb", x => x.TestResult.AmbientTempAve.ToString("F1"),
|
||||||
|
|||||||
+65
-2
@@ -321,6 +321,15 @@ namespace TBF.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Closing input valve, switching the pump off.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Closing_valve_Pump_off {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Closing_valve_Pump_off", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Combined meters.
|
/// Looks up a localized string similar to Combined meters.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -573,6 +582,24 @@ namespace TBF.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Leak duration [s].
|
||||||
|
/// </summary>
|
||||||
|
internal static string Duration_Leak_s {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Duration_Leak_s", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to PMax duration [s].
|
||||||
|
/// </summary>
|
||||||
|
internal static string Duration_PMax_s {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Duration_PMax_s", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Duration [s].
|
/// Looks up a localized string similar to Duration [s].
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1267,7 +1294,7 @@ namespace TBF.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to P in.
|
/// Looks up a localized string similar to P up.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string P_in {
|
internal static string P_in {
|
||||||
get {
|
get {
|
||||||
@@ -1276,7 +1303,25 @@ namespace TBF.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to P out.
|
/// Looks up a localized string similar to P up end.
|
||||||
|
/// </summary>
|
||||||
|
internal static string P_in_end {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("P_in_end", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to P up start.
|
||||||
|
/// </summary>
|
||||||
|
internal static string P_in_start {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("P_in_start", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to P down.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string P_out {
|
internal static string P_out {
|
||||||
get {
|
get {
|
||||||
@@ -1284,6 +1329,24 @@ namespace TBF.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to P down end.
|
||||||
|
/// </summary>
|
||||||
|
internal static string P_out_end {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("P_out_end", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to P down start.
|
||||||
|
/// </summary>
|
||||||
|
internal static string P_out_start {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("P_out_start", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Parameters.
|
/// Looks up a localized string similar to Parameters.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -939,4 +939,16 @@
|
|||||||
<data name="WMState" xml:space="preserve">
|
<data name="WMState" xml:space="preserve">
|
||||||
<value>WZ_Stand</value>
|
<value>WZ_Stand</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="P_in_end" xml:space="preserve">
|
||||||
|
<value>P ein. ende</value>
|
||||||
|
</data>
|
||||||
|
<data name="P_in_start" xml:space="preserve">
|
||||||
|
<value>P ein. start</value>
|
||||||
|
</data>
|
||||||
|
<data name="P_out_end" xml:space="preserve">
|
||||||
|
<value>P aus. ende</value>
|
||||||
|
</data>
|
||||||
|
<data name="P_out_start" xml:space="preserve">
|
||||||
|
<value>P aus. start</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -181,10 +181,10 @@
|
|||||||
<value>Pump</value>
|
<value>Pump</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="P_in" xml:space="preserve">
|
<data name="P_in" xml:space="preserve">
|
||||||
<value>P in</value>
|
<value>P up</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="P_out" xml:space="preserve">
|
<data name="P_out" xml:space="preserve">
|
||||||
<value>P out</value>
|
<value>P down</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Q_from_m3h" xml:space="preserve">
|
<data name="Q_from_m3h" xml:space="preserve">
|
||||||
<value>Q from [m3/h]</value>
|
<value>Q from [m3/h]</value>
|
||||||
@@ -973,4 +973,25 @@
|
|||||||
<data name="Pressure_selection" xml:space="preserve">
|
<data name="Pressure_selection" xml:space="preserve">
|
||||||
<value>Pressure Selection</value>
|
<value>Pressure Selection</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Duration_Leak_s" xml:space="preserve">
|
||||||
|
<value>Leak duration [s]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Duration_PMax_s" xml:space="preserve">
|
||||||
|
<value>PMax duration [s]</value>
|
||||||
|
</data>
|
||||||
|
<data name="P_in_end" xml:space="preserve">
|
||||||
|
<value>P up end</value>
|
||||||
|
</data>
|
||||||
|
<data name="P_in_start" xml:space="preserve">
|
||||||
|
<value>P up start</value>
|
||||||
|
</data>
|
||||||
|
<data name="P_out_end" xml:space="preserve">
|
||||||
|
<value>P down end</value>
|
||||||
|
</data>
|
||||||
|
<data name="P_out_start" xml:space="preserve">
|
||||||
|
<value>P down start</value>
|
||||||
|
</data>
|
||||||
|
<data name="Closing_valve_Pump_off" xml:space="preserve">
|
||||||
|
<value>Closing input valve, switching the pump off</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -306,14 +306,14 @@ namespace TBF.Screens
|
|||||||
estmtdTimeLabel.Text = args.Test.TstTime.ToString("F1");
|
estmtdTimeLabel.Text = args.Test.TstTime.ToString("F1");
|
||||||
|
|
||||||
/// Names of virtual bench components
|
/// Names of virtual bench components
|
||||||
prInCmpntLabel.Text = args.BenchPath.PressIn.Cfg.Name;
|
if (args.BenchPath.PressIn != null) prInCmpntLabel.Text = args.BenchPath.PressIn.Name;
|
||||||
prOutCmpntLabel.Text = args.BenchPath.PressOut.Cfg.Name;
|
if (args.BenchPath.PressOut != null) prOutCmpntLabel.Text = args.BenchPath.PressOut.Name;
|
||||||
tInCmpntLabel.Text = args.BenchPath.TempIn.Cfg.Name;
|
if (args.BenchPath.TempIn != null) tInCmpntLabel.Text = args.BenchPath.TempIn.Name;
|
||||||
tOutCmpntLabel.Text = args.BenchPath.TempOut.Cfg.Name;
|
if (args.BenchPath.TempOut != null) tOutCmpntLabel.Text = args.BenchPath.TempOut.Name;
|
||||||
tDivCmpntLabel.Text = args.OutputPath.TempDiv.Cfg.Name;
|
if (args.OutputPath.TempDiv != null) tDivCmpntLabel.Text = args.OutputPath.TempDiv.Name;
|
||||||
refFlowCmpntLabel.Text = args.OutputPath.FlowMeter.Cfg.Name;
|
if (args.OutputPath.FlowMeter != null) refFlowCmpntLabel.Text = args.OutputPath.FlowMeter.Name;
|
||||||
regValveCmpntLabel.Text = args.OutputPath.RegulValve.Cfg.Name;
|
if (args.OutputPath.RegulValve != null) regValveCmpntLabel.Text = args.OutputPath.RegulValve.Name;
|
||||||
scaleCmpntLabel.Text = args.OutputPath.Balance.Cfg.Name;
|
if (args.OutputPath.Balance != null) scaleCmpntLabel.Text = args.OutputPath.Balance.Name;
|
||||||
|
|
||||||
sensor1Label.Text = (args.MetersPath.RegisterReaders[0] == null) ? "" : args.MetersPath.RegisterReaders[0].Cfg.Name;
|
sensor1Label.Text = (args.MetersPath.RegisterReaders[0] == null) ? "" : args.MetersPath.RegisterReaders[0].Cfg.Name;
|
||||||
if (Program.WMsCount >= 2)
|
if (Program.WMsCount >= 2)
|
||||||
|
|||||||
Reference in New Issue
Block a user