diff --git a/TBF/BenchControl/Dummy/Diverter/Component.cs b/TBF/BenchControl/Dummy/Diverter/Component.cs index 3598a2fdd..6794d0911 100644 --- a/TBF/BenchControl/Dummy/Diverter/Component.cs +++ b/TBF/BenchControl/Dummy/Diverter/Component.cs @@ -27,6 +27,7 @@ namespace TBF.BenchControl.Dummy.Diverter log.Debug(this.ToString()); } + public int DiverterNr { get { return 0; } } public bool State { get { return false; } } public int ThresholdGate { get { return 50; } } public int ThresholdLo { get { return 10; } } diff --git a/TBF/BenchControl/Elde/ControlBoardDev.cs b/TBF/BenchControl/Elde/ControlBoardDev.cs index 0a069e20e..e4f4b712a 100644 --- a/TBF/BenchControl/Elde/ControlBoardDev.cs +++ b/TBF/BenchControl/Elde/ControlBoardDev.cs @@ -58,7 +58,7 @@ namespace TBF.BenchControl.Elde public uint BeginState(int wmNr0) { return controlCom.BeginState(wmNr0); } public double ReferenceFlow { get { return controlCom.ReferenceFlow; } } public float RValvePosition(int rvNr1) { return controlCom.RValvePosition(rvNr1); } - public float DivSamples(int ms) { return controlCom.DivSamples(ms); } + public float DivSamples(int time, int divIx0) { return controlCom.DivSamples(time, divIx0); } /// Time unit is 2 ms public int ScopeSamples(int i, int j, int k) { return controlCom.ScopeSamples(i, j, k); } public ulong DigitalInputs { get { return controlCom.DigitalInputs; } } public float AnalogInput(int adcNr0) { return controlCom.AnalogInput(adcNr0); } diff --git a/TBF/BenchControl/Elde/ControlComSim.cs b/TBF/BenchControl/Elde/ControlComSim.cs index cdc54867c..d7985a34b 100644 --- a/TBF/BenchControl/Elde/ControlComSim.cs +++ b/TBF/BenchControl/Elde/ControlComSim.cs @@ -65,7 +65,7 @@ namespace TBF.BenchControl.Elde public float ReferenceFlow { get { return referenceFlow; } } public float RValvePosition(int rvNr1) { return 0; } - public float DivSamples(int ms) { return 0; } + public float DivSamples(int ms, int divIx0) { return 0; } public int ScopeSamples(int i, int j, int k) { return 0; } public ulong DigitalInputs { get { return 0; } } public float AnalogInput(int adcNr0) { return 0; } diff --git a/TBF/BenchControl/Elde/ControlComWrap.cs b/TBF/BenchControl/Elde/ControlComWrap.cs index 1e7dd0628..b2d0e3534 100644 --- a/TBF/BenchControl/Elde/ControlComWrap.cs +++ b/TBF/BenchControl/Elde/ControlComWrap.cs @@ -84,7 +84,7 @@ namespace TBF.BenchControl.Elde //return ctrlBrdComponent.RValvePosition[rvNr1 - 1]; return ctrlBrdComponent.Analogy[rvNr1 - 1]; /// Fixes bug: RValvePosition returns 0 all the time } - public float DivSamples(int ms) { return ctrlBrdComponent.DIVSamples[ms, 0]; } + public float DivSamples(int time, int divIx0) { return ctrlBrdComponent.DIVSamples[time, divIx0]; } /// Time unit is 2 ms public int ScopeSamples(int i, int j, int k) { return ctrlBrdComponent.ScopeSamples[i, j, k]; } public ulong DigitalInputs { get { return (ulong)ctrlBrdComponent.Vstupy; } } public float AnalogInput(int adcNr0) { return ctrlBrdComponent.Analogy[adcNr0]; } diff --git a/TBF/BenchControl/Elde/IControlCom.cs b/TBF/BenchControl/Elde/IControlCom.cs index ff306071b..54d850b4f 100644 --- a/TBF/BenchControl/Elde/IControlCom.cs +++ b/TBF/BenchControl/Elde/IControlCom.cs @@ -26,7 +26,7 @@ namespace TBF.BenchControl.Elde uint BeginState(int wmNr0); float ReferenceFlow { get; } float RValvePosition(int rvNr1); - float DivSamples(int ms); + float DivSamples(int time, int divIx0); /// time unit is 2 ms int ScopeSamples(int i, int j, int k); ulong DigitalInputs { get; } float AnalogInput(int adcNr0); diff --git a/TBF/BenchControl/Elde/ReadDiverterTransitionOp.cs b/TBF/BenchControl/Elde/ReadDiverterTransitionOp.cs index ab3726d20..77467e3d4 100644 --- a/TBF/BenchControl/Elde/ReadDiverterTransitionOp.cs +++ b/TBF/BenchControl/Elde/ReadDiverterTransitionOp.cs @@ -10,7 +10,10 @@ namespace TBF.BenchControl.Elde public class ReadDiverterTransitionOp : IOperation { private static readonly ILog log = LogManager.GetLogger(typeof(ReadDiverterTransitionOp)); - public override string ToString() { return string.Format("ReadDiverterTransitionOp()"); } + public override string ToString() + { + return string.Format("ReadDiverterTransitionOp(.,{0},{1},{2},...)", div.Name, runsCountWhenSendingCmd, runsCountWhenReadingDiv); + } const int SamplesCount = 240; /// Should be less then or equal to 256 float[] samples; @@ -68,16 +71,16 @@ namespace TBF.BenchControl.Elde { counter = 0; - if (plotter == null) + if (runsCountWhenSendingCmd == 0 && div.DiverterNr > 0) { - if (div is TBF.BenchControl.Elde.Diverter.Diverter && runsCountWhenSendingCmd == 0) - { - SendCommand(); - } + SendCommand(); + log.DebugFormat("Start() ... Sending a command to read diverter {0}", div.Name); } - else + + if (plotter != null) { plotter.Start(batchNr, testName, repetition); + log.DebugFormat("Start() ... plotter.Start({0}, {1}, {2})", batchNr, testName, repetition); } } @@ -89,29 +92,31 @@ namespace TBF.BenchControl.Elde { counter++; - if (div is TBF.BenchControl.Elde.Diverter.Diverter) + if (counter == runsCountWhenSendingCmd && div.DiverterNr > 0) { - if (counter == runsCountWhenSendingCmd) + SendCommand(); + log.DebugFormat("Run() ... Sending a command to read diverter {0}", div.Name); + } + else if (counter == runsCountWhenReadingDiv && div.DiverterNr > 0) + { + if (plotter == null) { - if (plotter == null) SendCommand(); + ReadDiverterTransitionTimes(); + log.DebugFormat("Run() ... Reading diverter {0} transition times: {1}s", div.Name, transitionTimeSec.Val); } - else if (counter == runsCountWhenReadingDiv) + else { - if (plotter == null) + log.DebugFormat("Run() ... Reading diverter {0} samples", div.Name); + for (int i = 0; i < SamplesCount; i++) { - ReadDiverterTransitionTimes(); + float oneSample = controlBoard.DivSamples(i, div.DiverterNr - 1); + samples[i] = oneSample; + plotter.Update(oneSample); } - else - { - for (int i = 0; i < SamplesCount; i++) - { - float oneSample = controlBoard.DivSamples(i); - samples[i] = oneSample; - plotter.Update(oneSample); - } + plotter.Stop(); - CalculateDiverterTransitionTimes(); - } + log.DebugFormat("Run() ... Calculating diverter {0} transition times: {1}s", div.Name, transitionTimeSec.Val); + CalculateDiverterTransitionTimes(); } } @@ -121,7 +126,7 @@ namespace TBF.BenchControl.Elde /// Stop this operation public void Stop() { - if (plotter != null) plotter.Stop(); + log.DebugFormat("Stop()"); } void SendCommand() diff --git a/TBF/BenchControl/GenericDevices/IDiverter.cs b/TBF/BenchControl/GenericDevices/IDiverter.cs index 7c1e6ff72..1eacfd490 100644 --- a/TBF/BenchControl/GenericDevices/IDiverter.cs +++ b/TBF/BenchControl/GenericDevices/IDiverter.cs @@ -7,6 +7,12 @@ namespace TBF.BenchControl.GenericDevices { public interface IDiverter : IComponent { + /// + /// 1-based diverter number in case of Elde control board connected diverter (>= 1) + /// 0 = dummy diverter + /// + int DiverterNr { get; } + /// /// Diverter state: true = to tank, false = bypass tank ///