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