From 1cb0345b37eb7c3229648726ae94fb5a665f1ea1 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Thu, 27 Jul 2017 09:14:02 +0300 Subject: [PATCH] Initialization of ADC open/close values and start/stop % levels for diverters redone/fixed, ver. 2.15.630 --- .../BenchControl/Elde/ControlBoardDev.cs | 16 +++++------- .../BenchControl/Elde/Diverter/Diverter.cs | 26 +++++++++++++------ .../Elde/RegulValve/RegulValve.cs | 7 ++++- TestBenchFramework/Properties/AssemblyInfo.cs | 4 +-- 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs index 9725c8ea8..1264721f9 100644 --- a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs +++ b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs @@ -120,13 +120,13 @@ namespace TBF.BenchControl.Elde /// and sent to 'controlCom2panel' by SendCalibData() method. /// public float[,] TempCalibData = new float[8, 5]; + public uint[] DiverterEdge; /// Created and initialized in this.Initialize() // Array length is the reference flowmeters count plus one #if DN100 || FUZHOU150 || FUZHOU300 || PT200IL || PUCHONG_PT200 public uint[,] RegValveCalib = new uint[8,2] {{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500}}; public byte[] MeretRS485Address = new byte[4]; public float[] EtCalib = new float[6] { 1, 1, 1, 1, 1, 1 }; - public uint[] DiverterEdge = new uint[2] { 50, 50 }; #elif GENESIS || BERLIN || PETERSBURG_200 public uint[,] RegValveCalib = new uint[16, 2] { {100,500}, {100,500}, {100,500}, {100,500}, {100,500}, {100,500}, {100,500}, {100,500}, @@ -134,27 +134,22 @@ namespace TBF.BenchControl.Elde {100,500}, {100,500}, {100,500}, {100,500} }; public byte[] MeretRS485Address = new byte[4]; public float[] EtCalib = new float[7] { 1, 1, 1, 1, 1, 1, 1 }; - public uint[] DiverterEdge = new uint[6] { 50, 50, 50, 50, 50, 50 }; #elif MUNICH || TORINO50 || BADGER_MALA_TRAT || TORUN_PT50_2015 || CEVAK_PT40_272 || TURA_IPERL || TURA_SPECIAL || MURES_PT40 || FUZHOU_40 || SLM_50 || SLM_150 || PETERSBURG_50 || KEMPNO_50 || BAHRAIN_50 public uint[,] RegValveCalib = new uint[8,2] {{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500}}; public byte[] MeretRS485Address = new byte[4]; public float[] EtCalib = new float[5] { 1, 1, 1, 1, 1 }; - public uint[] DiverterEdge = new uint[2] { 50, 50 }; #elif SLM_END || WARSAW_END public uint[,] RegValveCalib = new uint[8,2] {{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500}}; public byte[] MeretRS485Address = new byte[4]; public float[] EtCalib = new float[5] { 1, 1, 1, 1, 1 }; - public uint[] DiverterEdge = new uint[2] { 50, 50 }; #elif MALTA_WSD25 public uint[,] RegValveCalib = new uint[8,2] {{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500}}; public byte[] MeretRS485Address = new byte[12]; public float[] EtCalib = new float[9] { 1, 1, 1, 1, 1, 1, 1, 1, 1 }; - public uint[] DiverterEdge = new uint[2] { 50, 50 }; #elif BADGER_VELKA_TRAT public uint[,] RegValveCalib = new uint[8,2] {{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500},{100,500}}; public byte[] MeretRS485Address = new byte[4]; public float[] EtCalib = new float[8] { 1, 1, 1, 1, 1, 1, 1, 1 }; - public uint[] DiverterEdge = new uint[2] { 50, 50 }; #endif public uint[] BalanceRange = new uint[2]; @@ -314,10 +309,13 @@ namespace TBF.BenchControl.Elde /// Initialize this device public void Initialize() { - DiverterEdge = new uint[BenchControl.Elde.Diverter.Diverter.DivertersCount]; - for (int i = 0; i < BenchControl.Elde.Diverter.Diverter.DivertersCount; i++) + int divertersCount = BenchControl.Elde.Diverter.Diverter.DivertersCount; + + DiverterEdge = new uint[divertersCount * 2]; + for (int i = 0; i < divertersCount; i++) { - DiverterEdge[i] = (uint)BenchControl.Elde.Diverter.Diverter.DiverterLevelsPct[i]; + DiverterEdge[2 * i] = (uint)BenchControl.Elde.Diverter.Diverter.DivStartingLevelPct[i]; + DiverterEdge[2 * i + 1] = (uint)BenchControl.Elde.Diverter.Diverter.DivStoppingLevelPct[i]; } controlCom.SendCalibData(RegValveCalib, diff --git a/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs b/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs index 95c164e9b..501b3124d 100644 --- a/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs +++ b/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs @@ -25,7 +25,8 @@ namespace TBF.BenchControl.Elde.Diverter } public static int DivertersCount { get { return nextIdx; } } public static GenericDevices.IDiverter[] Diverters; - public static int[] DiverterLevelsPct; + public static int[] DivStartingLevelPct; + public static int[] DivStoppingLevelPct; protected int diverterNr; /// 0-based diverter number @@ -63,29 +64,38 @@ namespace TBF.BenchControl.Elde.Diverter if (Diverters == null || Diverters.Length < nextIdx) { GenericDevices.IDiverter[] divertersSoFar = Diverters; - int[] levelsSoFar = DiverterLevelsPct; + int[] startingLevelsSoFar = DivStartingLevelPct; + int[] stoppingLevelsSoFar = DivStoppingLevelPct; Diverters = new GenericDevices.IDiverter[nextIdx]; - DiverterLevelsPct = new int[nextIdx]; + DivStartingLevelPct = new int[nextIdx]; + DivStoppingLevelPct = new int[nextIdx]; if (divertersSoFar != null) { for (int i = 0; i < divertersSoFar.Length; i++) { Diverters[i] = divertersSoFar[i]; - DiverterLevelsPct[i] = levelsSoFar[i]; + DivStartingLevelPct[i] = startingLevelsSoFar[i]; + DivStoppingLevelPct[i] = stoppingLevelsSoFar[i]; } } Diverters[nextIdx - 1] = this; - DiverterLevelsPct[nextIdx - 1] = diverterCfg.StartingLevel; + DivStartingLevelPct[nextIdx - 1] = diverterCfg.StartingLevel; + DivStoppingLevelPct[nextIdx - 1] = diverterCfg.StoppingLevel; } /// Prepare arguments of SendCalibData() - if (diverterNr >= 0 && diverterNr < 3) + if (diverterCfg.AdcNr >= 0 && diverterCfg.AdcNr < controlBoard.RegValveCalib.GetLength(0)) { - controlBoard.RegValveCalib[5 + diverterNr, 0] = (uint)diverterCfg.AdcValueToSink; - controlBoard.RegValveCalib[5 + diverterNr, 1] = (uint)diverterCfg.AdcValueToTank; + controlBoard.RegValveCalib[diverterCfg.AdcNr, 0] = (uint)diverterCfg.AdcValueToSink; + controlBoard.RegValveCalib[diverterCfg.AdcNr, 1] = (uint)diverterCfg.AdcValueToTank; + } + else + { + log.ErrorFormat("Unable to set {0} ADC levels: RegValveCalib array size={1}, diverter AdcNr={2}", + Name, controlBoard.RegValveCalib.GetLength(0), diverterCfg.AdcNr); } log.Debug(this.ToString()); diff --git a/TestBenchFramework/BenchControl/Elde/RegulValve/RegulValve.cs b/TestBenchFramework/BenchControl/Elde/RegulValve/RegulValve.cs index bec664931..8de188a29 100644 --- a/TestBenchFramework/BenchControl/Elde/RegulValve/RegulValve.cs +++ b/TestBenchFramework/BenchControl/Elde/RegulValve/RegulValve.cs @@ -98,11 +98,16 @@ namespace TBF.BenchControl.Elde.RegulValve this.dict = new Dictionary(); - if (Idx1 != COAX_IDX) + if (Idx1 != COAX_IDX && Idx1 < ControlBoard.RegValveCalib.GetLength(0)) { this.ControlBoard.RegValveCalib[Idx1 - 1, 0] = (uint)DacValueClosed; this.ControlBoard.RegValveCalib[Idx1 - 1, 1] = (uint)DacValueOpen; } + else + { + log.ErrorFormat("Unable to set {0} ADC levels: RegValveCalib array size={1}, RV Idx1={2}, RV AdcNr={3}", + Name, ControlBoard.RegValveCalib.GetLength(0), Idx1, Idx1 - 1); + } log.Debug(this.ToString()); } diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs index 9d9a1a0b7..eeb8f9c5b 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.15.629.1")] -[assembly: AssemblyFileVersion("2.15.629.1")] +[assembly: AssemblyVersion("2.15.630.1")] +[assembly: AssemblyFileVersion("2.15.630.1")]