diff --git a/Config/Entities/TransitionStep.cs b/Config/Entities/TransitionStep.cs
index 68c90d615..7e263579b 100644
--- a/Config/Entities/TransitionStep.cs
+++ b/Config/Entities/TransitionStep.cs
@@ -55,10 +55,10 @@ namespace Config.Entities
result += indent + "Duration = " + Duration.ToString() + ", ";
result += indent + "Message = " + Message + ", ";
result += indent + "EndCondition = " + EndCondition.ToString() + ", ";
- result += indent + "ValvesOpen = " + ValvesOpen.ToString() + ", ";
- result += indent + "ValvesClose = " + ValvesClose.ToString() + ", ";
- result += indent + "RegulValvesPct = " + RegulValvesPct.ToString() + ", ";
- result += indent + "PumpsWithFMPct = " + RegulValvesPct.ToString() + Environment.NewLine;
+ result += indent + "ValvesOpen = " + ValvesOpen + ", ";
+ result += indent + "ValvesClose = " + ValvesClose + ", ";
+ result += indent + "RegulValvesPct = " + RegulValvesPct + ", ";
+ result += indent + "PumpsWithFMPct = " + PumpWithFMPcts + Environment.NewLine;
return result;
}
}
diff --git a/TestBenchFramework/BenchControl/Elde/Common.cs b/TestBenchFramework/BenchControl/Elde/Common.cs
index 60e8a186d..ec5dc0fbe 100644
--- a/TestBenchFramework/BenchControl/Elde/Common.cs
+++ b/TestBenchFramework/BenchControl/Elde/Common.cs
@@ -24,13 +24,14 @@ namespace TBF.BenchControl.Elde
TestInProgress = 0x20,
//DiverterError = 0x20,
MsrmntWithDivrtr = 0x80,
- RefPulsesMsrmnt = 0x100,
- SynchroMethod = 0x800,
- WaterMeterCalib = 0x1000,
+ RefPulsesMsrmnt = 0x100, /// bit 8
+ SynchroMethod = 0x800, /// bit 11
+ WaterMeterCalib = 0x1000, /// bit 12
EmgcyStopActive = 0x2000,
MsrmntGateActive = 0x4000,
TimeMeasurement = 0x8000,
- FrequencyMeasured = 0x80000,
+ FrequencyMeasured = 0x80000, /// bit 19
+ CoaxRegValveBusy = 0x200000, /// bit 21
ADCError = 0x80000000,
TimeoutOccured = 0x100000000,
MeretAddresses = 0x200000000,
@@ -56,6 +57,7 @@ namespace TBF.BenchControl.Elde
MsrmntGateActive = 0x4000,
TimeMeasurement = 0x8000,
FrequencyMeasured = 0x80000,
+ CoaxRegValveBusy = 0x200000, /// bit 21
ADCError = 0x80000000,
TimeoutOccured = 0x100000000,
MeretAddresses = 0x200000000,
diff --git a/TestBenchFramework/BenchControl/Elde/ControlComSim.cs b/TestBenchFramework/BenchControl/Elde/ControlComSim.cs
index 887c1197b..bdd993bd2 100644
--- a/TestBenchFramework/BenchControl/Elde/ControlComSim.cs
+++ b/TestBenchFramework/BenchControl/Elde/ControlComSim.cs
@@ -124,6 +124,8 @@ namespace TBF.BenchControl.Elde
/// Percentages for switching of diverters, ix = diverter nr.(0,1), typ.value 50 (%)
public void SendCalibData(uint[,] rvCalib, byte[] meretA, int usedCom, float[,] tempCalib, float[] etCalib, uint[] divEdge, uint[] balanceRange)
{
+ log.Info("SendCalibData(...)");
+
this.regValveCalib = rvCalib;
this.meretRS485Address = meretA;
this.tempCalibData = tempCalib;
@@ -141,13 +143,35 @@ namespace TBF.BenchControl.Elde
/// kolko impulzov ma trvat skuska
/// See ControlBoard.TestMethods enum
/// 0 = No filtering (0..255)
- /// Freq.inverter control (not applicable in DT100, Munich)
+ /// Freq.inverter control (not applicable in DT100, Munich)
/// Coefficient used to control reg. valves (1..100)
/// 0 = default value, 1 = spec. processing of very short pulses
/// What to stop
public void SendCommand(Command cmd, int refFlowmtrNr, ulong route, int totalRefPulses, TestMethods testMethods,
- float filterConstant, float[] FMFreq, int regConst, int shortImp, StopDevs stopDevs)
+ float filterConstant, float[] fmFreq, int regConst, int shortImp, StopDevs stopDevs)
{
+ log.InfoFormat("SendCommand(cmd={0}, ref={1}, route={2} {3} {4} {5}, pulses={6}, TM={7}, filt={8}, pumpFM=[{9}{10}{11}{12}{13}{14}], reg={15}, shrtImp={16}, stop={17})",
+ cmd,
+ refFlowmtrNr,
+ ((route >> 48) & 0xFFFF).ToString("X4"),
+ ((route >> 32) & 0xFFFF).ToString("X4"),
+ ((route >> 16) & 0xFFFF).ToString("X4"),
+ (route & 0xFFFF).ToString("X4"),
+ totalRefPulses,
+ testMethods,
+ filterConstant,
+ fmFreq[0].ToString(),
+ (fmFreq.Length > 1) ? ("," + fmFreq[1].ToString()) : "",
+ (fmFreq.Length > 2) ? ("," + fmFreq[2].ToString()) : "",
+ (fmFreq.Length > 3) ? ("," + fmFreq[3].ToString()) : "",
+ (fmFreq.Length > 4) ? ("," + fmFreq[4].ToString()) : "",
+ (fmFreq.Length > 5) ? ("," + fmFreq[5].ToString()) : "",
+ regConst,
+ shortImp,
+ stopDevs);
+ ///
+ /// Simulation
+ ///
Command lastCmd = this.cmd;
this.cmd = cmd;
this.refFlowmtrNr = refFlowmtrNr;
@@ -169,7 +193,7 @@ namespace TBF.BenchControl.Elde
this.totalRefPulses = totalRefPulses;
this.testMethods = testMethods;
this.filterConstant = filterConstant;
- this.FMFreq = FMFreq;
+ this.FMFreq = fmFreq;
this.regConst = regConst;
this.shortImp = shortImp;
this.stopDevs = stopDevs;
@@ -210,6 +234,8 @@ namespace TBF.BenchControl.Elde
/// Stabilization time when setting the flow: 0=200ms, step 50ms, max. 1.5 sec.
public void ValveMove(int regulValveNo, RegulValveMode regulValveMode, float[] regulValveValue, int stableTime)
{
+ log.InfoFormat("ValveMove({0}, {1}, [{2},{3}], {4})", regulValveNo, regulValveMode, regulValveValue[0], regulValveValue[1], stableTime);
+
this.regulValveNo = regulValveNo;
this.regulValveMode = regulValveMode;
this.regulValveValue = regulValveValue;
@@ -219,7 +245,7 @@ namespace TBF.BenchControl.Elde
{
TestBenchSim.RunDevice(regulValveNo, refFlowmtrNr, statusP);
- log.DebugFormat("refFreq=", referenceFreq);
+ log.DebugFormat("refFreq={0}", referenceFreq);
tTime += 1.0f;
diff --git a/TestBenchFramework/BenchControl/Elde/RegulValve/RegulValve.cs b/TestBenchFramework/BenchControl/Elde/RegulValve/RegulValve.cs
index 8ed2b55e1..93fddb16a 100644
--- a/TestBenchFramework/BenchControl/Elde/RegulValve/RegulValve.cs
+++ b/TestBenchFramework/BenchControl/Elde/RegulValve/RegulValve.cs
@@ -30,11 +30,10 @@ namespace TBF.BenchControl.Elde.RegulValve
public int DacValueOpen { get { return RegulValveCfg.AdcValueOpen; } } /// 0..1023
public int StableTime { get { return RegulValveCfg.StableTime; } } /// 0=200ms, step=50ms, max. 1500ms (max.26)
public int FlowStableSec { get { return RegulValveCfg.FlowStableSec; } } /// 0..60 sec
- ///
- public float Position
- {
- get { return ControlBoard.RValvePosition(Idx1); }
- }
+ ///
+ public bool IsCoax { get { return (Idx1 == COAX_IDX); } }
+ ///
+ public float Position { get { return ControlBoard.RValvePosition(Idx1); } }
#region Configuration Change Handling
diff --git a/TestBenchFramework/BenchControl/Elde/RegulValve/SetFlowOp.cs b/TestBenchFramework/BenchControl/Elde/RegulValve/SetFlowOp.cs
index f1972aabd..ca9ccc43a 100644
--- a/TestBenchFramework/BenchControl/Elde/RegulValve/SetFlowOp.cs
+++ b/TestBenchFramework/BenchControl/Elde/RegulValve/SetFlowOp.cs
@@ -17,6 +17,9 @@ namespace TBF.BenchControl.Elde.RegulValve
return string.Format("SetFlowOp({0}, Qfrom={1}, Qto={2}, PID={3})", regulValve.Name, reqFlowLo, reqFlowHi, pidCoef);
}
+ const int CoaxValveNr = 7; /// Coax. valve has number 7
+
+
/// Set by the constructor
readonly ControlBoardDev controlBoard;
readonly Elde.RegulValve.RegulValve regulValve;
@@ -267,7 +270,17 @@ namespace TBF.BenchControl.Elde.RegulValve
opState = OpState.SendCommandAgain;
return Event.None;
}
- else if (regulValveNr == 7 || controlBoard.RegulValveState(regulValveNr) != RegulValveState.DacValueRegul)
+ else if (regulValveNr == CoaxValveNr && ((ulong)controlBoard.StatusP & (ulong)StatusP.CoaxRegValveBusy) == 0)
+ {
+ /// Repeat appropriate ValveMove(...) command
+ controlBoard.ValveMove(regulValveNr, RegulValveMode.TargetPosition,
+ new float[2] { (targetPositionLo + targetPositionHi) / 2, (targetPositionLo + targetPositionHi) / 2 },
+ regulValve.StableTime);
+
+ opState = OpState.ValveMoveToPosition3;
+ return Event.None;
+ }
+ else if (regulValveNr < 6 && controlBoard.RegulValveState(regulValveNr) != RegulValveState.DacValueRegul)
{
/// Repeat appropriate ValveMove(...) command
controlBoard.ValveMove(regulValveNr, RegulValveMode.TargetPosition,
@@ -331,7 +344,19 @@ namespace TBF.BenchControl.Elde.RegulValve
opState = OpState.SendCommandAgain;
return Event.None;
}
- else if (regulValveNr == 7 || controlBoard.RegulValveState(regulValveNr) != RegulValveState.PwOrFreqRegul)
+ else if (regulValveNr == CoaxValveNr && ((ulong)controlBoard.StatusP & (ulong)StatusP.CoaxRegValveBusy) == 0)
+ {
+ /// Done once, issues an appropriate ValveMove(...) command
+ float freqLo = 2000.0f * reqFlowLo / nominalFlow;
+ float freqHi = 2000.0f * reqFlowHi / nominalFlow;
+ controlBoard.ValveMove(regulValveNr, RegulValveMode.TargetFrequency,
+ new float[2] { (freqLo + freqHi) / 2.0f, (freqLo + freqHi) / 2.0f },
+ regulValve.StableTime);
+
+ opState = OpState.ValveMoveToFlow3;
+ return Event.None;
+ }
+ else if (regulValveNr < 6 && controlBoard.RegulValveState(regulValveNr) != RegulValveState.PwOrFreqRegul)
{
/// Done once, issues an appropriate ValveMove(...) command
float freqLo = 2000.0f * reqFlowLo / nominalFlow;
@@ -376,11 +401,15 @@ namespace TBF.BenchControl.Elde.RegulValve
regulValveNr, reqFlowAve, rvPosition.ToString("F1"));
}
}
+
+ log.InfoFormat("flow = {0} m3/h (lo={1}, hi={2}, REACHED)", flow, reqFlowLo, reqFlowHi);
+
opState = OpState.FlowReached;
return Event.FlowReached;
}
else
{
+ log.InfoFormat("flow = {0} m3/h (lo={1}, hi={2}, FLOW_OK_TIMER={3}s)", flow, reqFlowLo, reqFlowHi, flowWithinBoundsTime);
return Event.None;
}
}
@@ -390,12 +419,14 @@ namespace TBF.BenchControl.Elde.RegulValve
}
else
{
+ log.InfoFormat("flow = {0} m3/h (lo={1}, hi={2})", flow, reqFlowLo, reqFlowHi);
flowWithinBoundsTime = 0;
return Event.None;
}
}
else /// opState == OpState.FlowReached
{
+ log.InfoFormat("flow = {0} m3/h (lo={1}, hi={2}, REACHED)", flow, reqFlowLo, reqFlowHi);
return Event.FlowReached;
}
}
diff --git a/TestBenchFramework/BenchControl/Elde/RegulValve/SetRegulValvePositionOp.cs b/TestBenchFramework/BenchControl/Elde/RegulValve/SetRegulValvePositionOp.cs
index a2f5e7ac0..274d2409f 100644
--- a/TestBenchFramework/BenchControl/Elde/RegulValve/SetRegulValvePositionOp.cs
+++ b/TestBenchFramework/BenchControl/Elde/RegulValve/SetRegulValvePositionOp.cs
@@ -84,7 +84,8 @@ namespace TBF.BenchControl.Elde.RegulValve
{
if (firstRun)
{
- if (posLoPct >= posHiPct || posLoPct >= 100.0f || posHiPct <= 0)
+ if (posLoPct > posHiPct || (!regulValve.IsCoax && posLoPct == posHiPct) ||
+ posLoPct > 100.0f || posHiPct < 0)
{
return Event.OpArgumentError;
}
@@ -125,10 +126,11 @@ namespace TBF.BenchControl.Elde.RegulValve
/// Stop this operation
public void Stop()
{
- controlBoard.ValveMove(regulValveNr,
- RegulValveMode.Stop,
- new float[2] { posLoPct, posHiPct },
- regulValve.StableTime);
+ if (!regulValve.IsCoax)
+ {
+ controlBoard.ValveMove(regulValveNr, RegulValveMode.Stop,
+ new float[2] { posLoPct, posHiPct }, regulValve.StableTime);
+ }
}
}
}
diff --git a/TestBenchFramework/BenchControl/Elde/RegulValveTandem/RegulValveTandem.cs b/TestBenchFramework/BenchControl/Elde/RegulValveTandem/RegulValveTandem.cs
index 7ddba7c6a..c71284d6f 100644
--- a/TestBenchFramework/BenchControl/Elde/RegulValveTandem/RegulValveTandem.cs
+++ b/TestBenchFramework/BenchControl/Elde/RegulValveTandem/RegulValveTandem.cs
@@ -29,7 +29,9 @@ namespace TBF.BenchControl.Elde.RegulValveTandem
public int FlowStableSec { get { return RegulValveTandemCfg.FlowStableSec; } } /// 0..60 sec
///
- public float Position
+ public bool IsCoax { get { return false; } }
+
+ public float Position
{
get { return regulValve.Position; }
}
diff --git a/TestBenchFramework/BenchControl/Elde/StartMeasurementOp.cs b/TestBenchFramework/BenchControl/Elde/StartMeasurementOp.cs
index f56eb6f22..0303d8494 100644
--- a/TestBenchFramework/BenchControl/Elde/StartMeasurementOp.cs
+++ b/TestBenchFramework/BenchControl/Elde/StartMeasurementOp.cs
@@ -97,8 +97,8 @@ namespace TBF.BenchControl.Elde
public void Start()
{
controlBoard.SyncRoute();
-#if IPERLST
- int flowMeterIdxAndDiv = flowMeterNr + 16 * diverterNr;
+#if IPERLST || BADGER_VELKA_TRAT
+ int flowMeterIdxAndDiv = flowMeterNr + 16 * diverterNr;
#else
int flowMeterIdxAndDiv = flowMeterNr;
#endif
diff --git a/TestBenchFramework/BenchControl/GenericDevices/IRegulValve.cs b/TestBenchFramework/BenchControl/GenericDevices/IRegulValve.cs
index 0c3324d96..29c8c9e61 100644
--- a/TestBenchFramework/BenchControl/GenericDevices/IRegulValve.cs
+++ b/TestBenchFramework/BenchControl/GenericDevices/IRegulValve.cs
@@ -10,6 +10,11 @@ namespace TBF.BenchControl.GenericDevices
{
public interface IRegulValve : IComponent
{
+ ///
+ /// true = The regulation valve is 4-20 mA current controlled coaxial valve
+ ///
+ bool IsCoax { get; }
+
///
/// Regulation valve position 0.0 .. 100.0 %
///
diff --git a/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadMassOp.cs b/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadMassOp.cs
index e915a5911..f8560163f 100644
--- a/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadMassOp.cs
+++ b/TestBenchFramework/BenchControl/MettlerToledo/Multi/ReadMassOp.cs
@@ -39,7 +39,6 @@ namespace TBF.BenchControl.MettlerToledo.Multi
/// Start this operation
public void Start()
{
- started = false;
done = false;
started = BalanceDev.GetImmediateMassMeasurement(balanceDev.IdNr, balanceDev.Name);
}
@@ -55,19 +54,21 @@ namespace TBF.BenchControl.MettlerToledo.Multi
if (!started)
{
started = BalanceDev.GetImmediateMassMeasurement(balanceDev.IdNr, balanceDev.Name);
- return Event.Busy;
+ if (!done) return Event.Busy;
+ else return Event.BalanceDone;
+ }
+ else if (started && balanceDev.MsrmntState == MsrmntState.Valid)
+ {
+ result.Val = balanceDev.Mass;
+ log.InfoFormat("ReadMassOp.Run() ... mass={0} ... returning Event.BalanceDone", balanceDev.Mass);
+ done = true;
+ started = false;
+ return Event.BalanceDone; /// Mass read OK
}
else if (done)
{
return Event.BalanceDone; /// Mass has already been read (at least once)
}
- else if (balanceDev.MsrmntState == MsrmntState.Valid)
- {
- result.Val = balanceDev.Mass;
- log.InfoFormat("ReadMassOp.Run() ... mass={0} ... returning Event.BalanceDone", balanceDev.Mass);
- done = true;
- return Event.BalanceDone; /// Mass read OK
- }
else
{
return Event.Busy;
diff --git a/TestBenchFramework/BenchControl/Sequences/SequenceBase.cs b/TestBenchFramework/BenchControl/Sequences/SequenceBase.cs
index d892a3f45..d7d0a8998 100644
--- a/TestBenchFramework/BenchControl/Sequences/SequenceBase.cs
+++ b/TestBenchFramework/BenchControl/Sequences/SequenceBase.cs
@@ -233,9 +233,10 @@ namespace TBF.BenchControl.Sequences
public enum TransitionContext
{
PurgeBegin,
- PurgeEnd,
BeforeTest,
AfterTest,
+ PurgeEnd,
+ Stop,
}
///
@@ -250,20 +251,25 @@ namespace TBF.BenchControl.Sequences
///
protected Event Transition(TransitionSequence transitionSequence, TransitionContext context)
{
+ bool stopFlag = false;
+ bool errorFlag = false;
IList e;
-
string message;
+ ///
switch (context)
{
case TransitionContext.PurgeBegin: message = Strings.Purging_i_n; break;
- case TransitionContext.PurgeEnd: message = Strings.Emptying_i_n; break;
case TransitionContext.BeforeTest: message = Strings.Test_start_sequence_i_n; break;
case TransitionContext.AfterTest: message = Strings.Test_stop_sequence_i_n; break;
- default: message = "Transition"; break;
+ case TransitionContext.PurgeEnd: message = Strings.Emptying_i_n; break;
+ case TransitionContext.Stop: message = Strings.Test_stop_sequence_i_n; break;
+ default: message = "Transition"; break;
}
if (transitionSequence == null)
{
+ log.WarnFormat("Transition(null, context={0})", context);
+
///
/// No transition sequence defined --> Default action
///
@@ -311,6 +317,9 @@ namespace TBF.BenchControl.Sequences
.List();
int stepsCount = transitionSteps.Count;
+
+ log.WarnFormat("Transition(sequence={0} ({1} steps), context={2})", transitionSequence.Name, stepsCount, context);
+
foreach (var step in transitionSteps)
{
//------------------------------------------------
@@ -346,18 +355,24 @@ namespace TBF.BenchControl.Sequences
{
if (allRegvPositions[i] >= 0) /// Negative value means no position change
{
- float lo = Math.Max(0, allRegvPositions[i] - 0.05f);
- float hi = Math.Min(100.0f, allRegvPositions[i] + 0.05f);
- rvPosOps.Add(RegulValves[i].SetRegulValvePositionOp(lo, hi, 60));
- rvPosStr.Add(string.Format("RV{0}.SetRegulValvePositionOp({1}, {2}, 60s)", i, lo, hi));
+ if (RegulValves[i].IsCoax)
+ {
+ rvPosOps.Add(RegulValves[i].SetRegulValvePositionOp(allRegvPositions[i], allRegvPositions[i], 60));
+ rvPosStr.Add(string.Format("RV{0}.SetRegulValvePositionOp({1}, {1}, 60s)", i, allRegvPositions[i]));
+ }
+ else
+ {
+ float lo = Math.Max(0, allRegvPositions[i] - 0.05f);
+ float hi = Math.Min(100.0f, allRegvPositions[i] + 0.05f);
+ rvPosOps.Add(RegulValves[i].SetRegulValvePositionOp(lo, hi, 60));
+ rvPosStr.Add(string.Format("RV{0}.SetRegulValvePositionOp({1}, {2}, 60s)", i, lo, hi));
+ }
}
}
/// Max. one SetRegulValvePositionOp can be started or stopped in one sub-step.
/// Therefore SetRegulValvePositionOp operations are added and removed to subsequent states one by one.
int delay = Math.Max(2, step.Duration - rvPosOps.Count + 2);
- bool stopFlag = false;
- bool errorFlag = false;
///
int lastStartedRV = -1;
@@ -383,7 +398,7 @@ namespace TBF.BenchControl.Sequences
}
/// Max. valaue of lastStartedRV after exitting the loop is (rvPosOps.Count - 1)
- if (!(stopFlag || errorFlag))
+ if (!stopFlag && !errorFlag)
{
log.DebugFormat("SequenceBase.Transition() : Step {0} delay {1}s, opening={2}, closing={3}", step.ItemNr + 1, delay, step.ValvesOpen, step.ValvesClose);
State stepDelay = State
@@ -446,32 +461,42 @@ namespace TBF.BenchControl.Sequences
if (e.Contains(Event.UiCmdStop)) { stopFlag = true; }
}
- if (errorFlag) return Event.Error;
- if (stopFlag) return Event.UiCmdStop;
+ if (errorFlag || stopFlag) break;
}
+
+ Bridge.OnMessage(this, string.Empty); /// Clear the last step message
}
- if (context == TransitionContext.AfterTest)
+ if (context == TransitionContext.Stop || errorFlag || stopFlag)
{
///
/// Stop the pump at the end of test
///
foreach (var fmPump in PumpsWithFM) fmPump.TurnOff();
- State.Create("SequenceBase : Test(s) completed -> Stopping the pump")
- .AddOperation(checkUiOp)
- .AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
- .AddOperation((inPath.Pump is GenericDevices.IPumpFM) ? (inPath.Pump as GenericDevices.IPumpFM).TurnOffOp() : null)
- .AddOperation(StateMachine.ControlBoard.SetValvesOp(null, inPath.Pump))
- .EnterState();
- do
+
+ if (inPath != null)
{
- e = StateMachine.WaitRunDevsRunOps();
- if (e.Contains(Event.Error)) return Event.Error;
+ State.Create("SequenceBase.Transition() : Test stopped -> Stopping the pump")
+ .AddOperation(checkUiOp)
+ .AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
+ .AddOperation((inPath.Pump is GenericDevices.IPumpFM) ? (inPath.Pump as GenericDevices.IPumpFM).TurnOffOp() : null)
+ .AddOperation(StateMachine.ControlBoard.SetValvesOp(null, inPath.Pump))
+ .EnterState();
+ do
+ {
+ e = StateMachine.WaitRunDevsRunOps();
+ if (e.Contains(Event.Error)) return Event.Error;
+ }
+ while (!e.Contains(Event.ValvesSet) || ((inPath.Pump is GenericDevices.IPumpFM) && !e.Contains(Event.TurnPumpOnOffDone)));
}
- while (!e.Contains(Event.ValvesSet) || ((inPath.Pump is GenericDevices.IPumpFM) && !e.Contains(Event.TurnPumpOnOffDone)));
}
- return Event.Done;
+ if (errorFlag)
+ return Event.Error;
+ else if (stopFlag)
+ return Event.UiCmdStop;
+ else
+ return Event.Done;
}
diff --git a/TestBenchFramework/BenchControl/TestMethods/Adjustment/AdjustmentSeq.cs b/TestBenchFramework/BenchControl/TestMethods/Adjustment/AdjustmentSeq.cs
index 2f7b81645..1dc59e305 100644
--- a/TestBenchFramework/BenchControl/TestMethods/Adjustment/AdjustmentSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/Adjustment/AdjustmentSeq.cs
@@ -377,7 +377,7 @@ namespace TBF.BenchControl.TestMethods.Adjustment
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
diff --git a/TestBenchFramework/BenchControl/TestMethods/CameraRoiDetection/RoiDetectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/CameraRoiDetection/RoiDetectionSeq.cs
index 3bca8f2f8..1d6086fc3 100644
--- a/TestBenchFramework/BenchControl/TestMethods/CameraRoiDetection/RoiDetectionSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/CameraRoiDetection/RoiDetectionSeq.cs
@@ -147,7 +147,7 @@ namespace TBF.BenchControl.TestMethods.CameraRoiDetection
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
diff --git a/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs b/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs
index bc192b483..a6e94bf55 100644
--- a/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs
@@ -496,7 +496,7 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
diff --git a/TestBenchFramework/BenchControl/TestMethods/FixedStartAdvanced/FixedStartAdvancedSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FixedStartAdvanced/FixedStartAdvancedSeq.cs
index 90e9dd356..c6624d695 100644
--- a/TestBenchFramework/BenchControl/TestMethods/FixedStartAdvanced/FixedStartAdvancedSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/FixedStartAdvanced/FixedStartAdvancedSeq.cs
@@ -592,7 +592,7 @@ namespace TBF.BenchControl.TestMethods.FixedStartAdvanced
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
diff --git a/TestBenchFramework/BenchControl/TestMethods/FixedStartCombinedMeters/FixedStartCombinedMetersSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FixedStartCombinedMeters/FixedStartCombinedMetersSeq.cs
index 8f2d4abeb..b2d1fbc3a 100644
--- a/TestBenchFramework/BenchControl/TestMethods/FixedStartCombinedMeters/FixedStartCombinedMetersSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/FixedStartCombinedMeters/FixedStartCombinedMetersSeq.cs
@@ -620,7 +620,7 @@ namespace TBF.BenchControl.TestMethods.FixedStartCombinedMeters
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
diff --git a/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs
index d615ae232..6ccf9f1d2 100644
--- a/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs
@@ -591,7 +591,7 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs
index 15aa56d36..94943a034 100644
--- a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs
@@ -347,7 +347,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStart
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs
index f90eb4d2f..6be1001e3 100644
--- a/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs
@@ -533,7 +533,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartMassCollection
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
diff --git a/TestBenchFramework/BenchControl/TestMethods/LeakTest/LeakTestSeq.cs b/TestBenchFramework/BenchControl/TestMethods/LeakTest/LeakTestSeq.cs
index 76ac7db84..715626d4d 100644
--- a/TestBenchFramework/BenchControl/TestMethods/LeakTest/LeakTestSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/LeakTest/LeakTestSeq.cs
@@ -399,9 +399,9 @@ namespace TBF.BenchControl.TestMethods.LeakTest
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
- case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
+ case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
}
diff --git a/TestBenchFramework/BenchControl/TestMethods/PMaxTest/PMaxTestSeq.cs b/TestBenchFramework/BenchControl/TestMethods/PMaxTest/PMaxTestSeq.cs
index 119c7626d..9daec886e 100644
--- a/TestBenchFramework/BenchControl/TestMethods/PMaxTest/PMaxTestSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/PMaxTest/PMaxTestSeq.cs
@@ -315,7 +315,7 @@ namespace TBF.BenchControl.TestMethods.PMaxTest
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
diff --git a/TestBenchFramework/BenchControl/TestMethods/ReferenceFlowmeterCalibration/ReferenceFlowmeterCalibrationSeq.cs b/TestBenchFramework/BenchControl/TestMethods/ReferenceFlowmeterCalibration/ReferenceFlowmeterCalibrationSeq.cs
index e4f28b2ad..c95cac436 100644
--- a/TestBenchFramework/BenchControl/TestMethods/ReferenceFlowmeterCalibration/ReferenceFlowmeterCalibrationSeq.cs
+++ b/TestBenchFramework/BenchControl/TestMethods/ReferenceFlowmeterCalibration/ReferenceFlowmeterCalibrationSeq.cs
@@ -410,9 +410,9 @@ namespace TBF.BenchControl.TestMethods.ReferenceFlowmeterCalibration
/// Transition sequence at the end of test
/// Prevent overwriting 'retVal' in case it was set to non-default value earlier
- switch (Transition(transitionAfter, TransitionContext.AfterTest))
+ switch (Transition(transitionAfter, (retVal == Event.Done) ? TransitionContext.AfterTest : TransitionContext.Stop))
{
- case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
+ case Event.Error: { if (retVal == Event.Done) retVal = Event.Error; break; }
case Event.UiCmdStop: { if (retVal == Event.Done) retVal = Event.UiCmdStop; break; }
}
diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs
index 9a31382e3..5cd0df90c 100644
--- a/TestBenchFramework/Properties/AssemblyInfo.cs
+++ b/TestBenchFramework/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.1.190.1")]
-[assembly: AssemblyFileVersion("2.1.190.1")]
+[assembly: AssemblyVersion("2.1.210.1")]
+[assembly: AssemblyFileVersion("2.1.210.1")]
diff --git a/packages/ControlBoard/Badger-velka-trat/ControlComponent3U.dll b/packages/ControlBoard/Badger-velka-trat/ControlComponent3U.dll
index acada01ec..6cb098805 100644
Binary files a/packages/ControlBoard/Badger-velka-trat/ControlComponent3U.dll and b/packages/ControlBoard/Badger-velka-trat/ControlComponent3U.dll differ