diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs
index f08a24ca1..5e17ce4e3 100644
--- a/TBF/Properties/AssemblyInfo.cs
+++ b/TBF/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("3.1.1628.0")]
-[assembly: AssemblyFileVersion("3.1.1628.0")]
+[assembly: AssemblyVersion("3.1.1630.0")]
+[assembly: AssemblyFileVersion("3.1.1630.0")]
diff --git a/TBF/Rig/BuiltIn/PumpTandem/Pump.cs b/TBF/Rig/BuiltIn/PumpTandem/Pump.cs
index 070115c9c..cea41153b 100644
--- a/TBF/Rig/BuiltIn/PumpTandem/Pump.cs
+++ b/TBF/Rig/BuiltIn/PumpTandem/Pump.cs
@@ -12,7 +12,7 @@ namespace TBF.Rig.BuiltIn.PumpTandem
public class Pump : ComponentBase, GenericDevices.IPumpFM, GenericDevices.IValve, IOperation
{
private static readonly ILog log = LogManager.GetLogger(typeof(Pump));
- public override string ToString() { return string.Format("PumpTandem({0})", Cfg.ToString(1)); }
+ public override string ToString() { return string.Format("PumpTandem({0})", Cfg.ToString(-1)); }
readonly PumpCfg pumpCfg;
@@ -63,14 +63,14 @@ namespace TBF.Rig.BuiltIn.PumpTandem
pumpFm2 = pump2 as GenericDevices.IPumpFM;
if (pump1 is BuiltIn.Pump.Pump) { mask1 = (pump1 as BuiltIn.Pump.Pump).Mask; }
- else if (pump1 is Elde.PumpWithFM.Pump) { mask1 = (pump1 as Elde.PumpWithFM.Pump).Mask; }
else if (pump1 is Danfoss.VLT2800.Pump) { mask1 = (pump1 as Danfoss.VLT2800.Pump).Mask; }
- else { mask1 = 0; }
+ else if (pump1 is Modbus.PumpFM.DanfossVLT.Pump) { mask1 = (pump1 as Modbus.PumpFM.DanfossVLT.Pump).Mask; }
+ else { mask1 = 0; }
if (pump2 is BuiltIn.Pump.Pump) { mask2 = (pump2 as BuiltIn.Pump.Pump).Mask; }
- else if (pump2 is Elde.PumpWithFM.Pump) { mask2 = (pump2 as Elde.PumpWithFM.Pump).Mask; }
- else if (pump2 is Danfoss.VLT2800.Pump) { mask2 = (pump2 as Danfoss.VLT2800.Pump).Mask; }
- else { mask2 = 0; }
+ else if (pump2 is Danfoss.VLT2800.Pump) { mask2 = (pump2 as Danfoss.VLT2800.Pump).Mask; }
+ else if (pump2 is Modbus.PumpFM.DanfossVLT.Pump) { mask2 = (pump2 as Modbus.PumpFM.DanfossVLT.Pump).Mask; }
+ else { mask2 = 0; }
log.Warn(this.ToString());
}
diff --git a/TBF/Rig/BuiltIn/PumpTandem/PumpCfgCtrl.cs b/TBF/Rig/BuiltIn/PumpTandem/PumpCfgCtrl.cs
index 8786234a1..c6a01a656 100644
--- a/TBF/Rig/BuiltIn/PumpTandem/PumpCfgCtrl.cs
+++ b/TBF/Rig/BuiltIn/PumpTandem/PumpCfgCtrl.cs
@@ -41,8 +41,8 @@ namespace TBF.Rig.BuiltIn.PumpTandem
foreach (var cmpnt in parentDlg.CmpntEntities)
{
if (TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is BuiltIn.Pump.PumpFactory ||
- TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is Elde.PumpWithFM.PumpFactory ||
TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is Danfoss.VLT2800.PumpFactory ||
+ TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is Modbus.PumpFM.DanfossVLT.Factory ||
TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is BuiltIn.PumpTandem.PumpFactory)
{
pump1ComboBox.Items.Add(cmpnt.Name);
diff --git a/TBF/Rig/BuiltIn/SetValvesOp.cs b/TBF/Rig/BuiltIn/SetValvesOp.cs
index b5d17adaf..d746ef32a 100644
--- a/TBF/Rig/BuiltIn/SetValvesOp.cs
+++ b/TBF/Rig/BuiltIn/SetValvesOp.cs
@@ -45,8 +45,7 @@ namespace TBF.Rig.BuiltIn
/// Skip the delay evaluation and update in case the valve/pump have not changed
if (vlv is Valve.Valve && ((vlv as Valve.Valve).Mask & changed) == 0) continue;
if (vlv is Pump.Pump && ((vlv as Pump.Pump).Mask & changed) == 0) continue;
- if (vlv is Elde.PumpWithFM.Pump && ((vlv as Elde.PumpWithFM.Pump).Mask & changed) == 0) continue;
- if (vlv is Danfoss.VLT2800.Pump && ((vlv as Danfoss.VLT2800.Pump).Mask & changed) == 0) continue;
+ if (vlv is Danfoss.VLT2800.Pump && ((vlv as Danfoss.VLT2800.Pump).Mask & changed) == 0) continue;
if (vlv is Modbus.PumpFM.DanfossVLT.Pump && ((vlv as Modbus.PumpFM.DanfossVLT.Pump).Mask & changed) == 0) continue;
if ((vlv != null) && (vlv.Delay > max)) max = vlv.Delay;
@@ -56,8 +55,7 @@ namespace TBF.Rig.BuiltIn
/// Skip the delay evaluation and update in case the valve/pump have not changed
if (vlv is Valve.Valve && ((vlv as Valve.Valve).Mask & changed) == 0) continue;
if (vlv is Pump.Pump && ((vlv as Pump.Pump).Mask & changed) == 0) continue;
- if (vlv is Elde.PumpWithFM.Pump && ((vlv as Elde.PumpWithFM.Pump).Mask & changed) == 0) continue;
- if (vlv is Danfoss.VLT2800.Pump && ((vlv as Danfoss.VLT2800.Pump).Mask & changed) == 0) continue;
+ if (vlv is Danfoss.VLT2800.Pump && ((vlv as Danfoss.VLT2800.Pump).Mask & changed) == 0) continue;
if (vlv is Modbus.PumpFM.DanfossVLT.Pump && ((vlv as Modbus.PumpFM.DanfossVLT.Pump).Mask & changed) == 0) continue;
if ((vlv != null) && (vlv.Delay > max)) max = vlv.Delay;
@@ -157,20 +155,18 @@ namespace TBF.Rig.BuiltIn
{
if (valve is Valve.Valve) point.MasksOpen |= (valve as Valve.Valve).Mask;
if (valve is Pump.Pump) point.MasksOpen |= (valve as Pump.Pump).Mask;
- if (valve is Elde.PumpWithFM.Pump) point.MasksOpen |= (valve as Elde.PumpWithFM.Pump).Mask;
- if (valve is Danfoss.VLT2800.Pump) point.MasksOpen |= (valve as Danfoss.VLT2800.Pump).Mask;
- if (valve is Modbus.PumpFM.DanfossVLT.Pump) point.MasksOpen |= (valve as Modbus.PumpFM.DanfossVLT.Pump).Mask;
if (valve is PumpTandem.Pump) point.MasksOpen |= (valve as PumpTandem.Pump).Mask;
+ if (valve is Danfoss.VLT2800.Pump) point.MasksOpen |= (valve as Danfoss.VLT2800.Pump).Mask;
+ if (valve is Modbus.PumpFM.DanfossVLT.Pump) point.MasksOpen |= (valve as Modbus.PumpFM.DanfossVLT.Pump).Mask;
}
point.MasksClose = 0;
foreach (var valve in point.VClose)
{
if (valve is Valve.Valve) point.MasksClose |= (valve as Valve.Valve).Mask;
if (valve is Pump.Pump) point.MasksClose |= (valve as Pump.Pump).Mask;
- if (valve is Elde.PumpWithFM.Pump) point.MasksClose |= (valve as Elde.PumpWithFM.Pump).Mask;
- if (valve is Danfoss.VLT2800.Pump) point.MasksClose |= (valve as Danfoss.VLT2800.Pump).Mask;
- if (valve is Modbus.PumpFM.DanfossVLT.Pump) point.MasksClose |= (valve as Modbus.PumpFM.DanfossVLT.Pump).Mask;
if (valve is PumpTandem.Pump) point.MasksClose |= (valve as PumpTandem.Pump).Mask;
+ if (valve is Danfoss.VLT2800.Pump) point.MasksClose |= (valve as Danfoss.VLT2800.Pump).Mask;
+ if (valve is Modbus.PumpFM.DanfossVLT.Pump) point.MasksClose |= (valve as Modbus.PumpFM.DanfossVLT.Pump).Mask;
}
point.TimeSec += timeShift;
}
diff --git a/TBF/Rig/ControlBoard/IControlBoard.cs b/TBF/Rig/ControlBoard/IControlBoard.cs
index ad254023d..b4b7bf7d2 100644
--- a/TBF/Rig/ControlBoard/IControlBoard.cs
+++ b/TBF/Rig/ControlBoard/IControlBoard.cs
@@ -51,23 +51,50 @@ namespace TBF.Rig.ControlBoard
///
/// Returns operation which sets the flow. Events:
///
- /// Lower flow limit
- /// Upper flow limit
+ /// Lower limit for the water flow
+ /// Upper limit for the water flow
/// Reference to calss keeping current flow value
/// Timeout in seconds
/// Operation
- IOperation SetFlowOp(double flowLimLo, double flowLimHi, TBF.Boxes.DoubleBox measuredFlow, int timeout);
+ IOperation SetFlowOp(double qFrom, double qTo, TBF.Boxes.DoubleBox measuredFlow, int timeout);
IOperation StopFlowRegulationOp();
///
- /// Start a test, Events: MeasurementStarted
+ /// Get operation for a Standing start-stop test
+ /// Events: OpArgumentError .... invalid arguments, test cannot be started
+ /// StartingTest ....... starting a test
+ /// TestInProgress ..... test was successfully started, test is running
+ /// TestCompleted ...... test was successfully completed
+ /// Error .............. unspecified error while running a test
///
- /// Int32 parameter 1
- /// Double parameter 1 (alternative lower flow limit)
- /// Double parameter 2 (alternative upper flow limit)
- /// Operation
- IOperation StartTestOp(Test test, int iParam = 0, double dParam1 = 0, double dParam2 = 0);
+ /// Operation running a test
+ IOperation StandingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount);
+
+ ///
+ /// Get operation for a Flying start-stop test
+ /// Events: OpArgumentError .... invalid arguments, test cannot be started
+ /// StartingTest ....... starting a test
+ /// TestInProgress ..... test was successfully started, test is running
+ /// TestCompleted ...... test was successfully completed
+ /// Error .............. unspecified error while running a test
+ ///
+ /// Operation running a test
+ IOperation FlyingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount);
+
+ ///
+ /// Get operation for a Flying start-stop test with a diverter
+ /// Events: OpArgumentError ...... invalid arguments, test cannot be started
+ /// StartingTest ......... starting a test
+ /// TestInProgress ....... test was successfully started, test is running
+ /// TestPart2InProgress .. first part when water is diverted to a tank was successfully completed, part2 in progress,
+ /// prolonged method only: (massPulsesCount GT 0) and (massPulsesCount LT pulsesCount)
+ /// TestCompleted ........ test was successfully completed
+ /// Error ................ unspecified error while running a test
+ ///
+ /// Operation running a test
+ IOperation FlyingStartStopTestWithDivOp(Test test, double qFrom, double qTo, int pulsesCount, int massPulsesCount, bool readDivTransition);
+
IOperation ReadDiverterTransitionOp(bool isStart, Sequences.Statistics plotter, int batchNr, string testName, int repetition);
diff --git a/TBF/Rig/ControlBoard/Legacy/ControlBoardDev.cs b/TBF/Rig/ControlBoard/Legacy/ControlBoardDev.cs
index 2354ae2e7..28e511ef4 100644
--- a/TBF/Rig/ControlBoard/Legacy/ControlBoardDev.cs
+++ b/TBF/Rig/ControlBoard/Legacy/ControlBoardDev.cs
@@ -16,7 +16,7 @@ namespace TBF.Rig.ControlBoard.Legacy
public class CBoard : ComponentBase, IControlBoard
{
private static readonly ILog log = LogManager.GetLogger(typeof(CBoard));
- public override string ToString() { return string.Format("ControlBoard({0})", Cfg.ToString(1)); }
+ public override string ToString() { return string.Format("ControlBoard({0})", Cfg.ToString(-1)); }
const int FiltersCount = 8;
@@ -406,14 +406,14 @@ namespace TBF.Rig.ControlBoard.Legacy
/// Initialize this device
public void Initialize()
{
- int divertersCount = Rig.Elde.Diverter.Diverter.DivertersCount;
+ int divertersCount = Rig.Uni.Diverter.Diverter.DivertersCount;
DiverterEdge = new uint[divertersCount];
for (int i = 0; i < divertersCount; i++)
{
- DiverterEdge[i] = (uint)Rig.Elde.Diverter.Diverter.Diverters[i].ThresholdGate;
- controlCom.SetDivLimit(i, (uint)Rig.Elde.Diverter.Diverter.Diverters[i].ThresholdLo,
- (uint)Rig.Elde.Diverter.Diverter.Diverters[i].ThresholdHi);
+ DiverterEdge[i] = (uint)Rig.Uni.Diverter.Diverter.Diverters[i].ThresholdGate;
+ controlCom.SetDivLimit(i, (uint)Rig.Uni.Diverter.Diverter.Diverters[i].ThresholdLo,
+ (uint)Rig.Uni.Diverter.Diverter.Diverters[i].ThresholdHi);
}
controlCom.SendCalibData(RegValveCalib,
@@ -675,17 +675,41 @@ namespace TBF.Rig.ControlBoard.Legacy
///
- /// Start a test, Events: MeasurementStarted
+ /// Start a standing start-stop test
///
- /// Int32 parameter 1
- /// Double parameter 1 (alternative lower flow limit)
- /// Double parameter 2 (alternative upper flow limit)
- /// Operation
- public IOperation StartTestOp(Test test, int iParam = 0, double dParam1 = 0, double dParam2 = 0)
+ /// Operation running a test
+ public IOperation StandingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount)
+ {
+ return StartTestOp(test, false, false, true, qFrom, qTo, pulsesCount, 0);
+ }
+
+ ///
+ /// Start a flying start-stop test
+ ///
+ /// Operation running a test
+ public IOperation FlyingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount)
+ {
+ return StartTestOp(test, true, false, false, qFrom, qTo, pulsesCount, 0);
+ }
+
+ ///
+ /// Start a flying start-stop test with diverter
+ ///
+ /// Operation running a test
+ public IOperation FlyingStartStopTestWithDivOp(Test test, double qFrom, double qTo, int pulsesCount, int massPulsesCount, bool readDivTransition)
+ {
+ return StartTestOp(test, true, true, false, qFrom, qTo, pulsesCount, massPulsesCount);
+ }
+
+ ///
+ /// Start a test
+ ///
+ /// Operation running a test
+ public IOperation StartTestOp(Test test, bool isSyncMethod, bool isDivUsed, bool isStartStop, double qFrom, double qTo, int pulsesCount, int massPulsesCount)
{
if (controlBoardCfg.DebugLevel == DebugMode.Simulate)
{
- return new Operations.ReturnGivenEventOp(Event.MeasurementStarted);
+ return new Operations.ReturnGivenEventOp(Event.TestInProgress);
}
/// Get total number of pulses
@@ -701,12 +725,11 @@ namespace TBF.Rig.ControlBoard.Legacy
}
if (methodClass.Contains("TestMethods.CombinedWithDetection."))
{
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), dParam1, dParam2, totalPulses);
+ return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses);
}
if (methodClass == "TestMethods.DiverterTest")
{
- if (iParam == 0) return null;
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses / iParam);
+ return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses);
}
if (methodClass == "TestMethods.Dummy")
{
@@ -745,8 +768,7 @@ namespace TBF.Rig.ControlBoard.Legacy
}
if (methodClass.Contains("TestMethods.FlyingStartFirstRepetWithMassColl."))
{
- TestMethods tm = (iParam == 1) ? (TestMethods.Diverter | TestMethods.Synchro) : TestMethods.Synchro;
- return new StartMeasurementOp(this, devices, tm, test.Qfrom, test.Qto, totalPulses);
+ return new StartMeasurementOp(this, devices, TestMethods.Synchro, test.Qfrom, test.Qto, totalPulses);
}
if (methodClass.Contains("TestMethods.FlyingStartMassCollComparative."))
{
@@ -758,8 +780,7 @@ namespace TBF.Rig.ControlBoard.Legacy
}
if (methodClass.Contains("TestMethods.FlyingStartMassCollProlonged."))
{
- if (iParam == 0) return null;
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses, iParam);
+ return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses, massPulsesCount);
}
if (methodClass.Contains("TestMethods.FlyingStartTankCollection."))
{
@@ -791,7 +812,7 @@ namespace TBF.Rig.ControlBoard.Legacy
{
if (controlBoardCfg.DebugLevel == DebugMode.Simulate)
{
- return new Operations.ReturnGivenEventOp(Event.MeasurementStarted);
+ return new Operations.ReturnGivenEventOp(Event.TestInProgress);
}
else
{
diff --git a/TBF/Rig/ControlBoard/Legacy/QueryMeasurementEndOp.cs b/TBF/Rig/ControlBoard/Legacy/QueryMeasurementEndOp.cs
index 0b7eae6b6..531157001 100644
--- a/TBF/Rig/ControlBoard/Legacy/QueryMeasurementEndOp.cs
+++ b/TBF/Rig/ControlBoard/Legacy/QueryMeasurementEndOp.cs
@@ -40,12 +40,12 @@ namespace TBF.Rig.ControlBoard.Legacy
///
public Event Run()
{
- if (done) return Event.MeasurementCompleted;
+ if (done) return Event.TestCompleted;
if (0 != (controlBoard.StatusP & StatusP.TestCompleted))
{
done = true;
- return Event.MeasurementCompleted;
+ return Event.TestCompleted;
}
return Event.None;
diff --git a/TBF/Rig/ControlBoard/Legacy/StartMeasurementOp.cs b/TBF/Rig/ControlBoard/Legacy/StartMeasurementOp.cs
index c7d0a094f..ed80d84dc 100644
--- a/TBF/Rig/ControlBoard/Legacy/StartMeasurementOp.cs
+++ b/TBF/Rig/ControlBoard/Legacy/StartMeasurementOp.cs
@@ -79,26 +79,10 @@ namespace TBF.Rig.ControlBoard.Legacy
flowMeterNr = outputPath.FlowMeter.Idx1;
this.regulValve = outputPath.RegValve;
- if (regulValve is Elde.RegulValve.RegulValve)
- {
- Elde.RegulValve.RegulValve rv = outputPath.RegValve as Elde.RegulValve.RegulValve;
- regulValveNr = rv.Idx1;
- regulValveStableTime = rv.StableTime;
- }
- else if (regulValve is Elde.RegulValveCoax.RegulValve)
- {
- Elde.RegulValveCoax.RegulValve rv = outputPath.RegValve as Elde.RegulValveCoax.RegulValve;
- regulValveNr = rv.Idx1;
- regulValveStableTime = rv.StableTime;
- }
- else if (!(regulValve is Dummy.RegulValve.RegulValve))
- {
- throw new ArgumentNullException("Regulation valve is not compatible with Elde Control Board");
- }
- if (outputPath.Diverter is Elde.Diverter.Diverter)
+ if (outputPath.Diverter is TBF.Rig.Uni.Diverter.Diverter)
{
- diverterNr = (outputPath.Diverter as Elde.Diverter.Diverter).DiverterNr;
+ diverterNr = (outputPath.Diverter as TBF.Rig.Uni.Diverter.Diverter).DiverterNr;
}
nominalFlow = outputPath.FlowMeter.NominalFlow;
@@ -223,7 +207,7 @@ namespace TBF.Rig.ControlBoard.Legacy
}
else if (opState == OpState.OpCompleted)
{
- return Event.MeasurementStarted;
+ return Event.TestInProgress;
}
return Event.None;
diff --git a/TBF/Rig/ControlBoard/Papouch/PapouchCB.cs b/TBF/Rig/ControlBoard/Papouch/PapouchCB.cs
index 396372e84..a03b48b48 100644
--- a/TBF/Rig/ControlBoard/Papouch/PapouchCB.cs
+++ b/TBF/Rig/ControlBoard/Papouch/PapouchCB.cs
@@ -19,7 +19,7 @@ namespace TBF.Rig.ControlBoard.Papouch
public class PapouchCB : ComponentBase, IControlBoard, IOperation
{
private static readonly ILog log = LogManager.GetLogger(typeof(PapouchCB));
- public override string ToString() { return string.Format("{0}({1})", ClassName, Cfg.ToString(1)); }
+ public override string ToString() { return string.Format("{0}({1})", ClassName, Cfg.ToString(-1)); }
readonly PapouchCBCfg cbCfg;
readonly GenericDevices.IModbus modbus;
@@ -370,16 +370,31 @@ namespace TBF.Rig.ControlBoard.Papouch
}
///
- /// Start a test, Events: MeasurementStarted
+ /// Start a standing start-stop test
///
- /// Int32 parameter 1
- /// Double parameter 1 (alternative lower flow limit)
- /// Double parameter 2 (alternative upper flow limit)
/// Operation
- public IOperation StartTestOp(Test test, int iParam = 0, double dParam1 = 0, double dParam2 = 0)
+ public IOperation StandingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount)
{
currentTest = test;
- return new Operations.ReturnGivenEventOp(Event.MeasurementStarted);
+ return new Operations.ReturnGivenEventOp(Event.TestInProgress);
+ }
+
+ ///
+ /// Start a flying start-stop test ... not supported by Papouch control board
+ ///
+ /// null
+ public IOperation FlyingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount)
+ {
+ return null;
+ }
+
+ ///
+ /// Start a flying start-stop test with diverter ... not supported by Papouch control board
+ ///
+ /// null
+ public IOperation FlyingStartStopTestWithDivOp(Test test, double qFrom, double qTo, int pulsesCount, int massPulsesCount = 0, bool readDivTransition = true)
+ {
+ return null;
}
public IOperation QueryMeasurementEndOp()
@@ -454,14 +469,14 @@ namespace TBF.Rig.ControlBoard.Papouch
}
else if (runningOp == SelectedOp.QueryMeasurementEnd)
{
- if (opCompleted) return Event.MeasurementCompleted;
+ if (opCompleted) return Event.TestCompleted;
double currentMass = TBF.Rig.Sequences.ProcessData.Mass.Val;
if (currentMass - TBF.Rig.Sequences.ProcessData.StartMass.Val >= currentTest.Volume)
{
opCompleted = true;
- return Event.MeasurementCompleted;
+ return Event.TestCompleted;
}
}
diff --git a/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestOp.cs b/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestOp.cs
new file mode 100644
index 000000000..931a2258e
--- /dev/null
+++ b/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestOp.cs
@@ -0,0 +1,142 @@
+///
+/// Copyright (c) 2021 Sensus Slovensko a.s.
+///
+using System;
+using log4net;
+using TBF.Rig.GenericDevices;
+
+namespace TBF.Rig.ControlBoard.Uni
+{
+ public class FlyingStartStopTestOp : IOperation
+ {
+ private static readonly ILog log = LogManager.GetLogger(typeof(FlyingStartStopTestOp));
+ public override string ToString() { return string.Format("FlyingStartStopTestOp()"); }
+
+ /// Arguments of the constructor
+ readonly UniCB uniCB;
+ readonly TBF.Rig.Uni.RegValve.RegValve regV;
+ readonly TBF.Rig.Uni.FlowMeter.FlowMeter flowMeter;
+ readonly double qFrom;
+ readonly double qTo;
+ readonly int pulsesCount; /// Number of reference pulses for a complete test
+
+ ///
+ /// Operation for a Flying start-stop test (constructor)
+ ///
+ /// Events: OpArgumentError .... invalid arguments, test cannot be started
+ /// StartingTest ....... starting a test
+ /// TestInProgress ..... test was successfully started, test is running
+ /// TestCompleted ...... test was successfully completed
+ /// Error .............. unspecified error while running a test
+ ///
+ /// Control board component
+ /// Components used by the test
+ /// Flow lower limit
+ /// Flow upper limit
+ /// Test duration - number of reference flow meter pulses
+ public FlyingStartStopTestOp(UniCB cb, OutputPath devices, double qFrom, double qTo, int pulsesCount)
+ {
+ this.uniCB = cb;
+
+ flowMeter = devices.FlowMeter as TBF.Rig.Uni.FlowMeter.FlowMeter;
+ if (flowMeter == null) throw new ArgumentNullException("Invalid flow meter");
+
+ regV = devices.RegValve as TBF.Rig.Uni.RegValve.RegValve;
+ if (regV == null) throw new ArgumentNullException("Invalid regulation valve");
+
+ this.qFrom = qFrom;
+ this.qTo = qTo;
+ this.pulsesCount = pulsesCount;
+
+ log.Debug(this.ToString());
+ }
+
+ /// Internal state of this operation
+ enum OpState
+ {
+ StartingTest,
+ TestInProgress,
+ TestCompleted,
+ }
+
+ OpState opState;
+
+ ///
+ /// Start this operation
+ ///
+ public void Start()
+ {
+ log.InfoFormat("Op.Start() RV#={0} Et#={1} Qfrom={2} Qto={3}", regV.Idx1, flowMeter.Idx1, qFrom, qTo);
+
+ /// Start the test (and the flow measurement)
+ uniCB.StartTest(false, flowMeter.Idx1, 0, 40, true, false, false, pulsesCount, 0);
+
+ opState = OpState.StartingTest;
+ }
+
+ ///
+ /// Run this operation
+ ///
+ ///
+ /// Event.OpArgumentError .... invalid arguments, test cannot be started
+ /// Event.StartingTest ....... starting a test
+ /// Event.TestInProgress ..... test was successfully started, test is running
+ /// Event.TestCompleted ...... test was successfully completed
+ /// Event.Error .............. unspecified error while running a test
+ ///
+ public Event Run()
+ {
+ log.DebugFormat("Op.Run() opState={0}", opState);
+
+ switch (opState)
+ {
+ case OpState.StartingTest:
+
+ if (qFrom < 0 || qFrom >= qTo || qTo > 1.25 * flowMeter.NominalFlow)
+ {
+ return Event.OpArgumentError; /// Invalid qFrom, qTo
+ }
+
+ if (!flowMeter.MsrmntAvailable || /// Flow measurement not started yet
+ (uniCB.State & (ulong)StatusP.TestInProgress) == 0 || /// Test was not started yet
+ (flowMeter.ReadFlow()) == 0) /// Measured flow is 0
+ {
+ return Event.StartingTest; /// Flow regulation cannot be started
+ }
+
+ /// Start flow regulation
+ double reqFlowAve = (qFrom + qTo) / 2;
+ double reqFlowLo = (0.7 * qFrom) + (0.3 * reqFlowAve); /// Move the lower limit 15% of the range up
+ double reqFlowHi = (0.7 * qTo) + (0.3 * reqFlowAve); /// Move the upper limit 15% of the range down
+ ///
+ uniCB.SetFlow(false, regV.Idx1, 2000 * reqFlowLo / flowMeter.NominalFlow,
+ 2000 * reqFlowHi / flowMeter.NominalFlow);
+
+ opState = OpState.TestInProgress;
+ return Event.TestInProgress;
+
+ case OpState.TestInProgress:
+
+ if ((uniCB.State & (ulong)StatusP.TestCompleted) == 0)
+ {
+ return Event.TestInProgress; /// Test was not completed yet
+ }
+ opState = OpState.TestCompleted;
+ return Event.TestCompleted;
+
+ case OpState.TestCompleted:
+ default:
+ return Event.TestCompleted;
+ }
+ }
+
+ ///
+ /// Stop this operation
+ ///
+ public void Stop()
+ {
+ log.Info("Op.Stop()");
+ uniCB.Stop(false);
+ }
+ }
+}
diff --git a/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestWithDivOp.cs b/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestWithDivOp.cs
new file mode 100644
index 000000000..515a8eaf7
--- /dev/null
+++ b/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestWithDivOp.cs
@@ -0,0 +1,189 @@
+///
+/// Copyright (c) 2021 Sensus Slovensko a.s.
+///
+using System;
+using log4net;
+using TBF.Rig.GenericDevices;
+
+namespace TBF.Rig.ControlBoard.Uni
+{
+ public class FlyingStartStopTestWithDivOp : IOperation
+ {
+ private static readonly ILog log = LogManager.GetLogger(typeof(FlyingStartStopTestWithDivOp));
+ public override string ToString() { return string.Format("FlyingStartStopTestWithDivOp()"); }
+
+ /// Arguments of the constructor
+ readonly UniCB uniCB;
+ readonly TBF.Rig.Uni.RegValve.RegValve regV;
+ readonly TBF.Rig.Uni.FlowMeter.FlowMeter flowMeter;
+ readonly TBF.Rig.Uni.Diverter.Diverter div;
+ readonly double qFrom;
+ readonly double qTo;
+ readonly int pulsesCount; /// Number of reference pulses for a complete test
+ readonly int massPulsesCount; /// Number of reference pulses for mass collection
+ readonly bool readDivTransition;
+ readonly bool isProlongedTest;
+
+ ///
+ /// Operation for a Flying start-stop test with a diverter (constructor)
+ ///
+ /// Events: OpArgumentError ...... invalid arguments, test cannot be started
+ /// StartingTest ......... starting a test
+ /// TestInProgress ....... test was successfully started, test is running
+ /// TestPart2InProgress .. first part when water is diverted to a tank was successfully completed, part2 in progress,
+ /// prolonged method only: (massPulsesCount GT 0) and (massPulsesCount LT pulsesCount)
+ /// TestCompleted ........ test was successfully completed
+ /// Error ................ unspecified error while running a test
+ ///
+ /// Control board component
+ /// Components used by the test
+ /// Flow lower limit
+ /// Flow upper limit
+ /// Test duration - number of reference flow meter pulses
+ /// Test part 1 duration - number of reference flow meter pulses<
+ public FlyingStartStopTestWithDivOp(UniCB cb, OutputPath devices, double qFrom, double qTo,
+ int pulsesCount, int massPulsesCount, bool readDivTransition)
+ {
+ this.uniCB = cb;
+
+ flowMeter = devices.FlowMeter as TBF.Rig.Uni.FlowMeter.FlowMeter;
+ if (flowMeter == null) throw new ArgumentNullException("Invalid flow meter");
+
+ regV = devices.RegValve as TBF.Rig.Uni.RegValve.RegValve;
+ if (regV == null) throw new ArgumentNullException("Invalid regulation valve");
+
+ div = devices.Diverter as TBF.Rig.Uni.Diverter.Diverter;
+ if (div == null) throw new ArgumentNullException("Invalid diverter");
+
+ this.qFrom = qFrom;
+ this.qTo = qTo;
+ this.pulsesCount = pulsesCount;
+ this.massPulsesCount = massPulsesCount;
+ this.readDivTransition = readDivTransition;
+ this.isProlongedTest = (0 < massPulsesCount) && (massPulsesCount < pulsesCount);
+
+ log.Debug(this.ToString());
+ }
+
+ /// Internal states of this operation
+ enum OpState
+ {
+ StartingTest,
+ ReadingDivTransition,
+ TestInProgress,
+ TestPart1InProgress, /// prolonged test only
+ TestPart2InProgress, /// prolonged test only
+ TestCompleted,
+ }
+
+ OpState opState;
+
+ ///
+ /// Start this operation
+ ///
+ public void Start()
+ {
+ log.InfoFormat("Op.Start() RV#={0} Et#={1} Div#={2} Qfrom={3} Qto={4}", regV.Idx1, flowMeter.Idx1, div.DiverterNr, qFrom, qTo);
+
+ /// Start the test (and the flow measurement)
+ uniCB.StartTest(false, flowMeter.Idx1, div.DiverterNr, 40, true, true, false, pulsesCount, massPulsesCount);
+
+ opState = OpState.StartingTest;
+ }
+
+ ///
+ /// Run this operation
+ ///
+ ///
+ /// Event.OpArgumentError ...... invalid arguments, test cannot be started
+ /// Event.StartingTest ......... starting a test
+ /// Event.TestInProgress ....... test was successfully started, test is running
+ /// Event.TestPart1InProgress .. first part when water is diverted to a tank was successfully completed, part2 in progress,
+ /// Event.TestPart2InProgress .. first part when water is diverted to a tank was successfully completed, part2 in progress,
+ /// prolonged method only: (massPulsesCount GT 0) and (massPulsesCount LT pulsesCount)
+ /// Event.TestCompleted ........ test was successfully completed
+ /// Event.Error ................ unspecified error while running a test
+ ///
+ public Event Run()
+ {
+ log.DebugFormat("Op.Run() opState={0}", opState);
+
+ switch (opState)
+ {
+ case OpState.StartingTest:
+
+ if (qFrom < 0 || qFrom >= qTo || qTo > 1.25 * flowMeter.NominalFlow)
+ {
+ return Event.OpArgumentError; /// Invalid qFrom, qTo
+ }
+
+ if (!flowMeter.MsrmntAvailable || /// Flow measurement not started yet
+ (uniCB.State & (ulong)StatusP.TestInProgress) == 0 || /// Test was not started yet
+ (flowMeter.ReadFlow()) == 0) /// Measured flow is 0
+ {
+ return Event.StartingTest; /// Flow regulation cannot be started
+ }
+
+ /// Start flow regulation
+ double reqFlowAve = (qFrom + qTo) / 2;
+ double reqFlowLo = (0.7 * qFrom) + (0.3 * reqFlowAve); /// Move the lower limit 15% of the range up
+ double reqFlowHi = (0.7 * qTo) + (0.3 * reqFlowAve); /// Move the upper limit 15% of the range down
+ ///
+ uniCB.SetFlow(false, regV.Idx1, 2000 * reqFlowLo / flowMeter.NominalFlow,
+ 2000 * reqFlowHi / flowMeter.NominalFlow);
+
+ opState = readDivTransition ? OpState.ReadingDivTransition
+ : (isProlongedTest ? OpState.TestPart1InProgress : OpState.TestInProgress);
+ return isProlongedTest ? Event.TestPart1InProgress : Event.TestInProgress;
+
+ case OpState.ReadingDivTransition:
+
+ /// Read diverter transition data
+ uniCB.ReadDiverterTransition(false, div.DiverterNr);
+ opState = isProlongedTest ? OpState.TestPart1InProgress : OpState.TestInProgress;
+ return isProlongedTest ? Event.TestPart1InProgress : Event.TestInProgress;
+
+ case OpState.TestInProgress:
+
+ if ((uniCB.State & (ulong)StatusP.TestCompleted) == 0)
+ {
+ return Event.TestInProgress; /// Test was not completed yet
+ }
+ opState = OpState.TestCompleted;
+ return Event.TestCompleted;
+
+ case OpState.TestPart1InProgress:
+
+ if ((uniCB.State & (ulong)StatusP.TestCompleted) == 0)
+ {
+ return Event.TestPart1InProgress; /// Test was not completed yet
+ }
+ opState = OpState.TestPart2InProgress;
+ return Event.TestPart2InProgress;
+
+ case OpState.TestPart2InProgress:
+
+ if ((uniCB.State & (ulong)StatusP.TestCompleted) == 0)
+ {
+ /// Test was not completed yet
+ return Event.TestPart2InProgress;
+ }
+ opState = OpState.TestCompleted;
+ return Event.TestCompleted;
+
+ case OpState.TestCompleted:
+ default:
+ return Event.TestCompleted;
+ }
+ }
+
+ ///
+ /// Stop this operation
+ ///
+ public void Stop()
+ {
+ log.Info("Op.Stop()");
+ uniCB.Stop(false);
+ }
+ }
+}
diff --git a/TBF/Rig/ControlBoard/Uni/StandingStartStopTestOp.cs b/TBF/Rig/ControlBoard/Uni/StandingStartStopTestOp.cs
new file mode 100644
index 000000000..7653b474a
--- /dev/null
+++ b/TBF/Rig/ControlBoard/Uni/StandingStartStopTestOp.cs
@@ -0,0 +1,142 @@
+///
+/// Copyright (c) 2021 Sensus Slovensko a.s.
+///
+using System;
+using log4net;
+using TBF.Rig.GenericDevices;
+
+namespace TBF.Rig.ControlBoard.Uni
+{
+ public class StandingStartStopTestOp : IOperation
+ {
+ private static readonly ILog log = LogManager.GetLogger(typeof(StandingStartStopTestOp));
+ public override string ToString() { return string.Format("StandingStartStopTestOp()"); }
+
+ /// Arguments of the constructor
+ readonly UniCB uniCB;
+ readonly TBF.Rig.Uni.RegValve.RegValve regV;
+ readonly TBF.Rig.Uni.FlowMeter.FlowMeter flowMeter;
+ readonly double qFrom;
+ readonly double qTo;
+ readonly int pulsesCount; /// Number of reference pulses for a complete test
+
+ ///
+ /// Operation for a Standing start-stop test (constructor)
+ ///
+ /// Events: OpArgumentError .... invalid arguments, test cannot be started
+ /// StartingTest ....... starting a test
+ /// TestInProgress ..... test was successfully started, test is running
+ /// TestCompleted ...... test was successfully completed
+ /// Error .............. unspecified error while running a test
+ ///
+ /// Control board component
+ /// Components used by the test
+ /// Flow lower limit
+ /// Flow upper limit
+ /// Test duration - number of reference flow meter pulses
+ public StandingStartStopTestOp(UniCB cb, OutputPath devices, double qFrom, double qTo, int pulsesCount)
+ {
+ this.uniCB = cb;
+
+ flowMeter = devices.FlowMeter as TBF.Rig.Uni.FlowMeter.FlowMeter;
+ if (flowMeter == null) throw new ArgumentNullException("Invalid flow meter");
+
+ regV = devices.RegValve as TBF.Rig.Uni.RegValve.RegValve;
+ if (regV == null) throw new ArgumentNullException("Invalid regulation valve");
+
+ this.qFrom = qFrom;
+ this.qTo = qTo;
+ this.pulsesCount = pulsesCount;
+
+ log.Debug(this.ToString());
+ }
+
+ /// Internal states of this operation
+ enum OpState
+ {
+ StartingTest,
+ TestInProgress,
+ TestCompleted,
+ }
+
+ OpState opState;
+
+ ///
+ /// Start this operation
+ ///
+ public void Start()
+ {
+ log.InfoFormat("Op.Start() RV#={0} Et#={1} Qfrom={2} Qto={3}", regV.Idx1, flowMeter.Idx1, qFrom, qTo);
+
+ /// Start the test (and the flow measurement)
+ uniCB.StartTest(false, flowMeter.Idx1, 0, 40, false, false, true, pulsesCount, 0);
+
+ opState = OpState.StartingTest;
+ }
+
+ ///
+ /// Run this operation
+ ///
+ ///
+ /// Event.OpArgumentError .... invalid arguments, test cannot be started
+ /// Event.StartingTest ....... starting a test
+ /// Event.TestInProgress ..... test was successfully started, test is running
+ /// Event.TestCompleted ...... test was successfully completed
+ /// Event.Error .............. unspecified error while running a test
+ ///
+ public Event Run()
+ {
+ log.DebugFormat("Op.Run() opState={0}", opState);
+
+ switch (opState)
+ {
+ case OpState.StartingTest:
+
+ if (qFrom < 0 || qFrom >= qTo || qTo > 1.25 * flowMeter.NominalFlow)
+ {
+ return Event.OpArgumentError; /// Invalid qFrom, qTo
+ }
+
+ if (!flowMeter.MsrmntAvailable || /// Flow measurement not started yet
+ (uniCB.State & (ulong)StatusP.TestInProgress) == 0 || /// Test was not started yet
+ (flowMeter.ReadFlow()) == 0) /// Measured flow is 0
+ {
+ return Event.StartingTest; /// Flow regulation cannot be started
+ }
+
+ /// Start flow regulation
+ double reqFlowAve = (qFrom + qTo) / 2;
+ double reqFlowLo = (0.7 * qFrom) + (0.3 * reqFlowAve); /// Move the lower limit 15% of the range up
+ double reqFlowHi = (0.7 * qTo) + (0.3 * reqFlowAve); /// Move the upper limit 15% of the range down
+ ///
+ uniCB.SetFlow(false, regV.Idx1, 2000 * reqFlowLo / flowMeter.NominalFlow,
+ 2000 * reqFlowHi / flowMeter.NominalFlow);
+
+ opState = OpState.TestInProgress;
+ return Event.TestInProgress;
+
+ case OpState.TestInProgress:
+
+ if ((uniCB.State & (ulong)StatusP.TestCompleted) == 0)
+ {
+ return Event.TestInProgress; /// Test was not completed yet
+ }
+ opState = OpState.TestCompleted;
+ return Event.TestCompleted;
+
+ case OpState.TestCompleted:
+ default:
+ return Event.TestCompleted;
+ }
+ }
+
+ ///
+ /// Stop this operation
+ ///
+ public void Stop()
+ {
+ log.Info("Op.Stop()");
+ uniCB.Stop(false);
+ }
+ }
+}
diff --git a/TBF/Rig/ControlBoard/Uni/StartMeasurementOp.cs b/TBF/Rig/ControlBoard/Uni/StartMeasurementOp.cs
deleted file mode 100644
index 4104f8fd5..000000000
--- a/TBF/Rig/ControlBoard/Uni/StartMeasurementOp.cs
+++ /dev/null
@@ -1,192 +0,0 @@
-///
-/// Copyright (c) 2013-2021 Sensus Slovensko a.s.
-///
-using System;
-using log4net;
-using TBF.Rig.GenericDevices;
-
-namespace TBF.Rig.ControlBoard.Uni
-{
- public class StartMeasurementOp : IOperation
- {
- private static readonly ILog log = LogManager.GetLogger(typeof(StartMeasurementOp));
- public override string ToString() { return string.Format("StartMeasurementOp()"); }
-
- /// Set by the constructor
- readonly UniCB uniCB;
- readonly TBF.Rig.Uni.RegValve.RegValve regValve;
- readonly TBF.Rig.Uni.FlowMeter.FlowMeter flowMeter;
- readonly TBF.Rig.Uni.Diverter.Diverter diverter;
- readonly int regulValveStableTime;
- readonly double maximalFlow;
- readonly double qFrom;
- readonly double qTo;
- readonly int totalRefPulses; /// Number of reference pulses for a complete test
- readonly int massRefPulses; /// Number of reference pulses for mass collection
- readonly int delayBeforeFlowRegulation; /// Delay before flow control starts in seconds
- readonly TestMethods testMethod;
-
- ///
- /// Internal states of this operation
- ///
- enum OpState
- {
- StartingTest,
- ResendCommand,
- WaitingBeforeValveMove,
- StartingFlowRegulation,
- OpCompleted,
- }
- OpState opState;
-
-
- int delayStartTime; /// StateMachine.Time snapshot when delay before flow regulation starts
-
-
- ///
- /// Starts the measurement.
- /// Events: MeasurementStarted
- ///
- /// Control board component reference
- /// Specifies used components
- /// Test method
- /// Test duration in number of reference flowmeter pulses
- /// Specifies filter for watermeter pulses
- public StartMeasurementOp(IControlBoard cb, OutputPath devices, TestMethods method, double qFrom, double qTo,
- int refPulses, int delayBeforeFlowRegulation = 0)
- : this(cb, devices, method, qFrom, qTo, refPulses, refPulses, delayBeforeFlowRegulation)
- {
- }
-
- ///
- /// Starts the measurement.
- /// Events: MeasurementStarted
- ///
- /// Control board component reference
- /// Specifies used components
- /// Test method
- /// Test duration in number of reference flowmeter pulses
- /// Specifies filter for watermeter pulses
- public StartMeasurementOp(IControlBoard cb, OutputPath devices, TestMethods method, double qFrom, double qTo,
- int totalRefPulses, int massRefPulses, int delayBeforeFlowRegulation = 0)
- {
- this.uniCB = cb as UniCB;
- if (uniCB == null) throw new ArgumentNullException("Invalid control board");
-
- flowMeter = devices.FlowMeter as TBF.Rig.Uni.FlowMeter.FlowMeter;
- if (flowMeter == null) throw new ArgumentNullException("Invalid flow meter");
-
- regValve = devices.RegValve as TBF.Rig.Uni.RegValve.RegValve;
- if (regValve == null) throw new ArgumentNullException("Invalid regulation");
-
- diverter = devices.Diverter as TBF.Rig.Uni.Diverter.Diverter;
- if (diverter == null) throw new ArgumentNullException("Invalid diverter");
-
- this.testMethod = method;
- this.qFrom = qFrom;
- this.qTo = qTo;
- this.totalRefPulses = totalRefPulses;
- this.massRefPulses = massRefPulses;
- this.delayBeforeFlowRegulation = delayBeforeFlowRegulation;
-
- maximalFlow = 1.25 * flowMeter.NominalFlow;
- log.Debug(this.ToString());
- }
-
- void SendStartCommand()
- {
- //uniCB.SyncRoute();
- uniCB.StartTest(false, flowMeter.Idx1, diverter.DiverterNr, 20,
- testMethod == TestMethods.Diverter || testMethod == TestMethods.MassAndContinue || testMethod == TestMethods.Synchro,
- testMethod == TestMethods.Diverter || testMethod == TestMethods.MassAndContinue,
- testMethod == TestMethods.FixedStart,
- totalRefPulses, massRefPulses);
- }
-
- /// Start this operation
- public void Start()
- {
- SendStartCommand();
- opState = OpState.StartingTest;
- }
-
- /// Run this operation
- ///
- /// Event.FlowInDone or Event.FlowOutDone
- ///
- public Event Run()
- {
- if (opState == OpState.StartingTest)
- {
- ulong state = uniCB.State;
- log.DebugFormat("state = {0} {1} {2} {3}",
- (((ulong)state >> 48) & 0xFFFF).ToString("X4"),
- (((ulong)state >> 32) & 0xFFFF).ToString("X4"),
- (((ulong)state >> 16) & 0xFFFF).ToString("X4"),
- ((ulong)state & 0xFFFF).ToString("X4"));
-
- if ((state & (ulong)StatusP.TestInProgress) != 0)
- {
- log.Info("Test started");
- if (delayBeforeFlowRegulation > 0)
- {
- delayStartTime = StateMachine.Time;
- opState = OpState.WaitingBeforeValveMove;
- }
- else
- {
- opState = OpState.StartingFlowRegulation;
- }
- }
- else
- {
- //opState = OpState.ResendCommand;
- }
-
- return Event.None;
- }
- else if (opState == OpState.ResendCommand)
- {
- SendStartCommand();
- opState = OpState.StartingTest;
- return Event.None;
- }
- else if (opState == OpState.WaitingBeforeValveMove)
- {
- if (StateMachine.Time - delayStartTime >= delayBeforeFlowRegulation)
- {
- opState = OpState.StartingFlowRegulation;
- }
- return Event.None;
- }
- else if (opState == OpState.StartingFlowRegulation)
- {
- ///
- /// Done once, issues an appropriate ValveMove(...) command
- ///
- if ((qFrom >= qTo) || (qFrom > maximalFlow) || (qTo <= 0))
- {
- return Event.OpArgumentError;
- }
-
- log.InfoFormat("Run(): rv#={0} flowMtr#={1} TARGET: flowLo={2} flowHi={3}",
- regValve.Idx1, flowMeter.Idx1, qFrom, qTo);
-
- double freqLo = 2000 * qFrom / flowMeter.NominalFlow;
- double freqHi = 2000 * qTo / flowMeter.NominalFlow;
- uniCB.SetFlow(false, regValve.Idx1, 2000 * qFrom / flowMeter.NominalFlow, 2000 * qTo / flowMeter.NominalFlow);
- opState = OpState.OpCompleted;
- return Event.None;
- }
- else if (opState == OpState.OpCompleted)
- {
- return Event.MeasurementStarted;
- }
-
- return Event.None;
- }
-
- /// Stop this operation
- public void Stop() { }
- }
-}
diff --git a/TBF/Rig/ControlBoard/Uni/UniCB.cs b/TBF/Rig/ControlBoard/Uni/UniCB.cs
index 026e39b42..372adb519 100644
--- a/TBF/Rig/ControlBoard/Uni/UniCB.cs
+++ b/TBF/Rig/ControlBoard/Uni/UniCB.cs
@@ -38,7 +38,7 @@ namespace TBF.Rig.ControlBoard.Uni
{
get {
altString.Clear();
- altString.AppendFormat("Stat: {0}.{1}.{2}.{3}\n", (State >> 48) & 0xFF, (State >> 40) & 0xFF, (State >> 32) & 0xFF, Convert.ToUInt32(State & 0xFFFFFFFF).ToString("X6"));
+ altString.AppendFormat("State: {0}.{1}.{2}.{3}\n", (State >> 48) & 0xFF, (State >> 40) & 0xFF, (State >> 32) & 0xFF, Convert.ToUInt32(State & 0xFFFFFFFF).ToString("X6"));
altString.AppendFormat("DI: {0}\n", ToBin40(DigitalInputs));
altString.AppendFormat("DO: {0}\n", ToBin40(((UInt64)Route) >> 8));
altString.AppendFormat("AI0: {0:D3} AI1: {1:D3} AI2: {2:D3} AI3: {3:D3} AI4: {4:D3} AI5: {5:D3}\n",
@@ -483,102 +483,31 @@ namespace TBF.Rig.ControlBoard.Uni
}
///
- /// Start a test, Events: MeasurementStarted
+ /// Start a standing start-stop test
///
- /// Int32 parameter 1
- /// Double parameter 1 (alternative lower flow limit)
- /// Double parameter 2 (alternative upper flow limit)
- /// Operation
- public IOperation StartTestOp(Test test, int iParam = 0, double dParam1 = 0, double dParam2 = 0)
+ /// Operation running a test
+ public IOperation StandingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount)
{
+ return new StandingStartStopTestOp(this, devices, qFrom, qTo, pulsesCount);
+ }
- /// Get total number of pulses
- int totalPulses = Convert.ToInt32(Math.Round(test.Volume / devices.FlowMeter.LtrPerPulse));
+ ///
+ /// Start a flying start-stop test
+ ///
+ /// Operation running a test
+ public IOperation FlyingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount)
+ {
+ return new FlyingStartStopTestOp(this, devices, qFrom, qTo, pulsesCount);
+ }
- /// Get method class string
- string methodClass;
- if (!StateMachine.TestMethod2Class.TryGetValue(test.Name, out methodClass)) return null;
-
- if (methodClass.Contains("TestMethods.Adjustment."))
- {
- return new StartMeasurementOp(this, devices, TestMethods.Synchro, test.Qfrom, test.Qto, totalPulses);
- }
- if (methodClass.Contains("TestMethods.CombinedWithDetection."))
- {
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), dParam1, dParam2, totalPulses);
- }
- if (methodClass == "TestMethods.DiverterTest")
- {
- if (iParam == 0) return null;
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses / iParam);
- }
- if (methodClass == "TestMethods.Dummy")
- {
- }
- if (methodClass == "TestMethods.Endurance")
- {
- return new StartMeasurementOp(this, devices, TestMethods.Synchro, test.Qfrom, test.Qto, totalPulses);
- }
- if (methodClass.Contains("TestMethods.FixedStart."))
- {
- return new StartMeasurementOp(this, devices, TestMethods.Synchro, test.Qfrom, test.Qto, 2 * totalPulses, 10);
- }
- if (methodClass.Contains("TestMethods.FixedStartAdvanced."))
- {
- return new StartMeasurementOp(this, devices, TestMethods.Synchro, test.Qfrom, test.Qto, 2 * totalPulses, 10);
- }
- if (methodClass.Contains("TestMethods.FixedStartDefferedEval."))
- {
- return new StartMeasurementOp(this, devices, TestMethods.Synchro, test.Qfrom, test.Qto, 2 * totalPulses, 10);
- }
- if (methodClass.Contains("TestMethods.FixedStartMassCollDeferredEval."))
- {
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, 2 * totalPulses, 10);
- }
- if (methodClass.Contains("TestMethods.FixedStartMassCollection."))
- {
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.FixedStart), test.Qfrom, test.Qto, 2 * totalPulses, 10);
- }
- if (methodClass.Contains("TestMethods.FixedStartTankCollection."))
- {
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, (totalPulses * 5 / 4), 10);
- }
- if (methodClass.Contains("TestMethods.FlyingStart."))
- {
- return new StartMeasurementOp(this, devices, TestMethods.Synchro, test.Qfrom, test.Qto, totalPulses);
- }
- if (methodClass.Contains("TestMethods.FlyingStartFirstRepetWithMassColl."))
- {
- TestMethods tm = (iParam == 1) ? (TestMethods.Diverter | TestMethods.Synchro) : TestMethods.Synchro;
- return new StartMeasurementOp(this, devices, tm, test.Qfrom, test.Qto, totalPulses);
- }
- if (methodClass.Contains("TestMethods.FlyingStartMassCollComparative."))
- {
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses);
- }
- if (methodClass.Contains("TestMethods.FlyingStartMassCollection."))
- {
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses);
- }
- if (methodClass.Contains("TestMethods.FlyingStartMassCollProlonged."))
- {
- if (iParam == 0) return null;
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses, iParam);
- }
- if (methodClass.Contains("TestMethods.FlyingStartTankCollection."))
- {
- return new StartMeasurementOp(this, devices, (TestMethods.Diverter | TestMethods.Synchro), test.Qfrom, test.Qto, totalPulses);
- }
- if (methodClass == "TestMethods.PulsesTest")
- {
- return new StartMeasurementOp(this, devices, TestMethods.Synchro, test.Qfrom, test.Qto, totalPulses);
- }
- if (methodClass == "TestMethods.PulsesTestManual")
- {
- return new StartMeasurementOp(this, devices, TestMethods.Synchro, test.Qfrom, test.Qto, totalPulses);
- }
-
- return null;
+ ///
+ /// Start a flying start-stop test with diverter
+ ///
+ /// Operation running a test
+ public IOperation FlyingStartStopTestWithDivOp(Test test, double qFrom, double qTo, int pulsesCount,
+ int massPulsesCount = 0, bool readDivTransition = true)
+ {
+ return new FlyingStartStopTestWithDivOp(this, devices, qFrom, qTo, pulsesCount, massPulsesCount, readDivTransition);
}
public IOperation ReadDiverterTransitionOp(bool isStart, Sequences.Statistics plotter, int batchNr, string testName, int repetition)
@@ -756,5 +685,10 @@ namespace TBF.Rig.ControlBoard.Uni
/// TODO
}
+
+ public void SetFiltersPidShortPulses(int[] filters, float pidCoef, int shortPulses)
+ {
+ /// TODO
+ }
}
}
diff --git a/TBF/Rig/Events.cs b/TBF/Rig/Events.cs
index 75bc90168..efec3ad00 100644
--- a/TBF/Rig/Events.cs
+++ b/TBF/Rig/Events.cs
@@ -139,9 +139,13 @@ namespace TBF.Rig
PreviousStopped,
Wait,
ProcedureLoaded,
- MeasurementStarted,
+ StartingTest,
+ TestInProgress,
+ TestPart1InProgress,
+ TestPart2InProgress,
+ TestCompleted,
+ ReadingDivTransition,
ReadAllRegistersDone,
- MeasurementCompleted,
CommandCompleted,
/// At the beginning of cycle when reading info from DB
diff --git a/TBF/Rig/Output/DB/SaveDiverterCorrections/SaveDiverterCorr.cs b/TBF/Rig/Output/DB/SaveDiverterCorrections/SaveDiverterCorr.cs
index 403dc0e76..21599120d 100644
--- a/TBF/Rig/Output/DB/SaveDiverterCorrections/SaveDiverterCorr.cs
+++ b/TBF/Rig/Output/DB/SaveDiverterCorrections/SaveDiverterCorr.cs
@@ -23,7 +23,7 @@ namespace TBF.Rig.Output.DB.SaveDiverterCorrections
public class SaveDiverterCorr : ComponentBase, IOperation, GenericDevices.IResultsWriter
{
private static readonly ILog log = LogManager.GetLogger(typeof(SaveDiverterCorr));
- public override string ToString() { return string.Format("SaveDiverterCorr({0})", Cfg.ToString(1)); }
+ public override string ToString() { return string.Format("SaveDiverterCorr({0})", Cfg.ToString(-1)); }
SaveDiverterCorrCfg myCfg;
@@ -202,7 +202,7 @@ namespace TBF.Rig.Output.DB.SaveDiverterCorrections
for (int div = 1; div <= myCfg.DivertersCount(); div++)
{
string diverterName = myCfg.GetDiverterName(div);
- Elde.Diverter.Diverter diverter = TbfComponents.FindComponent(diverterName) as Elde.Diverter.Diverter;
+ Uni.Diverter.Diverter diverter = TbfComponents.FindComponent(diverterName) as Uni.Diverter.Diverter;
if (diverter != null)
{
diff --git a/TBF/Rig/Output/DB/SaveDiverterCorrections/SaveDiverterCorrCfgCtrl.cs b/TBF/Rig/Output/DB/SaveDiverterCorrections/SaveDiverterCorrCfgCtrl.cs
index ee4b4829c..e78915d21 100644
--- a/TBF/Rig/Output/DB/SaveDiverterCorrections/SaveDiverterCorrCfgCtrl.cs
+++ b/TBF/Rig/Output/DB/SaveDiverterCorrections/SaveDiverterCorrCfgCtrl.cs
@@ -48,7 +48,7 @@ namespace TBF.Rig.Output.DB.SaveDiverterCorrections
///
foreach (var cmpnt in parent.CmpntEntities)
{
- if (TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is TBF.Rig.Elde.Diverter.DiverterFactory)
+ if (TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is TBF.Rig.Uni.Diverter.Factory)
{
diverter1ComboBox.Items.Add(cmpnt.Name);
diverter2ComboBox.Items.Add(cmpnt.Name);
diff --git a/TBF/Rig/Sequences/SequenceBase.cs b/TBF/Rig/Sequences/SequenceBase.cs
index dd9d860f2..280dbef84 100644
--- a/TBF/Rig/Sequences/SequenceBase.cs
+++ b/TBF/Rig/Sequences/SequenceBase.cs
@@ -804,10 +804,10 @@ namespace TBF.Rig.Sequences
/// Set PID coefficient, etc.
- if (StateMachine.ControlBoard is ControlBoard.Legacy.CBoard)
+ if (StateMachine.ControlBoard is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
- (StateMachine.ControlBoard as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, nextPidCoef, (nextShortPulses == 0) ? 0 : 1);
+ (StateMachine.ControlBoard as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, nextPidCoef, (nextShortPulses == 0) ? 0 : 1);
}
/// Set pump power
@@ -1092,7 +1092,7 @@ namespace TBF.Rig.Sequences
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) return Event.Error;
if (TestAndLogUiCmdStop(e)) return Event.UiCmdStop;
- if (e.Contains(Event.MeasurementCompleted) || e.Contains(Event.Next)) return Event.MeasurementCompleted;
+ if (e.Contains(Event.TestCompleted) || e.Contains(Event.Next)) return Event.TestCompleted;
}
while ( (realTest && (outPath.Scale is IScale) && !e.Contains(Event.BalanceDone)) ||
!e.Contains(Event.ReadAllRegistersDone));
diff --git a/TBF/Rig/StateMachine.cs b/TBF/Rig/StateMachine.cs
index 8941effa4..530bc20ee 100644
--- a/TBF/Rig/StateMachine.cs
+++ b/TBF/Rig/StateMachine.cs
@@ -255,7 +255,10 @@ namespace TBF.Rig
ProcessData.OracleDB = cmpnt as Output.DB.SensusOracle.Database;
}
- if (cmpnt is ITestMethod) TestMethod2Class.Add(cmpnt.Name, cmpnt.ClassName);
+ if (cmpnt is ITestMethod)
+ {
+ TestMethod2Class.Add(cmpnt.Name, cmpnt.ClassName);
+ }
if (cmpnt is TestMethods.iPerlCommunication.iPerlHead.IperlHead)
{
@@ -263,7 +266,7 @@ namespace TBF.Rig
}
if (cmpnt is IFlowMeter) SequenceBase.FlowMeters.Add(cmpnt as IFlowMeter);
- if ((cmpnt is IRegValve) && !(cmpnt is Rig.Elde.RegulValveTandem.RegulValveTandem))
+ if ((cmpnt is IRegValve) && !(cmpnt is Rig.Uni.RegValveTandem.RegValveTandem))
{
SequenceBase.RegulValves.Add(cmpnt as IRegValve);
}
diff --git a/TBF/Rig/TestMethods/Adjustment/AdjustmentSeq.cs b/TBF/Rig/TestMethods/Adjustment/AdjustmentSeq.cs
index 21668d155..9b13dd22e 100644
--- a/TBF/Rig/TestMethods/Adjustment/AdjustmentSeq.cs
+++ b/TBF/Rig/TestMethods/Adjustment/AdjustmentSeq.cs
@@ -124,22 +124,21 @@ namespace TBF.Rig.TestMethods.Adjustment
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -347,8 +346,8 @@ namespace TBF.Rig.TestMethods.Adjustment
foreach (var roi in rois) roi.RegisterRoiToCamera();
/// Prepare measurementOperations
- IList measureOperations = new List();
- foreach (var camera in cameras) measureOperations.Add(camera.MeasurementOp());
+ IList cameraMeasurementOps = new List();
+ foreach (var camera in cameras) cameraMeasurementOps.Add(camera.MeasurementOp());
@@ -375,44 +374,35 @@ namespace TBF.Rig.TestMethods.Adjustment
}
else
{
- State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(cBrd.StartTestOp(test))
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
- }
- while (!e.Contains(Event.MeasurementStarted));
-
- /// Measurement loop - preparation
- readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
- queryEnd1 = cBrd.QueryMeasurementEndOp();
-
+ /// Measurement loop preparation
+ int totalPulses = Convert.ToInt32(Math.Round(test.Volume / outPath.FlowMeter.LtrPerPulse));
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
- /// Measurement loop - begin
- while (true)
- {
- //--------------------------------
- switch (ReadRegistersTempPressAmbient(measureOperations, true))
- {
- case Event.Error: { retVal = Event.Error; goto stopTest; }
- case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
- case Event.MeasurementCompleted: goto one_test_completed;
- }
+ /// Measurement loop
+ State.Create(string.Format("{0}({1}) : FlyingStartStopTestOp is running", test.Method, test.Name))
+ .AddOperation(checkUiOp)
+ .AddOperations(readTempPressOps)
+ .AddOperations(cameraMeasurementOps)
+ .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses))
+ .EnterState();
+ do {
+ e = StateMachine.WaitRunDevsRunOps();
+ if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
+ if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
+ if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- RefFrequency.Val = cBrd.RefFrequency;
+ /// Update statistics
+ RefFrequency.Val = cBrd.RefFrequency;
RefFlow.Val = outPath.FlowMeter.ReadFlow();
- UpdateAllStatistics(StateMachine.Time);
+ UpdateAllStatistics(StateMachine.Time);
- Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- }
- /// Measurement loop - end
+ Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
+ Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
+ }
+ while (!e.Contains(Event.TestCompleted) && !e.Contains(Event.Next)); /// 'Next' button is enabled in Debug version only
+
+ /// Measurement loop - end
+ StopRecordingStatistics();
one_test_completed:
diff --git a/TBF/Rig/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs b/TBF/Rig/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs
index caef3f530..febf55734 100644
--- a/TBF/Rig/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs
+++ b/TBF/Rig/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs
@@ -117,23 +117,21 @@ namespace TBF.Rig.TestMethods.CombinedWithDetection
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -570,14 +568,14 @@ namespace TBF.Rig.TestMethods.CombinedWithDetection
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperations(measureOperations)
- .AddOperation(cBrd.StartTestOp(test, 0, qfrom_detected, qto_detected))
+ .AddOperation(cBrd.StartTestOp(test, true, true, false, qfrom_detected, qto_detected, totalPulses, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) goto error;
if (TestAndLogUiCmdStop(test,e)) goto stopTest;
}
- while (!e.Contains(Event.MeasurementStarted));
+ while (!e.Contains(Event.TestInProgress));
///
/// Measurement loop - preparation
@@ -603,7 +601,7 @@ namespace TBF.Rig.TestMethods.CombinedWithDetection
{
case Event.Error: goto error;
case Event.UiCmdStop: goto stopTest;
- case Event.MeasurementCompleted: goto measurement_completed;
+ case Event.TestCompleted: goto measurement_completed;
}
int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
diff --git a/TBF/Rig/TestMethods/DiverterTest/DiverterTestSeq.cs b/TBF/Rig/TestMethods/DiverterTest/DiverterTestSeq.cs
index 64d498315..b0bdf7b3a 100644
--- a/TBF/Rig/TestMethods/DiverterTest/DiverterTestSeq.cs
+++ b/TBF/Rig/TestMethods/DiverterTest/DiverterTestSeq.cs
@@ -115,23 +115,21 @@ namespace TBF.Rig.TestMethods.DiverterTest
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -164,6 +162,17 @@ namespace TBF.Rig.TestMethods.DiverterTest
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
TestStartTime = DateTime.Now;
+ foreach (var rr in sensPath.RegisterReaders)
+ {
+ GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
+ if (readerWithTstName != null)
+ {
+ readerWithTstName.TestName = test.Name;
+ readerWithTstName.TestRepeats = test.Repeats;
+ readerWithTstName.RepetitionNr = repetitionNr;
+ }
+ }
+
//------------------------------------------------
Bridge.OnActivity(this, Strings.Checking_tank_capacity);
@@ -491,9 +500,14 @@ namespace TBF.Rig.TestMethods.DiverterTest
///
/// Diverter test loop
///
+ int remainingPulses = totalPulses;
for (int divRepetNr = 1; divRepetNr <= testParams.DivRepetitions; divRepetNr++)
{
- LogProcessDataHeader(processDataLogger, string.Format("Measurement {0}", divRepetNr + 1));
+ LogProcessDataHeader(processDataLogger, string.Format("Measurement {0}", divRepetNr));
+
+ int remainingRepetitions = testParams.DivRepetitions - divRepetNr + 1;
+ int pulsesNow = (remainingPulses + remainingRepetitions - 1) / remainingRepetitions;
+ remainingPulses -= pulsesNow;
//------------------------------------------------
Bridge.OnActivity(this, Strings.Test_in_progress);
@@ -503,26 +517,14 @@ namespace TBF.Rig.TestMethods.DiverterTest
.AddOperations(readTempPressOps)
.AddOperations(measureOperations)
.AddOperation(processDataLoggingOp)
- .AddOperation(cBrd.StartTestOp(test, testParams.DivRepetitions))
+ .AddOperation(cBrd.StartTestOp(test, true, true, false, test.Qfrom, test.Qto, pulsesNow, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.MeasurementStarted));
-
-
- foreach (var rr in sensPath.RegisterReaders)
- {
- GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
- if (readerWithTstName != null)
- {
- readerWithTstName.TestName = test.Name;
- readerWithTstName.TestRepeats = test.Repeats;
- readerWithTstName.RepetitionNr = repetitionNr;
- }
- }
+ while (!e.Contains(Event.TestInProgress));
/// Measurement loop - preparation
@@ -566,7 +568,7 @@ namespace TBF.Rig.TestMethods.DiverterTest
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- if (e.Contains(Event.MeasurementCompleted)) break;
+ if (e.Contains(Event.TestCompleted)) break;
}
while (!e.Contains(Event.Next)); /// 'Next' button can be used in Debug version
diff --git a/TBF/Rig/TestMethods/Endurance/EnduranceSeq.cs b/TBF/Rig/TestMethods/Endurance/EnduranceSeq.cs
index ba9160e42..c83c71d68 100644
--- a/TBF/Rig/TestMethods/Endurance/EnduranceSeq.cs
+++ b/TBF/Rig/TestMethods/Endurance/EnduranceSeq.cs
@@ -93,23 +93,21 @@ namespace TBF.Rig.TestMethods.Endurance
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -163,6 +161,17 @@ namespace TBF.Rig.TestMethods.Endurance
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
TestStartTime = DateTime.Now;
+ foreach (var rr in sensPath.RegisterReaders)
+ {
+ GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
+ if (readerWithTstName != null)
+ {
+ readerWithTstName.TestName = test.Name;
+ readerWithTstName.TestRepeats = test.Repeats;
+ readerWithTstName.RepetitionNr = repetitionNr;
+ }
+ }
+
//------------------------------------------------
Bridge.OnActivity(this, Strings.Starting_the_pump);
@@ -297,7 +306,7 @@ namespace TBF.Rig.TestMethods.Endurance
.AddOperations(readTempPressOps)
.AddOperations(measureOperations)
.AddOperation(enduranceDataLoggingOp)
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, true, false, false, test.Qfrom, test.Qto, totalPulses, 0))
.AddOperation(processDataLoggingOp)
.EnterState();
do {
@@ -305,19 +314,7 @@ namespace TBF.Rig.TestMethods.Endurance
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.MeasurementStarted));
-
-
- foreach (var rr in sensPath.RegisterReaders)
- {
- GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
- if (readerWithTstName != null)
- {
- readerWithTstName.TestName = test.Name;
- readerWithTstName.TestRepeats = test.Repeats;
- readerWithTstName.RepetitionNr = repetitionNr;
- }
- }
+ while (!e.Contains(Event.TestInProgress));
/// Measurement loop - preparation
@@ -341,7 +338,7 @@ namespace TBF.Rig.TestMethods.Endurance
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- if (e.Contains(Event.MeasurementCompleted)) goto test_completed;
+ if (e.Contains(Event.TestCompleted)) goto test_completed;
//------------------------------------------------
int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
diff --git a/TBF/Rig/TestMethods/FixedStart/FixedStartSeq.cs b/TBF/Rig/TestMethods/FixedStart/FixedStartSeq.cs
index 7390a7d2f..e0a50f769 100644
--- a/TBF/Rig/TestMethods/FixedStart/FixedStartSeq.cs
+++ b/TBF/Rig/TestMethods/FixedStart/FixedStartSeq.cs
@@ -91,23 +91,21 @@ namespace TBF.Rig.TestMethods.FixedStart
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -535,14 +533,14 @@ namespace TBF.Rig.TestMethods.FixedStart
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperation(cBrd.OpenStartValveOp())
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, false, true, true, test.Qfrom, test.Qto, totalPulses, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.MeasurementStarted) || !e.Contains(Event.ValvesSet));
+ while (!e.Contains(Event.TestInProgress) || !e.Contains(Event.ValvesSet));
switchTimeStart = 0.001f * cBrd.ValveOpenCloseTime;
log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);
@@ -568,7 +566,7 @@ namespace TBF.Rig.TestMethods.FixedStart
retVal = Event.UiCmdStop;
goto stopTest;
- case Event.MeasurementCompleted:
+ case Event.TestCompleted:
goto test_completed;
}
diff --git a/TBF/Rig/TestMethods/FixedStartAdvanced/FixedStartAdvancedSeq.cs b/TBF/Rig/TestMethods/FixedStartAdvanced/FixedStartAdvancedSeq.cs
index 4d51125b2..bdbaa0329 100644
--- a/TBF/Rig/TestMethods/FixedStartAdvanced/FixedStartAdvancedSeq.cs
+++ b/TBF/Rig/TestMethods/FixedStartAdvanced/FixedStartAdvancedSeq.cs
@@ -99,23 +99,21 @@ namespace TBF.Rig.TestMethods.FixedStartAdvanced
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -402,14 +400,14 @@ namespace TBF.Rig.TestMethods.FixedStartAdvanced
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperations(measureOperations)
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, false, true, true, test.Qfrom, test.Qto, totalPulses, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.MeasurementStarted));
+ while (!e.Contains(Event.TestInProgress));
State.Create("FixedStartAdvanced : Opening the start/stop valve at the beginning of the fixed start test")
@@ -445,7 +443,7 @@ namespace TBF.Rig.TestMethods.FixedStartAdvanced
retVal = Event.UiCmdStop;
goto stopTest;
- case Event.MeasurementCompleted:
+ case Event.TestCompleted:
goto test_completed;
}
diff --git a/TBF/Rig/TestMethods/FixedStartDeferredEval/FixedStartDeferredEvalSeq.cs b/TBF/Rig/TestMethods/FixedStartDeferredEval/FixedStartDeferredEvalSeq.cs
index 879fc473f..06b0afaf6 100644
--- a/TBF/Rig/TestMethods/FixedStartDeferredEval/FixedStartDeferredEvalSeq.cs
+++ b/TBF/Rig/TestMethods/FixedStartDeferredEval/FixedStartDeferredEvalSeq.cs
@@ -109,23 +109,21 @@ namespace TBF.Rig.TestMethods.FixedStartDeferredEval
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -560,14 +558,14 @@ namespace TBF.Rig.TestMethods.FixedStartDeferredEval
State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, false, true, true, test.Qfrom, test.Qto, totalPulses, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.MeasurementStarted));
+ while (!e.Contains(Event.TestInProgress));
StartTime = (double)StateMachine.Time;
@@ -606,7 +604,7 @@ namespace TBF.Rig.TestMethods.FixedStartDeferredEval
retVal = Event.UiCmdStop;
goto stopTest;
- case Event.MeasurementCompleted:
+ case Event.TestCompleted:
goto test_completed;
}
diff --git a/TBF/Rig/TestMethods/FixedStartMassCollAdvanced/FixedStartMassCollAdvancedSeq.cs b/TBF/Rig/TestMethods/FixedStartMassCollAdvanced/FixedStartMassCollAdvancedSeq.cs
index 69a338bff..ae5e0ee63 100644
--- a/TBF/Rig/TestMethods/FixedStartMassCollAdvanced/FixedStartMassCollAdvancedSeq.cs
+++ b/TBF/Rig/TestMethods/FixedStartMassCollAdvanced/FixedStartMassCollAdvancedSeq.cs
@@ -109,23 +109,21 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollAdvanced
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -498,7 +496,7 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollAdvanced
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperation(scale.ReadMassOp(ref Mass))
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, false, true, true, test.Qfrom, test.Qto, totalPulses, 0))
.AddOperation(cBrd.OpenStartValveOp())
.EnterState();
do {
@@ -506,7 +504,7 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollAdvanced
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.ValvesSet) || !e.Contains(Event.MeasurementStarted));
+ while (!e.Contains(Event.ValvesSet) || !e.Contains(Event.TestInProgress));
switchTimeStart = 0.001f * cBrd.ValveOpenCloseTime;
log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);
@@ -532,7 +530,7 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollAdvanced
retVal = Event.UiCmdStop;
goto stopTest;
- case Event.MeasurementCompleted:
+ case Event.TestCompleted:
goto test_completed;
}
diff --git a/TBF/Rig/TestMethods/FixedStartMassCollDeferredEval/FixedStartMassCollDeferredEvalSeq.cs b/TBF/Rig/TestMethods/FixedStartMassCollDeferredEval/FixedStartMassCollDeferredEvalSeq.cs
index eec10aa5c..bbfe016c6 100644
--- a/TBF/Rig/TestMethods/FixedStartMassCollDeferredEval/FixedStartMassCollDeferredEvalSeq.cs
+++ b/TBF/Rig/TestMethods/FixedStartMassCollDeferredEval/FixedStartMassCollDeferredEvalSeq.cs
@@ -133,23 +133,21 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollDeferredEval
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if (eldeRR != null && eldeRR.Position >= 1 && eldeRR.Position <= 8)
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -671,14 +669,14 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollDeferredEval
State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, false, true, true, test.Qfrom, test.Qto, totalPulses, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.MeasurementStarted));
+ while (!e.Contains(Event.TestInProgress));
StartTime = (double)StateMachine.Time;
@@ -717,7 +715,7 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollDeferredEval
retVal = Event.UiCmdStop;
goto stopTest;
- case Event.MeasurementCompleted:
+ case Event.TestCompleted:
goto test_completed;
}
diff --git a/TBF/Rig/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs b/TBF/Rig/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs
index aad96a08b..6e533dbcd 100644
--- a/TBF/Rig/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs
+++ b/TBF/Rig/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs
@@ -109,23 +109,21 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollection
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -661,14 +659,14 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollection
.AddOperations(readTempPressOps)
.AddOperation(scale.ReadMassOp(ref Mass))
.AddOperation(cBrd.OpenStartValveOp())
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, false, true, true, test.Qfrom, test.Qto, totalPulses, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.ValvesSet) || !e.Contains(Event.MeasurementStarted));
+ while (!e.Contains(Event.ValvesSet) || !e.Contains(Event.TestInProgress));
switchTimeStart = 0.001f * cBrd.ValveOpenCloseTime;
log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);
@@ -694,7 +692,7 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollection
retVal = Event.UiCmdStop;
goto stopTest;
- case Event.MeasurementCompleted:
+ case Event.TestCompleted:
goto test_completed;
}
diff --git a/TBF/Rig/TestMethods/FixedStartTankCollection/FixedStartTankCollectionSeq.cs b/TBF/Rig/TestMethods/FixedStartTankCollection/FixedStartTankCollectionSeq.cs
index f60646a0d..13ec24efe 100644
--- a/TBF/Rig/TestMethods/FixedStartTankCollection/FixedStartTankCollectionSeq.cs
+++ b/TBF/Rig/TestMethods/FixedStartTankCollection/FixedStartTankCollectionSeq.cs
@@ -114,23 +114,21 @@ namespace TBF.Rig.TestMethods.FixedStartTankCollection
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if (eldeRR != null && eldeRR.Position >= 1 && eldeRR.Position <= 8)
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -486,14 +484,14 @@ namespace TBF.Rig.TestMethods.FixedStartTankCollection
State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, false, true, true, test.Qfrom, test.Qto, totalPulses, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.MeasurementStarted));
+ while (!e.Contains(Event.TestInProgress));
StartTime = (double)StateMachine.Time;
@@ -532,7 +530,7 @@ namespace TBF.Rig.TestMethods.FixedStartTankCollection
retVal = Event.UiCmdStop;
goto stopTest;
- case Event.MeasurementCompleted:
+ case Event.TestCompleted:
goto test_completed;
}
diff --git a/TBF/Rig/TestMethods/FlowAdjustment/FlowAdjustmentSeq.cs b/TBF/Rig/TestMethods/FlowAdjustment/FlowAdjustmentSeq.cs
index 5f0c12307..cc68fe70a 100644
--- a/TBF/Rig/TestMethods/FlowAdjustment/FlowAdjustmentSeq.cs
+++ b/TBF/Rig/TestMethods/FlowAdjustment/FlowAdjustmentSeq.cs
@@ -97,8 +97,7 @@ namespace TBF.Rig.TestMethods.FlowAdjustment
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
@@ -106,15 +105,14 @@ namespace TBF.Rig.TestMethods.FlowAdjustment
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
diff --git a/TBF/Rig/TestMethods/FlyingStart/FlyingStartSeq.cs b/TBF/Rig/TestMethods/FlyingStart/FlyingStartSeq.cs
index 1f25ee3e7..73c6507ca 100644
--- a/TBF/Rig/TestMethods/FlyingStart/FlyingStartSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStart/FlyingStartSeq.cs
@@ -98,22 +98,22 @@ namespace TBF.Rig.TestMethods.FlyingStart
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
-
- if (sensPath != null && sensPath.RegisterReaders != null)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
- foreach (var rr in sensPath.RegisterReaders)
+ int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
+ if (sensPath != null && sensPath.RegisterReaders != null)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ foreach (var rr in sensPath.RegisterReaders)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
+ {
+ filters[rrPls.Position - 1] = rrPls.Filter;
+ }
}
}
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
- //cBrd.SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
-
IList readTempPressOps = new List();
if (benchPath.TempMtrUp != null) readTempPressOps.Add(benchPath.TempMtrUp.ReadTempOp(ref TempUp));
@@ -148,6 +148,17 @@ namespace TBF.Rig.TestMethods.FlyingStart
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
TestStartTime = DateTime.Now;
+ foreach (var rr in sensPath.RegisterReaders)
+ {
+ GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
+ if (readerWithTstName != null)
+ {
+ readerWithTstName.TestName = test.Name;
+ readerWithTstName.TestRepeats = test.Repeats;
+ readerWithTstName.RepetitionNr = repetitionNr;
+ }
+ }
+
///
/// Optionally display prompt to emerge temperature meters to appropriate baths for heat meters test
///
@@ -342,7 +353,6 @@ namespace TBF.Rig.TestMethods.FlyingStart
temperature_set:
-
///
/// Prepare cameras, ROI-s and measurementOperations
///
@@ -373,82 +383,49 @@ namespace TBF.Rig.TestMethods.FlyingStart
foreach (var roi in rois) roi.RegisterRoiToCamera();
/// Prepare measurementOperations
- IList measureOperations = new List();
- foreach (var camera in cameras) measureOperations.Add(camera.MeasurementOp());
-
+ IList cameraMeasurementOps = new List();
+ foreach (var camera in cameras) cameraMeasurementOps.Add(camera.MeasurementOp());
//------------------------------------------------
Bridge.OnActivity(this, Strings.Test_in_progress);
//------------------------------------------------
- State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
+
+ /// Measurement loop preparation
+ int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
+ int remainingTime;
+ StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
+
+ /// Measurement loop
+ State.Create(string.Format("{0}({1}) : FlyingStartStopTestOp is running", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperations(cameraMeasurementOps)
+ .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses))
.AddOperation(processDataLoggingOp)
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
- }
- while (!e.Contains(Event.MeasurementStarted));
+ if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
+ if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
+ if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
+ /// Show remaining time
+ if ((remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0)) > 60)
+ Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
+ else
+ Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
- foreach (var rr in sensPath.RegisterReaders)
- {
- GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
- if (readerWithTstName != null)
- {
- readerWithTstName.TestName = test.Name;
- readerWithTstName.TestRepeats = test.Repeats;
- readerWithTstName.RepetitionNr = repetitionNr;
- }
- }
-
-
- /// Measurement loop - preparation
- readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
- queryEnd1 = cBrd.QueryMeasurementEndOp();
-
- int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
- StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
-
- /// Measurement loop - begin
- State.Create(string.Format("{0}({1}) : Read water meters", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(readRegistersOp)
- .AddOperation(queryEnd1)
- .AddOperation(processDataLoggingOp)
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- if (e.Contains(Event.MeasurementCompleted)) goto test_completed;
-
- //------------------------------------------------
- int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
- if (remainingTime > 60)
- {
- Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
- }
- else
- {
- Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
- }
- //------------------------------------------------
-
+ /// Update statistics
RefFrequency.Val = cBrd.RefFrequency;
RefFlow.Val = outPath.FlowMeter.ReadFlow();
+ UpdateAllStatistics(StateMachine.Time);
- UpdateAllStatistics(StateMachine.Time);
-
+ #region Heat meters
+
if (heatMetersTestParams != null)
{
+ /// Update heatmeter volume and energy values
if (lastEnergyUpdateTime == 0)
{
lastEnergyUpdateTime = StateMachine.Time;
@@ -456,8 +433,8 @@ namespace TBF.Rig.TestMethods.FlyingStart
else
{
//double deltaTime = (double)(StateMachine.Time - lastEnergyUpdateTime);
- double T_in = (TempRefHi1.Val + TempRefHi2.Val) / 2; /// [°C]
- double T_out = (TempRefLo1.Val + TempRefLo2.Val) / 2; /// [°C]
+ double T_in = (TempRefHi1.Val + TempRefHi2.Val) / 2; /// [°C]
+ double T_out = (TempRefLo1.Val + TempRefLo2.Val) / 2; /// [°C]
double deltaVolume = LtrPerRefPulse * RefPulsesDelta; /// [l]
double deltaEnergy = (0.001 * deltaVolume) * (T_in - T_out) * Config.Formulas.HeatCoefficientWater(16, T_in, T_out, heatMetersTestParams.FlowMeasuredAtHiTempPipe); /// [J] = [m3] * [K] * [J/(m3 K)]
Energy.Update(deltaEnergy);
@@ -466,15 +443,15 @@ namespace TBF.Rig.TestMethods.FlyingStart
}
}
- Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- }
- while (true);
- /// Measurement loop - end
+ #endregion
- test_completed:
+ Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
+ Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
+ }
+ while (!e.Contains(Event.TestCompleted) && !e.Contains(Event.Next)); /// 'Next' button is enabled in Debug version only
- StopRecordingStatistics();
+ /// Measurement loop end
+ StopRecordingStatistics();
//------------------------------------------------
Bridge.OnActivity(this, Strings.Test_completed);
diff --git a/TBF/Rig/TestMethods/FlyingStartFirstRepetWithMassColl/FlyingStartFirstRepetWithMassCollSeq.cs b/TBF/Rig/TestMethods/FlyingStartFirstRepetWithMassColl/FlyingStartFirstRepetWithMassCollSeq.cs
index af2f31feb..875365070 100644
--- a/TBF/Rig/TestMethods/FlyingStartFirstRepetWithMassColl/FlyingStartFirstRepetWithMassCollSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartFirstRepetWithMassColl/FlyingStartFirstRepetWithMassCollSeq.cs
@@ -24,8 +24,7 @@ namespace TBF.Rig.TestMethods.FlyingStartFirstRepetWithMassColl
/// true when capabilities of devices are OK
public static bool CheckDeviceCaps(Config.Entities.Test test, OutputPath devices, out string message)
{
- if (!(StateMachine.ControlBoard is ControlBoard.Legacy.CBoard) &&
- !(StateMachine.ControlBoard is ControlBoard.Uni.UniCB))
+ if (!(StateMachine.ControlBoard is ControlBoard.Uni.UniCB))
{
/// Control board does not support this method
message = string.Format("{0}: {1}", test.Name, Strings.Test_bench_does_not_suport_selected_test_method);
@@ -92,6 +91,7 @@ namespace TBF.Rig.TestMethods.FlyingStartFirstRepetWithMassColl
return Simulate(test, repetitionNr, isLastRepetition, singleTestParams, compoundTestParams, heatMetersTestParams);
}
+ TBF.Rig.ControlBoard.Uni.UniCB cBrd = StateMachine.ControlBoard as TBF.Rig.ControlBoard.Uni.UniCB;
IScale scale = outPath.Scale as IScale;
if (scale == null)
@@ -124,29 +124,26 @@ namespace TBF.Rig.TestMethods.FlyingStartFirstRepetWithMassColl
IList e; /// Events from currently running operations
Event retVal = Event.Done;
- TBF.Rig.ControlBoard.IControlBoard cBrd = StateMachine.ControlBoard;
int tMass1 = 0;
int tMass2 = 0;
checkUiOp = new Operations.CheckUIOp(true);
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -189,6 +186,17 @@ namespace TBF.Rig.TestMethods.FlyingStartFirstRepetWithMassColl
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
TestStartTime = DateTime.Now;
+ foreach (var rr in sensPath.RegisterReaders)
+ {
+ GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
+ if (readerWithTstName != null)
+ {
+ readerWithTstName.TestName = test.Name;
+ readerWithTstName.TestRepeats = test.Repeats;
+ readerWithTstName.RepetitionNr = repetitionNr;
+ }
+ }
+
bool drainTheTank = (repetitionNr == 1) ? test.DoDraining : false;
if (repetitionNr == 1)
@@ -475,8 +483,8 @@ namespace TBF.Rig.TestMethods.FlyingStartFirstRepetWithMassColl
foreach (var roi in rois) roi.RegisterRoiToCamera();
/// Prepare measurementOperations
- IList measureOperations = new List();
- foreach (var camera in cameras) measureOperations.Add(camera.MeasurementOp());
+ IList cameraMeasurementOps = new List();
+ foreach (var camera in cameras) cameraMeasurementOps.Add(camera.MeasurementOp());
if (repetitionNr == 1)
@@ -541,7 +549,7 @@ namespace TBF.Rig.TestMethods.FlyingStartFirstRepetWithMassColl
State.Create(string.Format("{0}({1}) : Measuring the start mass", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
+ .AddOperations(cameraMeasurementOps)
.AddOperation(scale.ReadStableMassOp(ref StartMass, test.MassRepeats, test.MassSpread, test.MassMethod))
.AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec))
.AddOperation(processDataLoggingOp)
@@ -571,76 +579,43 @@ namespace TBF.Rig.TestMethods.FlyingStartFirstRepetWithMassColl
//------------------------------------------------
Bridge.OnActivity(this, Strings.Test_in_progress);
//------------------------------------------------
- State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(processDataLoggingOp)
- .AddOperation(cBrd.StartTestOp(test, repetitionNr))
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
- }
- while (!e.Contains(Event.MeasurementStarted));
-
- foreach (var rr in sensPath.RegisterReaders)
- {
- GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
- if (readerWithTstName != null)
- {
- readerWithTstName.TestName = test.Name;
- readerWithTstName.TestRepeats = test.Repeats;
- readerWithTstName.RepetitionNr = repetitionNr;
- }
- }
-
-
- /// Measurement loop - preparation
- readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
- queryEnd1 = cBrd.QueryMeasurementEndOp(); /// ???
-
- int estimtdEndTime = StateMachine.Time + (int)((repetitionNr == 1) ? test.TestTime : (test.TestTime * nextTestVolume / test.Volume));
+ /// Measurement loop preparation
+ int estimtdEndTime = StateMachine.Time + (int)((repetitionNr == 1) ? test.TestTime : (test.TestTime * nextTestVolume / test.Volume));
+ int remainingTime;
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
- /// Measurement loop - begin
- State.Create(string.Format("{0}({1}) : Reading watermeters", test.Method, test.Name))
+ /// Measurement loop
+ State.Create(string.Format("{0}({1}) : FlyingStartStopTest[WithDiv]Op", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(readRegistersOp)
- .AddOperation((repetitionNr == 1) ? scale.ReadMassOp(ref Mass) : null)
- .AddOperation((repetitionNr == 1) ? cBrd.ReadDiverterTransitionOp(true, DiverterStart, BatchRslts.Batch.BatchNr, test.Name, repetitionNr) : null)
- .AddOperation(queryEnd1)
- .AddOperation(processDataLoggingOp)
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- if (e.Contains(Event.MeasurementCompleted)) goto test_completed;
+ .AddOperations(cameraMeasurementOps)
+ .AddOperation((repetitionNr == 1) ? cBrd.FlyingStartStopTestWithDivOp(test, test.Qfrom, test.Qto, totalPulses)
+ : cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses))
+ .AddOperation(processDataLoggingOp)
+ .EnterState();
+ do {
+ e = StateMachine.WaitRunDevsRunOps();
+ if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
+ if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
+ if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- //------------------------------------------------
- int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
- if (remainingTime > 60)
- {
+ /// Show remaining time
+ if ((remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0)) > 60)
Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
- }
else
- {
Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
- }
- //------------------------------------------------
+ /// Update statistics
RefFrequency.Val = cBrd.RefFrequency;
RefFlow.Val = outPath.FlowMeter.ReadFlow();
-
UpdateAllStatistics(StateMachine.Time);
+ #region Heat meters
+
if (heatMetersTestParams != null)
{
+ /// Update heatmeter volume and energy values
if (lastEnergyUpdateTime == 0)
{
lastEnergyUpdateTime = StateMachine.Time;
@@ -658,29 +633,16 @@ namespace TBF.Rig.TestMethods.FlyingStartFirstRepetWithMassColl
}
}
+ #endregion
+
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
}
- while (!e.Contains(Event.Next)); /// 'Next' button can be used in Debug version
-
- /// Measurement loop - end
-
- test_completed:
+ while (!e.Contains(Event.TestCompleted) && !e.Contains(Event.Next)); /// 'Next' button is enabled in Debug version only
+ /// Measurement loop end
StopRecordingStatistics();
- State.Create(string.Format("{0}({1}) : Stopping flow regulation", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperation(cBrd.StopFlowRegulationOp())
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- }
- while (!e.Contains(Event.FlowRegulationStopped));
-
if (repetitionNr == 1)
{
///
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollComparative/FlyingStartMassCollComparativeSeq.cs b/TBF/Rig/TestMethods/FlyingStartMassCollComparative/FlyingStartMassCollComparativeSeq.cs
index 2e0ac759f..310691a20 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollComparative/FlyingStartMassCollComparativeSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollComparative/FlyingStartMassCollComparativeSeq.cs
@@ -94,6 +94,8 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
return new List { Event.ConfigurationError };
}
+ TBF.Rig.ControlBoard.Uni.UniCB cBrd = StateMachine.ControlBoard as TBF.Rig.ControlBoard.Uni.UniCB;
+
int rangeIx = 0; /// Default range, used for non-Elde flowmeters
if (outPath.FlowMeter is Uni.FlowMeter.FlowMeter)
{
@@ -144,29 +146,26 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
IList e; /// Events from currently running operations
Event retVal = Event.Done;
- TBF.Rig.ControlBoard.IControlBoard cBrd = StateMachine.ControlBoard;
int tMass1 = 0;
int tMass2 = 0;
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -203,6 +202,17 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
TestStartTime = DateTime.Now;
+ foreach (var rr in sensPath.RegisterReaders)
+ {
+ GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
+ if (readerWithTstName != null)
+ {
+ readerWithTstName.TestName = test.Name;
+ readerWithTstName.TestRepeats = test.Repeats;
+ readerWithTstName.RepetitionNr = repetitionNr;
+ }
+ }
+
//------------------------------------------------
Bridge.OnActivity(this, Strings.Checking_tank_capacity);
@@ -457,7 +467,6 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
temperature_set:
-
///
/// Prepare cameras, ROI-s and measurementOperations
///
@@ -488,8 +497,8 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
foreach (var roi in rois) roi.RegisterRoiToCamera();
/// Prepare measurementOperations
- IList measureOperations = new List();
- foreach (var camera in cameras) measureOperations.Add(camera.MeasurementOp());
+ IList cameraMeasurementOps = new List();
+ foreach (var camera in cameras) cameraMeasurementOps.Add(camera.MeasurementOp());
if (drainTheTank)
@@ -571,7 +580,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
State.Create(string.Format("{0}({1}) : Measuring the reference mass", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
+ .AddOperations(cameraMeasurementOps)
.AddOperation(scale.ReadStableMassOp(ref measuredRefMass, test.MassRepeats, test.MassSpread, test.MassMethod))
.AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec))
.AddOperation(processDataLoggingOp)
@@ -639,7 +648,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
State.Create(string.Format("{0}({1}) : Measuring the start mass", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
+ .AddOperations(cameraMeasurementOps)
.AddOperation(scale.ReadStableMassOp(ref StartMass, test.MassRepeats, test.MassSpread, test.MassMethod))
.AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec))
.AddOperation(processDataLoggingOp)
@@ -679,72 +688,38 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
//------------------------------------------------
Bridge.OnActivity(this, Strings.Test_in_progress);
//------------------------------------------------
- State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(processDataLoggingOp)
- .AddOperation(cBrd.StartTestOp(test))
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
- }
- while (!e.Contains(Event.MeasurementStarted));
-
- foreach (var rr in sensPath.RegisterReaders)
- {
- GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
- if (readerWithTstName != null)
- {
- readerWithTstName.TestName = test.Name;
- readerWithTstName.TestRepeats = test.Repeats;
- readerWithTstName.RepetitionNr = repetitionNr;
- }
- }
-
-
- /// Measurement loop - preparation
- readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
-
- int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
+ /// Measurement loop preparation
+ int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
+ int remainingTime;
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
- /// Measurement loop - begin
- State.Create(string.Format("{0}({1}) : Reading watermeters", test.Method, test.Name))
- .AddOperation(checkUiOp)
+ /// Measurement loop
+ State.Create(string.Format("{0}({1}) : FlyingStartStopTestWithDivOp is running", test.Method, test.Name))
+ .AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(readRegistersOp)
- .AddOperation(scale.ReadMassOp(ref Mass))
- .AddOperation(cBrd.ReadDiverterTransitionOp(true, DiverterStart, BatchRslts.Batch.BatchNr, test.Name, repetitionNr))
- .AddOperation(cBrd.QueryMeasurementEndOp())
+ .AddOperations(cameraMeasurementOps)
+ .AddOperation(cBrd.FlyingStartStopTestWithDivOp(test, test.Qfrom, test.Qto, totalPulses))
.AddOperation(processDataLoggingOp)
.EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- if (e.Contains(Event.MeasurementCompleted)) goto test_completed;
+ do {
+ e = StateMachine.WaitRunDevsRunOps();
+ if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
+ if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
+ if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- //------------------------------------------------
- int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
- if (remainingTime > 60)
- {
- Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
- }
- else
- {
- Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
- }
- //------------------------------------------------
+ /// Show remaining time
+ if ((remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0)) > 60)
+ Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
+ else
+ Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
+ /// Update statistics
RefFrequency.Val = cBrd.RefFrequency;
RefFlow.Val = outPath.FlowMeter.ReadFlow();
+ UpdateAllStatistics(StateMachine.Time);
- UpdateAllStatistics(StateMachine.Time);
+ #region Heat meters
if (heatMetersTestParams != null)
{
@@ -765,28 +740,15 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
}
}
- Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
+ #endregion
+
+ Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- }
- while (!e.Contains(Event.Next)); /// 'Next' button can be used in Debug version
-
- /// Measurement loop - end
-
- test_completed:
-
- StopRecordingStatistics();
-
- State.Create(string.Format("{0}({1}) : Stopping flow regulation", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperation(cBrd.StopFlowRegulationOp())
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.FlowRegulationStopped));
+ while (!e.Contains(Event.TestCompleted) && !e.Contains(Event.Next)); /// 'Next' button is enabled in Debug version only
+
+ /// Measurement loop end
+ StopRecordingStatistics();
///
/// (Berlin:) Water is stopped immediately after the test and before the 2nd mass measurement in case:
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollProlonged/FlyingStartMassCollProlongedSeq.cs b/TBF/Rig/TestMethods/FlyingStartMassCollProlonged/FlyingStartMassCollProlongedSeq.cs
index e31873588..c831f6f76 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollProlonged/FlyingStartMassCollProlongedSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollProlonged/FlyingStartMassCollProlongedSeq.cs
@@ -83,7 +83,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
return Simulate(test, repetitionNr, isLastRepetition, singleTestParams, compoundTestParams, heatMetersTestParams);
}
- ControlBoard.IControlBoard cBrd = StateMachine.ControlBoard;
+ ControlBoard.Uni.UniCB cBrd = StateMachine.ControlBoard as ControlBoard.Uni.UniCB;
IScale scale = outPath.Scale as IScale;
int rangeIx = 0; /// Default range, used for non-Elde flowmeters
@@ -127,23 +127,21 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -183,6 +181,17 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
TestStartTime = DateTime.Now;
+ foreach (var rr in sensPath.RegisterReaders)
+ {
+ GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
+ if (readerWithTstName != null)
+ {
+ readerWithTstName.TestName = test.Name;
+ readerWithTstName.TestRepeats = test.Repeats;
+ readerWithTstName.RepetitionNr = repetitionNr;
+ }
+ }
+
//------------------------------------------------
Bridge.OnActivity(this, Strings.Checking_tank_capacity);
@@ -467,9 +476,9 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
/// Register ROI-parameters to cameras
foreach (var roi in rois) roi.RegisterRoiToCamera();
- /// Prepare measurementOperations
- IList cameraMeasurementOperations = new List();
- foreach (var camera in cameras) cameraMeasurementOperations.Add(camera.MeasurementOp());
+ /// Prepare camera measurement operations
+ IList cameraMeasurementOps = new List();
+ foreach (var camera in cameras) cameraMeasurementOps.Add(camera.MeasurementOp());
if (drainTheTank)
@@ -532,7 +541,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
State.Create(string.Format("{0}({1}) : Measuring the start mass", test.Method, test.Name))
.AddOperation(checkUiOp)
- .AddOperations(cameraMeasurementOperations)
+ .AddOperations(cameraMeasurementOps)
.AddOperations(readTempPressOps)
.AddOperation(scale.ReadStableMassOp(ref StartMass, test.MassRepeats, test.MassSpread, test.MassMethod))
.AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec))
@@ -562,93 +571,68 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
//------------------------------------------------
Bridge.OnActivity(this, Strings.Test_in_progress);
//------------------------------------------------
- State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperations(cameraMeasurementOperations)
- .AddOperation(processDataLoggingOp)
- .AddOperation(cBrd.StartTestOp(test, targetMassPulses, test.Qfrom, test.Qto))
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
- }
- while (!e.Contains(Event.MeasurementStarted));
-
- foreach (var rr in sensPath.RegisterReaders)
- {
- GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
- if (readerWithTstName != null)
- {
- readerWithTstName.TestName = test.Name;
- readerWithTstName.TestRepeats = test.Repeats;
- readerWithTstName.RepetitionNr = repetitionNr;
- }
- }
-
- ///
- /// Measurement loop - preparation
- ///
+ /// Measurement loop preparation
int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
+ int remainingTime;
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
- bool isMeasurementCompleted = false;
- IList measurementCompletedOperations = new List();
- measurementCompletedOperations.Add(checkUiOp);
- foreach (var op in readTempPressOps) measurementCompletedOperations.Add(op);
- measurementCompletedOperations.Add(processDataLoggingOp);
+ bool isTestPart2Completed = false;
+ ///
+ var prolongedTest = cBrd.FlyingStartStopTestWithDivOp(test, test.Qfrom, test.Qto, targetTotalPulses, targetMassPulses);
- IList measurementLoopOperations = new List();
- foreach (var op in measurementCompletedOperations) measurementLoopOperations.Add(op);
- foreach (var op in cameraMeasurementOperations) measurementLoopOperations.Add(op);
- measurementLoopOperations.Add(new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders));
- measurementLoopOperations.Add(cBrd.QueryMeasurementEndOp()); /// Event.MeasurementCompleted
+ IList testInProgressOps = new List();
+ testInProgressOps.Add(checkUiOp);
+ foreach (var op in readTempPressOps)
+ testInProgressOps.Add(op);
+ foreach (var op in cameraMeasurementOps)
+ testInProgressOps.Add(op);
+ testInProgressOps.Add(prolongedTest); /// Event.MeasurementCompleted
+ testInProgressOps.Add(processDataLoggingOp);
- IOperation readMassOp = scale.ReadMassOp(ref Mass);
+ IList testCompletedOps = new List();
+ testCompletedOps.Add(checkUiOp);
+ foreach (var op in readTempPressOps)
+ testCompletedOps.Add(op);
+ testCompletedOps.Add(processDataLoggingOp);
/// Measurement loop - 1st part
- State.Create(string.Format("{0}({1}) : Reading watermeters", test.Method, test.Name))
- .AddOperations(measurementLoopOperations)
- .AddOperation(readMassOp)
- .AddOperation(cBrd.ReadDiverterTransitionOp(true, DiverterStart, BatchRslts.Batch.BatchNr, test.Name, repetitionNr))
- .AddOperation(new TBF.Rig.Elde.Diverter.ReadDiverterStateOp(cBrd.Devices.Diverter))
+ State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
+ .AddOperations(testInProgressOps)
.EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- if (e.Contains(Event.MeasurementCompleted)) { retVal = Event.Error; goto stopTest; }
+ do {
+ e = StateMachine.WaitRunDevsRunOps();
+ if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
+ if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
+ if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
+
DoInsideMeasurementLoop(cBrd, heatMetersTestParams, test, repetitionNr, estimtdEndTime);
}
- while (!e.Contains(Event.ToSink) && !e.Contains(Event.Next)); /// Proceed to 2nd part of the measurement loop when diverter turns back to sink
- /// 'Next' button can be used in Debug version
+ /// Proceed to 2nd part of test when diverter turns back to sink, 'Next' button can be used in Debug version
+ while (!e.Contains(Event.TestPart2InProgress) || !e.Contains(Event.TestCompleted) && !e.Contains(Event.Next));
+
///
/// Waiting before the 2nd mass measurement
///
bool waitingBeforeEndMassMeasurementCompleted = false;
- IOperation readDiverterTransitionOp = cBrd.ReadDiverterTransitionOp(false, DiverterEnd, BatchRslts.Batch.BatchNr, test.Name, repetitionNr);
IOperation stop2MassTimerOp = new Operations.TimerOp(test.TimeStop2Mass);
do {
State.Create(string.Format("{0}({1}) : Waiting before the 2nd mass measurement", test.Method, test.Name))
- .AddOperations(isMeasurementCompleted ? measurementCompletedOperations : measurementLoopOperations)
- .AddOperation(readMassOp)
- .AddOperation(readDiverterTransitionOp)
+ .AddOperations(isTestPart2Completed ? testCompletedOps : testInProgressOps)
.AddOperation(stop2MassTimerOp)
.EnterState();
- if (!isMeasurementCompleted)
+ if (!isTestPart2Completed)
{
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- if (e.Contains(Event.MeasurementCompleted)) isMeasurementCompleted = true;
+ if (e.Contains(Event.TestCompleted)) isTestPart2Completed = true;
waitingBeforeEndMassMeasurementCompleted = (e.Contains(Event.TimerExpired) && e.Contains(Event.BalanceDone));
DoInsideMeasurementLoop(cBrd, heatMetersTestParams, test, repetitionNr, estimtdEndTime);
}
- while (!isMeasurementCompleted && !waitingBeforeEndMassMeasurementCompleted);
+ while (!isTestPart2Completed && !waitingBeforeEndMassMeasurementCompleted);
}
else
{
@@ -663,8 +647,10 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
}
while (!waitingBeforeEndMassMeasurementCompleted);
- if (heatMetersPath == null) LogProcessDataHeader(processDataLogger, "End mass");
- else LogProcessDataHeaderHeatMeters(processDataLogger, "End mass");
+ if (heatMetersPath == null)
+ LogProcessDataHeader(processDataLogger, "End mass");
+ else
+ LogProcessDataHeaderHeatMeters(processDataLogger, "End mass");
///
/// Measuring the end mass
@@ -676,12 +662,12 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
do
{
State.Create(string.Format("{0}({1}) : Measuring the end mass", test.Method, test.Name))
- .AddOperations(isMeasurementCompleted ? measurementCompletedOperations : measurementLoopOperations)
+ .AddOperations(isTestPart2Completed ? testCompletedOps : testInProgressOps)
.AddOperation(readStableMassOp)
.AddOperation(massMsrmntTimerOp)
.EnterState();
- if (!isMeasurementCompleted)
+ if (!isTestPart2Completed)
{
do {
e = StateMachine.WaitRunDevsRunOps();
@@ -693,11 +679,11 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
retVal = Event.RecoverableError;
goto stopTest;
}
- if (e.Contains(Event.MeasurementCompleted)) isMeasurementCompleted = true;
+ if (e.Contains(Event.TestCompleted)) isTestPart2Completed = true;
measuringEndMassCompleted = e.Contains(Event.BalanceDone);
DoInsideMeasurementLoop(cBrd, heatMetersTestParams, test, repetitionNr, estimtdEndTime, false);
}
- while (!isMeasurementCompleted && !measuringEndMassCompleted);
+ while (!isTestPart2Completed && !measuringEndMassCompleted);
}
else
{
@@ -731,22 +717,21 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
bool openingDrainValveCompleted = false;
do {
State.Create(string.Format("{0}({1}) : Open the drain valve", test.Method, test.Name))
- .AddOperations(isMeasurementCompleted ? measurementCompletedOperations : measurementLoopOperations)
+ .AddOperations(isTestPart2Completed ? testCompletedOps : testInProgressOps)
.AddOperation(setValvesOp)
- .AddOperation(readMassOp)
.EnterState();
- if (!isMeasurementCompleted)
+ if (!isTestPart2Completed)
{
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- if (e.Contains(Event.MeasurementCompleted)) isMeasurementCompleted = true;
+ if (e.Contains(Event.TestCompleted)) isTestPart2Completed = true;
openingDrainValveCompleted = !e.Contains(Event.ValvesBusy);
DoInsideMeasurementLoop(cBrd, heatMetersTestParams, test, repetitionNr, estimtdEndTime);
}
- while (!isMeasurementCompleted && !openingDrainValveCompleted);
+ while (!isTestPart2Completed && !openingDrainValveCompleted);
}
else
{
@@ -762,14 +747,13 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
while (!openingDrainValveCompleted);
}
- if (!isMeasurementCompleted)
+ if (!isTestPart2Completed)
{
///
/// Measurement loop - 2nd part, diverter is in state 'To sink'
///
State.Create(string.Format("{0}({1}) : Reading watermeters", test.Method, test.Name))
- .AddOperations(measurementLoopOperations)
- .AddOperation(readMassOp)
+ .AddOperations(testInProgressOps)
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
@@ -777,7 +761,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
DoInsideMeasurementLoop(cBrd, heatMetersTestParams, test, repetitionNr, estimtdEndTime);
}
- while (!e.Contains(Event.MeasurementCompleted) && !e.Contains(Event.Next)); /// Quit the measurement loop when there is Event.MeasurementCompleted
+ while (!e.Contains(Event.TestCompleted) && !e.Contains(Event.Next)); /// Quit the measurement loop when there is Event.MeasurementCompleted
/// 'Next' button can be used in Debug version
}
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs
index b45be9626..ba99c4157 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs
@@ -125,21 +125,22 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
-
- int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
- if (sensPath != null && sensPath.RegisterReaders != null)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
- foreach (var rr in sensPath.RegisterReaders)
+ int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
+ if (sensPath != null && sensPath.RegisterReaders != null)
{
- IRegReaderPulses uniRR = rr as IRegReaderPulses;
- if ((uniRR != null) && (uniRR.Position >= 1) && (uniRR.Position <= 8))
+ foreach (var rr in sensPath.RegisterReaders)
{
- filters[uniRR.Position - 1] = uniRR.Filter;
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
+ {
+ filters[rrPls.Position - 1] = rrPls.Filter;
+ }
}
}
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
- //cBrd.SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
-
IList readTempPressOps = new List();
if(benchPath.TempMtrUp != null) readTempPressOps.Add(benchPath.TempMtrUp.ReadTempOp(ref TempUp));
@@ -158,6 +159,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
//====================================
loop:
+
/// Read pressure and temperature once before calling Bridge.OnTestSelected(...)
State.Create(string.Format("{0}({1}) : Measuring process data", test.Method, test.Name))
.AddOperation(checkUiOp)
@@ -175,6 +177,17 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
TestStartTime = DateTime.Now;
+ foreach (var rr in sensPath.RegisterReaders)
+ {
+ GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
+ if (readerWithTstName != null)
+ {
+ readerWithTstName.TestName = test.Name;
+ readerWithTstName.TestRepeats = test.Repeats;
+ readerWithTstName.RepetitionNr = repetitionNr;
+ }
+ }
+
//------------------------------------------------
Bridge.OnActivity(this, Strings.Checking_tank_capacity);
@@ -460,8 +473,8 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
foreach (var roi in rois) roi.RegisterRoiToCamera();
/// Prepare measurementOperations
- IList measureOperations = new List();
- foreach (var camera in cameras) measureOperations.Add(camera.MeasurementOp());
+ IList cameraMeasurementOps = new List();
+ foreach (var camera in cameras) cameraMeasurementOps.Add(camera.MeasurementOp());
if (drainTheTank)
@@ -524,7 +537,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
State.Create(string.Format("{0}({1}) : Measuring the start mass", test.Method, test.Name))
.AddOperation(checkUiOp)
- .AddOperations(measureOperations)
+ .AddOperations(cameraMeasurementOps)
.AddOperation(processDataLoggingOp)
.AddOperation(scale.ReadStableMassOp(ref StartMass, test.MassRepeats, test.MassSpread, test.MassMethod))
.AddOperations(readTempPressOps)
@@ -548,81 +561,50 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
log.WarnFormat("Start mass = {0}kg", StartMass);
- if (heatMetersPath == null) LogProcessDataHeader(processDataLogger, "Measurement");
- else LogProcessDataHeaderHeatMeters(processDataLogger, "Measurement");
+ if (heatMetersPath == null)
+ LogProcessDataHeader(processDataLogger, "Measurement");
+ else
+ LogProcessDataHeaderHeatMeters(processDataLogger, "Measurement");
//------------------------------------------------
Bridge.OnActivity(this, Strings.Test_in_progress);
//------------------------------------------------
- State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(processDataLoggingOp)
- .AddOperation(cBrd.StartTestOp(test))
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
- }
- while (!e.Contains(Event.MeasurementStarted));
-
-
- foreach (var rr in sensPath.RegisterReaders)
- {
- GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
- if (readerWithTstName != null)
- {
- readerWithTstName.TestName = test.Name;
- readerWithTstName.TestRepeats = test.Repeats;
- readerWithTstName.RepetitionNr = repetitionNr;
- }
- }
-
-
- /// Measurement loop - preparation
- readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
-
- int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
+
+ /// Measurement loop preparation
+ int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
+ int remainingTime;
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
- /// Measurement loop - begin
- State.Create(string.Format("{0}({1}) : Reading watermeters", test.Method, test.Name))
- .AddOperation(checkUiOp)
+ /// Measurement loop
+ State.Create(string.Format("{0}({1}) : FlyingStartStopTestWithDivOp is running", test.Method, test.Name))
+ .AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(readRegistersOp)
- .AddOperation(scale.ReadMassOp(ref Mass))
- .AddOperation(cBrd.ReadDiverterTransitionOp(true, DiverterStart, BatchRslts.Batch.BatchNr, test.Name, repetitionNr))
- .AddOperation(cBrd.QueryMeasurementEndOp())
+ .AddOperations(cameraMeasurementOps)
+ .AddOperation(cBrd.FlyingStartStopTestWithDivOp(test, test.Qfrom, test.Qto, totalPulses))
.AddOperation(processDataLoggingOp)
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- if (e.Contains(Event.MeasurementCompleted)) goto test_completed;
+ if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
+ if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
+ if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- //------------------------------------------------
- int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
- if (remainingTime > 60)
- {
- Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
- }
- else
- {
- Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
- }
- //------------------------------------------------
+ /// Show remaining time
+ if ((remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0)) > 60)
+ Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
+ else
+ Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
+ /// Update statistics
RefFrequency.Val = cBrd.RefFrequency;
RefFlow.Val = outPath.FlowMeter.ReadFlow();
+ UpdateAllStatistics(StateMachine.Time);
- UpdateAllStatistics(StateMachine.Time);
+ #region Heat meters
if (heatMetersTestParams != null)
{
+ /// Update heatmeter volume and energy values
if (lastEnergyUpdateTime == 0)
{
lastEnergyUpdateTime = StateMachine.Time;
@@ -630,8 +612,8 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
else
{
//double deltaTime = (double)(StateMachine.Time - lastEnergyUpdateTime);
- double T_in = (TempRefHi1.Val + TempRefHi2.Val) / 2; /// [°C]
- double T_out = (TempRefLo1.Val + TempRefLo2.Val) / 2; /// [°C]
+ double T_in = (TempRefHi1.Val + TempRefHi2.Val) / 2; /// [°C]
+ double T_out = (TempRefLo1.Val + TempRefLo2.Val) / 2; /// [°C]
double deltaVolume = LtrPerRefPulse * RefPulsesDelta; /// [l]
double deltaEnergy = (0.001 * deltaVolume) * (T_in - T_out) * Config.Formulas.HeatCoefficientWater(16, T_in, T_out, heatMetersTestParams.FlowMeasuredAtHiTempPipe); /// [J] = [m3] * [K] * [J/(m3 K)]
Energy.Update(deltaEnergy);
@@ -640,19 +622,16 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
}
}
- Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- }
- while (!e.Contains(Event.Next)); /// 'Next' button can be used in Debug version
+ #endregion
- /// Measurement loop - end
-
- test_completed:
+ Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
+ Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
+ }
+ while (!e.Contains(Event.TestCompleted) && !e.Contains(Event.Next)); /// 'Next' button is enabled in Debug version only
+ /// Measurement loop end
StopRecordingStatistics();
- cBrd.Stop(false);
-
///
/// (Berlin:) Water is stopped immediately after the test and before the 2nd mass measurement in case:
/// - no 'transition sequence after test' is used
diff --git a/TBF/Rig/TestMethods/FlyingStartTankCollection/FlyingStartTankCollectionSeq.cs b/TBF/Rig/TestMethods/FlyingStartTankCollection/FlyingStartTankCollectionSeq.cs
index 5ec5a72d4..2236a80df 100644
--- a/TBF/Rig/TestMethods/FlyingStartTankCollection/FlyingStartTankCollectionSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartTankCollection/FlyingStartTankCollectionSeq.cs
@@ -88,7 +88,8 @@ namespace TBF.Rig.TestMethods.FlyingStartTankCollection
{
return Simulate(test, repetitionNr, isLastRepetition, singleTestParams, compoundTestParams);
}
-
+
+ ControlBoard.Uni.UniCB cBrd = StateMachine.ControlBoard as ControlBoard.Uni.UniCB;
if ((outPath.Scale == null) || !(outPath.Scale is IVolumeMeter))
{
@@ -129,27 +130,24 @@ namespace TBF.Rig.TestMethods.FlyingStartTankCollection
IList e; /// Events from currently running operations
Event retVal = Event.Done;
- TBF.Rig.ControlBoard.IControlBoard cBrd = StateMachine.ControlBoard;
- checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
+ checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -188,6 +186,17 @@ namespace TBF.Rig.TestMethods.FlyingStartTankCollection
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
TestStartTime = DateTime.Now;
+ foreach (var rr in sensPath.RegisterReaders)
+ {
+ GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
+ if (readerWithTstName != null)
+ {
+ readerWithTstName.TestName = test.Name;
+ readerWithTstName.TestRepeats = test.Repeats;
+ readerWithTstName.RepetitionNr = repetitionNr;
+ }
+ }
+
///
/// Optionally drain the water tank
@@ -368,8 +377,8 @@ namespace TBF.Rig.TestMethods.FlyingStartTankCollection
foreach (var roi in rois) roi.RegisterRoiToCamera();
/// Prepare measurementOperations
- IList measureOperations = new List();
- foreach (var camera in cameras) measureOperations.Add(camera.MeasurementOp());
+ IList cameraMeasurementOps = new List();
+ foreach (var camera in cameras) cameraMeasurementOps.Add(camera.MeasurementOp());
LogProcessDataTestInfo(processDataLogger, test.Procedure.Name, test.Name);
@@ -378,94 +387,44 @@ namespace TBF.Rig.TestMethods.FlyingStartTankCollection
//------------------------------------------------
Bridge.OnActivity(this, Strings.Test_in_progress);
//------------------------------------------------
- State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(processDataLoggingOp)
- .AddOperation(cBrd.StartTestOp(test))
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
- }
- while (!e.Contains(Event.MeasurementStarted));
-
- foreach (var rr in sensPath.RegisterReaders)
- {
- GenericDevices.IHasTestName readerWithTstName = rr as GenericDevices.IHasTestName;
- if (readerWithTstName != null)
- {
- readerWithTstName.TestName = test.Name;
- readerWithTstName.TestRepeats = test.Repeats;
- readerWithTstName.RepetitionNr = repetitionNr;
- }
- }
-
-
- /// Measurement loop - preparation
- readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
-
- int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
+ /// Measurement loop preparation
+ int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
+ int remainingTime;
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
- /// Measurement loop - begin
- State.Create(string.Format("{0}({1}) : Reading watermeters", test.Method, test.Name))
+ /// Measurement loop
+ State.Create(string.Format("{0}({1}) : FlyingStartStopTestWithDivOp is running", test.Method, test.Name))
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
- .AddOperations(measureOperations)
- .AddOperation(readRegistersOp)
- .AddOperation(cBrd.ReadDiverterTransitionOp(true, DiverterStart, BatchRslts.Batch.BatchNr, test.Name, repetitionNr))
- .AddOperation(cBrd.QueryMeasurementEndOp())
+ .AddOperations(cameraMeasurementOps)
+ .AddOperation(cBrd.FlyingStartStopTestWithDivOp(test, test.Qfrom, test.Qto, totalPulses))
.AddOperation(processDataLoggingOp)
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
- if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
- if (e.Contains(Event.MeasurementCompleted)) goto test_completed;
-
- //------------------------------------------------
- int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
- if (remainingTime > 60)
- {
- Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
- }
- else
- {
- Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
- }
- //------------------------------------------------
-
- RefFrequency.Val = cBrd.RefFrequency;
- RefFlow.Val = outPath.FlowMeter.ReadFlow();
-
- UpdateAllStatistics(StateMachine.Time);
-
- Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
- }
- while (!e.Contains(Event.Next)); /// 'Next' button can be used in Debug version
-
- /// Measurement loop - end
-
- test_completed:
-
- StopRecordingStatistics();
-
- State.Create(string.Format("{0}({1}) : Stopping flow regulation", test.Method, test.Name))
- .AddOperation(checkUiOp)
- .AddOperations(readTempPressOps)
- .AddOperation(cBrd.StopFlowRegulationOp())
- .EnterState();
- do {
- e = StateMachine.WaitRunDevsRunOps();
+ if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }
+
+ /// Show remaining time
+ if ((remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0)) > 60)
+ Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec));
+ else
+ Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
+
+ /// Update statistics
+ RefFrequency.Val = cBrd.RefFrequency;
+ RefFlow.Val = outPath.FlowMeter.ReadFlow();
+ UpdateAllStatistics(StateMachine.Time);
+
+ Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
+ Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
}
- while (!e.Contains(Event.FlowRegulationStopped));
+ while (!e.Contains(Event.TestCompleted) && !e.Contains(Event.Next)); /// 'Next' button is enabled in Debug version only
+
+ /// Measurement loop end
+ StopRecordingStatistics();
///
/// (Berlin:) Water is stopped immediately after the test and before the 2nd mass measurement in case:
diff --git a/TBF/Rig/TestMethods/PulsesTest/PulsesTestSeq.cs b/TBF/Rig/TestMethods/PulsesTest/PulsesTestSeq.cs
index fa8b69156..e17182e6d 100644
--- a/TBF/Rig/TestMethods/PulsesTest/PulsesTestSeq.cs
+++ b/TBF/Rig/TestMethods/PulsesTest/PulsesTestSeq.cs
@@ -85,23 +85,21 @@ namespace TBF.Rig.TestMethods.PulsesTest
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -341,14 +339,14 @@ namespace TBF.Rig.TestMethods.PulsesTest
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperations(measureOperations)
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, true, false, false, test.Qfrom, test.Qto, totalPulses, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.MeasurementStarted));
+ while (!e.Contains(Event.TestInProgress));
/// Measurement loop - preparation
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
@@ -364,7 +362,7 @@ namespace TBF.Rig.TestMethods.PulsesTest
{
case Event.Error: { retVal = Event.Error; goto stopTest; }
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
- case Event.MeasurementCompleted: goto one_test_completed;
+ case Event.TestCompleted: goto one_test_completed;
}
RefFrequency.Val = cBrd.RefFrequency;
diff --git a/TBF/Rig/TestMethods/PulsesTestManual/PulsesTestManualSeq.cs b/TBF/Rig/TestMethods/PulsesTestManual/PulsesTestManualSeq.cs
index 0d21f07db..b27773caa 100644
--- a/TBF/Rig/TestMethods/PulsesTestManual/PulsesTestManualSeq.cs
+++ b/TBF/Rig/TestMethods/PulsesTestManual/PulsesTestManualSeq.cs
@@ -86,23 +86,21 @@ namespace TBF.Rig.TestMethods.PulsesTestManual
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
@@ -343,14 +341,14 @@ namespace TBF.Rig.TestMethods.PulsesTestManual
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperations(measureOperations)
- .AddOperation(cBrd.StartTestOp(test))
+ .AddOperation(cBrd.StartTestOp(test, true, false, false, test.Qfrom, test.Qto, totalPulses, 0))
.EnterState();
do {
e = StateMachine.WaitRunDevsRunOps();
if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }
if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }
}
- while (!e.Contains(Event.MeasurementStarted));
+ while (!e.Contains(Event.TestInProgress));
/// Measurement loop - preparation
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
@@ -366,7 +364,7 @@ namespace TBF.Rig.TestMethods.PulsesTestManual
{
case Event.Error: { retVal = Event.Error; goto stopTest; }
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
- case Event.MeasurementCompleted: goto one_test_completed;
+ case Event.TestCompleted: goto one_test_completed;
}
RefFrequency.Val = cBrd.RefFrequency;
diff --git a/TBF/Rig/TestMethods/RoiDetection/RoiDetectionSeq.cs b/TBF/Rig/TestMethods/RoiDetection/RoiDetectionSeq.cs
index d1ed5f3e0..7f1757375 100644
--- a/TBF/Rig/TestMethods/RoiDetection/RoiDetectionSeq.cs
+++ b/TBF/Rig/TestMethods/RoiDetection/RoiDetectionSeq.cs
@@ -26,23 +26,21 @@ namespace TBF.Rig.TestMethods.RoiDetection
checkUiOp = new Operations.CheckUIOp(true);
processDataLoggingOp = null;
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
diff --git a/TBF/Rig/TestMethods/SensitivityTest/SensitivityTestSeq.cs b/TBF/Rig/TestMethods/SensitivityTest/SensitivityTestSeq.cs
index 0cb9a3848..49677688e 100644
--- a/TBF/Rig/TestMethods/SensitivityTest/SensitivityTestSeq.cs
+++ b/TBF/Rig/TestMethods/SensitivityTest/SensitivityTestSeq.cs
@@ -65,23 +65,21 @@ namespace TBF.Rig.TestMethods.SensitivityTest
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
-
- if (cBrd is ControlBoard.Legacy.CBoard)
+ if (cBrd is ControlBoard.Uni.UniCB)
{
int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };
if (sensPath != null && sensPath.RegisterReaders != null)
{
foreach (var rr in sensPath.RegisterReaders)
{
- IRegReaderPulses eldeRR = rr as IRegReaderPulses;
- if ((eldeRR != null) && (eldeRR.Position >= 1) && (eldeRR.Position <= 8))
+ IRegReaderPulses rrPls = rr as IRegReaderPulses;
+ if (rrPls != null && rrPls.Position >= 1 && rrPls.Position <= 8)
{
- filters[eldeRR.Position - 1] = eldeRR.Filter;
+ filters[rrPls.Position - 1] = rrPls.Filter;
}
}
}
-
- (cBrd as ControlBoard.Legacy.CBoard).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
+ (cBrd as ControlBoard.Uni.UniCB).SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);
}
IList readTempPressOps = new List();
diff --git a/TBF/Rig/Uni/RegValve/RegValve.cs b/TBF/Rig/Uni/RegValve/RegValve.cs
index 16c7c52cd..f2088ed44 100644
--- a/TBF/Rig/Uni/RegValve/RegValve.cs
+++ b/TBF/Rig/Uni/RegValve/RegValve.cs
@@ -6,12 +6,11 @@ using System.Collections.Generic;
using log4net;
using SchematicDrawing;
using TBF.Rig.ControlBoard.Uni;
-using TBF.Rig.Generic;
using TBF.Boxes;
namespace TBF.Rig.Uni.RegValve
{
- public class RegValve : ComponentBase, IDevice, GenericDevices.IRegValve, IDrawingItCmpntWithSetpoint
+ public class RegValve : ComponentBase, Generic.IDevice, GenericDevices.IRegValve, IDrawingItCmpntWithSetpoint
{
private static readonly ILog log = LogManager.GetLogger(typeof(RegValve));
public override string ToString() { return string.Format("RegulValve({0})", Cfg.ToString(-1)); }
@@ -23,7 +22,7 @@ namespace TBF.Rig.Uni.RegValve
IDictionary dict;
public IDictionary Dict { get { return dict; } }
- readonly UniCB uniCB;
+ public readonly UniCB UniCB;
readonly int adcChannel;
public ValveCategory Category { get { return regValveCfg.Category; } }
@@ -43,7 +42,7 @@ namespace TBF.Rig.Uni.RegValve
{
int denominator = DacValueOpen - DacValueClosed;
if (denominator == 0) denominator = 1;
- return 100.0 * Convert.ToDouble(uniCB.AnalogInput(adcChannel) - DacValueClosed) / Convert.ToDouble(denominator);
+ return 100.0 * Convert.ToDouble(UniCB.AnalogInput(adcChannel) - DacValueClosed) / Convert.ToDouble(denominator);
}
}
///
@@ -73,7 +72,7 @@ namespace TBF.Rig.Uni.RegValve
/// Time in seconds, positive value opens the reg. valve
public void IncrementalMovement(bool isFromUI, double time)
{
- uniCB.RegVlvIncrMove(isFromUI, Idx1, time);
+ UniCB.RegVlvIncrMove(isFromUI, Idx1, time);
}
///
@@ -83,7 +82,7 @@ namespace TBF.Rig.Uni.RegValve
/// Reg. valve position (0 .. 1.0)
public void MoveToPosition(bool isFromUI, double positionLo, double positionHi = -1)
{
- uniCB.RegVlvMoveToPos(isFromUI, Idx1, positionLo, positionHi);
+ UniCB.RegVlvMoveToPos(isFromUI, Idx1, positionLo, positionHi);
}
@@ -120,7 +119,7 @@ namespace TBF.Rig.Uni.RegValve
}
else if (args.Command == CfgChangeCmd.GetAdc1 || args.Command == CfgChangeCmd.GetAdc2)
{
- short adcValue = uniCB.AnalogInput(adcChannel);
+ short adcValue = UniCB.AnalogInput(adcChannel);
RegValveCfgCtrl.OnCmdResponse(this, new CmdResponseArgs(args.Command, Idx1, adcValue));
}
}
@@ -140,8 +139,8 @@ namespace TBF.Rig.Uni.RegValve
regValveCfg = cfg as RegValveCfg;
adcChannel = regValveCfg.Idx1 - 1;
- this.uniCB = TbfComponents.FindComponent(cfg.ParentName, components) as UniCB;
- if (this.uniCB == null) throw new Exception(string.Format("Cannot find {0} (a parent of {1})", cfg.ParentName, Name));
+ this.UniCB = TbfComponents.FindComponent(cfg.ParentName, components) as UniCB;
+ if (this.UniCB == null) throw new Exception(string.Format("Cannot find {0} (a parent of {1})", cfg.ParentName, Name));
this.dict = new Dictionary();
@@ -155,7 +154,7 @@ namespace TBF.Rig.Uni.RegValve
public void Initialize() { }
public void RunDeviceBefore()
{
- Int16 adcValue = uniCB.AnalogInput(adcChannel);
+ Int16 adcValue = UniCB.AnalogInput(adcChannel);
Handlers.OnAdcChanged(this, new CmdResponseArgs(CfgChangeCmd.GetAdc, Idx1, adcValue));
}
public void RunDeviceAfter() { }
@@ -176,7 +175,7 @@ namespace TBF.Rig.Uni.RegValve
/// SetFlowOp instance
public IOperation SetFlowOp(GenericDevices.IFlowMeter flowMeter, double requiredFlowLo, double requiredFlowHi, DoubleBox measuredFlow, int timeout)
{
- return new SetFlowOp(uniCB, this, flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, timeout);
+ return new SetFlowOp(UniCB, this, flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, timeout);
}
///
@@ -192,7 +191,7 @@ namespace TBF.Rig.Uni.RegValve
public IOperation SetFlowAndMeasureOp(GenericDevices.IFlowMeter flowMeter, double requiredFlowLo, double requiredFlowHi,
DoubleBox measuredFlow, int timeout, float filterConstant)
{
- return new SetFlowOp(uniCB, this, flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, timeout, true);
+ return new SetFlowOp(UniCB, this, flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, timeout, true);
}
///
@@ -204,12 +203,12 @@ namespace TBF.Rig.Uni.RegValve
/// SetPositionOp instance
public IOperation SetRegulValvePositionOp(double pctLo, double pctHi, int timeoutMs)
{
- return new SetRegValvePositionOp(uniCB, this, pctLo, pctHi, timeoutMs);
+ return new SetRegValvePositionOp(UniCB, this, pctLo, pctHi, timeoutMs);
}
public IOperation ChangeRegulValvePositionOp(double timePulseSec)
{
- return new ChangeRegulValvePositionOp(uniCB, this, timePulseSec);
+ return new ChangeRegulValvePositionOp(UniCB, this, timePulseSec);
}
}
}
diff --git a/TBF/Rig/Uni/RegValve/SetFlowOp.cs b/TBF/Rig/Uni/RegValve/SetFlowOp.cs
index 4d859804a..6c58cf3fd 100644
--- a/TBF/Rig/Uni/RegValve/SetFlowOp.cs
+++ b/TBF/Rig/Uni/RegValve/SetFlowOp.cs
@@ -28,7 +28,6 @@ namespace TBF.Rig.Uni.RegValve
readonly int timeout;
readonly bool leaveMeasurementRunning;
- readonly double nominalFlow;
readonly double maximalFlow;
///
@@ -66,14 +65,14 @@ namespace TBF.Rig.Uni.RegValve
/// Control board device
/// Regulation valve component
/// Flowmeter component
- /// Lower limit of the flow to be achieved in [m3/h]
- /// Upper limit of the flow to be achieved in [m3/h]
+ /// Lower limit of the flow to be achieved in [m3/h]
+ /// Upper limit of the flow to be achieved in [m3/h]
/// PID coefficient (float)
/// Timeout for the flow setting in [s]
/// true = Leave the measurement running after op. stop
/// Only Elde.Valve flow are used, other flow on the lists are ignored
- public SetFlowOp(UniCB uniCB, IRegValve regValve, IFlowMeter flowMeter, double targetFlowLo, double targetFlowHi,
- DoubleBox flowBox, int timeout, bool leaveMeasurementRunning)
+ public SetFlowOp(UniCB uniCB, IRegValve regValve, IFlowMeter flowMeter, double qFrom, double qTo, DoubleBox flowBox,
+ int timeout, bool leaveMeasurementRunning)
{
this.uniCB = uniCB;
if (this.uniCB == null) throw new ArgumentNullException("cBoard is null or not Uni");
@@ -84,12 +83,11 @@ namespace TBF.Rig.Uni.RegValve
this.flowMeter = flowMeter;
if (this.flowMeter == null) throw new ArgumentNullException("flowMeter");
- nominalFlow = flowMeter.NominalFlow;
- maximalFlow = nominalFlow * 1.25;
+ maximalFlow = flowMeter.NominalFlow * 1.25;
- this.targetFlowAve = (targetFlowLo + targetFlowHi) / 2;
- this.shrinkedTgtFlowLo = (0.7 * targetFlowLo) + (0.3 * this.targetFlowAve); /// Move the lower limit 15% of the range up
- this.shrinkedTgtFlowHi = (0.7 * targetFlowHi) + (0.3 * this.targetFlowAve); /// Move the upper limit 15% of the range down
+ this.targetFlowAve = (qFrom + qTo) / 2;
+ this.shrinkedTgtFlowLo = (0.7 * qFrom) + (0.3 * this.targetFlowAve); /// Move the lower limit 15% of the range up
+ this.shrinkedTgtFlowHi = (0.7 * qTo) + (0.3 * this.targetFlowAve); /// Move the upper limit 15% of the range down
this.flowBox = flowBox;
if (this.flowBox == null) throw new ArgumentNullException("flowBox");
@@ -105,9 +103,8 @@ namespace TBF.Rig.Uni.RegValve
/// Set required water flow - Do not leave the measurement running.
/// Events: FlowSet
///
- public SetFlowOp(UniCB uniCB, IRegValve regValve, IFlowMeter flowMeter, double targetFlowLo, double targetFlowHi,
- DoubleBox flowbox, int timeout)
- : this(uniCB, regValve, flowMeter, targetFlowLo, targetFlowHi, flowbox, timeout, false)
+ public SetFlowOp(UniCB uniCB, IRegValve regValve, IFlowMeter flowMeter, double qFrom, double qTo, DoubleBox flowbox, int timeout)
+ : this(uniCB, regValve, flowMeter, qFrom, qTo, flowbox, timeout, false)
{
}
@@ -115,9 +112,8 @@ namespace TBF.Rig.Uni.RegValve
/// Set required water flow - No timeout.
/// Events: FlowSet
///
- public SetFlowOp(UniCB uniCB, IRegValve regValve, IFlowMeter flowMeter, double targetFlowLo, double targetFlowHi,
- DoubleBox flowbox)
- : this(uniCB, regValve, flowMeter, targetFlowLo, targetFlowHi, flowbox, int.MaxValue, false)
+ public SetFlowOp(UniCB uniCB, IRegValve regValve, IFlowMeter flowMeter, double qFrom, double qTo, DoubleBox flowbox)
+ : this(uniCB, regValve, flowMeter, qFrom, qTo, flowbox, int.MaxValue, false)
{
}
@@ -203,7 +199,8 @@ namespace TBF.Rig.Uni.RegValve
return Event.OpArgumentError;
}
- uniCB.SetFlow(false, regV.Idx1, 2000 * currentReqFlowLo / nominalFlow, 2000 * currentReqFlowHi / nominalFlow);
+ uniCB.SetFlow(false, regV.Idx1, 2000 * currentReqFlowLo / flowMeter.NominalFlow,
+ 2000 * currentReqFlowHi / flowMeter.NominalFlow);
log.InfoFormat("Run(): rv#={0} TARGET: flowLo={1} flowHi={2}", regV.Idx1, currentReqFlowLo, currentReqFlowHi);
diff --git a/TBF/Rig/Uni/RegValveTandem/RegValveTandem.cs b/TBF/Rig/Uni/RegValveTandem/RegValveTandem.cs
index d6b117270..336b26e40 100644
--- a/TBF/Rig/Uni/RegValveTandem/RegValveTandem.cs
+++ b/TBF/Rig/Uni/RegValveTandem/RegValveTandem.cs
@@ -4,7 +4,7 @@
using System;
using System.Collections.Generic;
using log4net;
-using TBF.Rig.ControlBoard.Legacy;
+using TBF.Rig.ControlBoard.Uni;
using TBF.Rig.Generic;
using TBF.Boxes;
@@ -13,14 +13,14 @@ namespace TBF.Rig.Uni.RegValveTandem
public class RegValveTandem : ComponentBase, GenericDevices.IRegValve
{
private static readonly ILog log = LogManager.GetLogger(typeof(RegValveTandem));
- public override string ToString() { return string.Format("RegulValve({0})", Cfg.ToString(1)); }
+ public override string ToString() { return string.Format("RegValveTandem({0})", Cfg.ToString(-1)); }
public readonly RegValveTandemCfg RegulValveTandemCfg;
IDictionary dict;
public IDictionary Dict { get { return dict; } }
- CBoard controlBoard { get { return regValve.ControlBoard; } }
+ UniCB uniCB { get { return regValve.UniCB; } }
public ValveCategory Category { get { return RegulValveTandemCfg.Category; } }
readonly TBF.Rig.Uni.RegValve.RegValve regValve;
@@ -75,7 +75,7 @@ namespace TBF.Rig.Uni.RegValveTandem
/// SetFlowOp instance
public IOperation SetFlowOp(GenericDevices.IFlowMeter flowMeter, double requiredFlowLo, double requiredFlowHi, DoubleBox measuredFlow, int timeout)
{
- return new SetFlowOp(controlBoard, regValve, fixedRV, fixedPctLo, fixedPctHi,
+ return new SetFlowOp(uniCB, regValve, fixedRV, fixedPctLo, fixedPctHi,
flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, timeout);
}
@@ -92,7 +92,7 @@ namespace TBF.Rig.Uni.RegValveTandem
public IOperation SetFlowAndMeasureOp(GenericDevices.IFlowMeter flowMeter, double requiredFlowLo, double requiredFlowHi,
DoubleBox measuredFlow, int timeout, float filterConstant)
{
- return new SetFlowOp(controlBoard, regValve, fixedRV, fixedPctLo, fixedPctHi,
+ return new SetFlowOp(uniCB, regValve, fixedRV, fixedPctLo, fixedPctHi,
flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, timeout, true);
}
diff --git a/TBF/Rig/Uni/RegValveTandem/RegValveTandemCfgCtrl.cs b/TBF/Rig/Uni/RegValveTandem/RegValveTandemCfgCtrl.cs
index e7eab9fe5..17f5bd943 100644
--- a/TBF/Rig/Uni/RegValveTandem/RegValveTandemCfgCtrl.cs
+++ b/TBF/Rig/Uni/RegValveTandem/RegValveTandemCfgCtrl.cs
@@ -40,7 +40,7 @@ namespace TBF.Rig.Uni.RegValveTandem
{
foreach (var cmpnt in parent.CmpntEntities)
{
- if (TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is Elde.RegulValve.RegulValveFactory)
+ if (TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName) is Uni.RegValve.Factory)
{
regulValveNameComboBox.Items.Add(cmpnt.Name);
fixedRVNameComboBox.Items.Add(cmpnt.Name);
diff --git a/TBF/Rig/Uni/RegValveTandem/SetFlowOp.cs b/TBF/Rig/Uni/RegValveTandem/SetFlowOp.cs
index 739fb92de..ce2867fd5 100644
--- a/TBF/Rig/Uni/RegValveTandem/SetFlowOp.cs
+++ b/TBF/Rig/Uni/RegValveTandem/SetFlowOp.cs
@@ -4,7 +4,7 @@
using System;
using System.Collections.Generic;
using log4net;
-using TBF.Rig.ControlBoard.Legacy;
+using TBF.Rig.ControlBoard.Uni;
using TBF.Rig.GenericDevices;
using TBF.Boxes;
@@ -19,9 +19,9 @@ namespace TBF.Rig.Uni.RegValveTandem
}
/// Set by the constructor
- readonly CBoard controlBoard;
- readonly TBF.Rig.Uni.RegValve.RegValve regValve;
- readonly TBF.Rig.Uni.RegValve.RegValve fixedRV;
+ readonly UniCB uniCB;
+ readonly RegValve.RegValve regValve;
+ readonly RegValve.RegValve fixedRV;
readonly double fixedPctLo;
readonly double fixedPctHi;
readonly int flowMeterNr;
@@ -74,18 +74,18 @@ namespace TBF.Rig.Uni.RegValveTandem
/// Timeout for the flow setting in [s]
/// true = Leave the measurement running after op. stop
/// Only Elde.Valve flow are used, other flow on the lists are ignored
- public SetFlowOp(CBoard controlBoard, IRegValve regV, IRegValve fxdRV, float fxdPctLo, float fxdPctHi,
+ public SetFlowOp(TBF.Rig.ControlBoard.IControlBoard cb, IRegValve regV, IRegValve fxdRV, float fxdPctLo, float fxdPctHi,
IFlowMeter flowMeter, double requiredFlowLo, double requiredFlowHi, DoubleBox measuredFlow,
int timeout, bool leaveMeasurementRunning)
{
- if (controlBoard == null) throw new ArgumentNullException("ctrlBoard");
- this.controlBoard = controlBoard;
+ this.uniCB = cb as UniCB;
+ if (uniCB == null) throw new ArgumentNullException("ctrlBoard is not Uni");
regValve = regV as TBF.Rig.Uni.RegValve.RegValve;
- if (regValve == null) throw new ArgumentNullException("regValve is null or not Elde");
+ if (regValve == null) throw new ArgumentNullException("regValve is null or not Uni");
fixedRV = fxdRV as TBF.Rig.Uni.RegValve.RegValve;
- if (fixedRV == null) throw new ArgumentNullException("regValve is null or not Elde");
+ if (fixedRV == null) throw new ArgumentNullException("regValve is null or not Uni");
this.fixedPctLo = fxdPctLo;
this.fixedPctHi = fxdPctHi;
@@ -93,18 +93,20 @@ namespace TBF.Rig.Uni.RegValveTandem
if (flowMeter is Uni.FlowMeter.FlowMeter)
{
this.flowMeterNr = (flowMeter as Uni.FlowMeter.FlowMeter).Idx1;
+ this.nominalFlow = flowMeter.NominalFlow;
}
else if (flowMeter is Elde.FlowMeterTwins.FlowMeter)
{
this.flowMeterNr = 0;
+ this.nominalFlow = flowMeter.NominalFlow;
}
else
{
- throw new ArgumentNullException("flowMeter is null or not Elde");
+ throw new ArgumentNullException("flowMeter is null or not Uni");
}
nominalFlow = flowMeter.NominalFlow;
- maximalFlow = nominalFlow * 1.25;
+ maximalFlow = flowMeter.NominalFlow * 1.25;
this.reqFlowAve = (requiredFlowLo + requiredFlowHi) / 2;
this.finalReqFlowLo = (0.7 * requiredFlowLo) + (0.3 * this.reqFlowAve); /// Move the lower limit 15% of the range up
@@ -122,9 +124,9 @@ namespace TBF.Rig.Uni.RegValveTandem
/// Set required water flow - Do not leave the measurement running.
/// Events: FlowSet
///
- public SetFlowOp(CBoard controlBoard, IRegValve regValve, IRegValve fixedRV, float fixedPctLo, float fixedPctHi,
+ public SetFlowOp(UniCB uniCB, IRegValve regValve, IRegValve fixedRV, float fixedPctLo, float fixedPctHi,
IFlowMeter flowMeter, double requiredFlowLo, double requiredFlowHi, DoubleBox measuredFlow, int timeout)
- : this(controlBoard, regValve, fixedRV, fixedPctLo, fixedPctHi, flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, timeout, false)
+ : this(uniCB, regValve, fixedRV, fixedPctLo, fixedPctHi, flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, timeout, false)
{
}
@@ -132,9 +134,9 @@ namespace TBF.Rig.Uni.RegValveTandem
/// Set required water flow - No timeout.
/// Events: FlowSet
///
- public SetFlowOp(CBoard controlBoard, IRegValve regValve, IRegValve fixedRV, float fixedPctLo, float fixedPctHi,
+ public SetFlowOp(UniCB uniCB, IRegValve regValve, IRegValve fixedRV, float fixedPctLo, float fixedPctHi,
IFlowMeter flowMeter, double requiredFlowLo, double requiredFlowHi, DoubleBox measuredFlow)
- : this(controlBoard, regValve, fixedRV, fixedPctLo, fixedPctHi, flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, int.MaxValue, false)
+ : this(uniCB, regValve, fixedRV, fixedPctLo, fixedPctHi, flowMeter, requiredFlowLo, requiredFlowHi, measuredFlow, int.MaxValue, false)
{
}
@@ -174,7 +176,7 @@ namespace TBF.Rig.Uni.RegValveTandem
/// Start this operation
public void Start()
{
- double flowMtrFreq = controlBoard.RefFrequency;
+ double flowMtrFreq = uniCB.RefFrequency;
currentReqFlowLo = reqFlowAve;
currentReqFlowHi = reqFlowAve;
///
@@ -211,10 +213,8 @@ namespace TBF.Rig.Uni.RegValveTandem
expireTime = StateMachine.Time + timeout;
if (expireTime < 0) expireTime = int.MaxValue;
- ControlBoard.Legacy.TestMethods tm = 0;
- StopDevs sd = 0;
- // '_regulValve.RegulValveTandemCfg.PidCoef' replaced by a casted operation parameter 'pidCoef'
- controlBoard.SendCommand(Command.Start, flowMeterNr, int.MaxValue, int.MaxValue, tm, sd);
+ /// Start flow measurement
+ uniCB.MeasureFlow(false, flowMeterNr);
}
/// Run this operation
@@ -223,9 +223,9 @@ namespace TBF.Rig.Uni.RegValveTandem
///
public Event Run()
{
- float rvPosition = controlBoard.RValvePosition(regValve.Idx1);
- float fixedRVPosition = controlBoard.RValvePosition(fixedRV.Idx1);
- double flowMtrFreq = controlBoard.RefFrequency;
+ double rvPosition = regValve.Position;
+ double fixedRVPosition = fixedRV.Position;
+ double flowMtrFreq = uniCB.RefFrequency;
double flow = flowMtrFreq * nominalFlow / 2000.0;
if (flowMtrFreq != 0)
@@ -243,9 +243,7 @@ namespace TBF.Rig.Uni.RegValveTandem
///
/// Done once, issues an appropriate ValveMove(...) command
///
- controlBoard.ValveMove(regValve.Idx1, RegulValveMode.TargetPosition,
- new double[2] { targetPositionLo, targetPositionHi },
- regValve.StableTime);
+ uniCB.RegVlvMoveToPos(false, regValve.Idx1, targetPositionLo, targetPositionHi);
opState = OpState.SettingPosition;
return Event.None;
@@ -266,9 +264,7 @@ namespace TBF.Rig.Uni.RegValveTandem
///
/// Done once, issues an appropriate ValveMove(...) command
///
- controlBoard.ValveMove(fixedRV.Idx1, RegulValveMode.TargetPosition,
- new double[2] { fixedPctLo, fixedPctHi },
- regValve.StableTime);
+ uniCB.RegVlvMoveToPos(false, fixedRV.Idx1, fixedPctLo, fixedPctHi);
opState = OpState.SettingPosition_FixedRV;
return Event.None;
@@ -299,9 +295,7 @@ namespace TBF.Rig.Uni.RegValveTandem
double freqLo = 2000.0 * currentReqFlowLo / nominalFlow;
double freqHi = 2000.0 * currentReqFlowHi / nominalFlow;
- controlBoard.ValveMove(regValve.Idx1, RegulValveMode.TargetFrequency,
- new double[2] { freqLo, freqHi },
- regValve.StableTime);
+ uniCB.SetFlow(false, regValve.Idx1, freqLo, freqHi);
opState = OpState.SettingFlow;
return Event.None;
@@ -359,15 +353,12 @@ namespace TBF.Rig.Uni.RegValveTandem
/// Start this operation
public void Stop()
- {
- opState = OpState.Idle;
+ {
+ opState = OpState.Idle;
if (leaveMeasurementRunning) return;
-
- /// Stop measurement
- ControlBoard.Legacy.TestMethods tm = 0;
- StopDevs sd = StopDevs.RegValveRegulation;
- controlBoard.SendCommand(Command.Stop, flowMeterNr, 50000, 50000, tm, sd);
+
+ uniCB.Stop(false); /// Stop measurement
}
}
}
diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj
index 4e8bda182..77068bfda 100644
--- a/TBF/TBF.csproj
+++ b/TBF/TBF.csproj
@@ -227,7 +227,9 @@
-
+
+
+
@@ -1640,7 +1642,6 @@
-
UserControl
diff --git a/TBF/UI/Bench/Transitions/TransitionsDlg.cs b/TBF/UI/Bench/Transitions/TransitionsDlg.cs
index b3069f994..c4b18664c 100644
--- a/TBF/UI/Bench/Transitions/TransitionsDlg.cs
+++ b/TBF/UI/Bench/Transitions/TransitionsDlg.cs
@@ -101,7 +101,7 @@ namespace TBF.UI.Bench.Transitions
RegulValves = new List();
foreach (var cmpnt in TbfComponents)
{
- if ((cmpnt is IRegValve) && !(cmpnt is Rig.Elde.RegulValveTandem.RegulValveTandem))
+ if ((cmpnt is IRegValve) && !(cmpnt is Rig.Uni.RegValveTandem.RegValveTandem))
{
RegulValves.Add(cmpnt as IRegValve);
}
diff --git a/TBF/UI/Bench/Uncertainties/UncertaintiesDlg.cs b/TBF/UI/Bench/Uncertainties/UncertaintiesDlg.cs
index adea0d6bd..51456d107 100644
--- a/TBF/UI/Bench/Uncertainties/UncertaintiesDlg.cs
+++ b/TBF/UI/Bench/Uncertainties/UncertaintiesDlg.cs
@@ -117,9 +117,7 @@ namespace TBF.UI.Bench.Uncertainties
//}
/// Tab-pages for pressure meters
- if (factory is Rig.Elde.PressureMeter.PressureMeterFactory ||
- factory is Rig.Elde.PressureMeterInternal.PressureMeterFactory ||
- factory is Rig.Modbus.PressureMeter.Meret.Factory)
+ if (factory is Rig.Modbus.PressureMeter.Meret.Factory)
{
pressMetersCount++;
TabPage tabPage = new TabPage(" " + cmpnt.Name + " ");