From 439f20bc95f93ee58d97007ced811030dc2e6cf6 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Wed, 28 Nov 2018 11:37:53 +0100 Subject: [PATCH] Modbus.UltrasoundLevelMeter : (1) telegrams with distance==0 are ignored, (2) IVolumeMeter interface removed, ver. 2.18.1078 --- DeviceTest/DeviceTestDlg.cs | 9 +-- .../Modbus/UltrasoundLevelMeter/LevelMeter.cs | 32 +++++----- .../ReadStableVolumeOp.cs | 58 ------------------- .../UltrasoundLevelMeter/ReadVolumeOp.cs | 58 ------------------- TBF/Properties/AssemblyInfo.cs | 4 +- TBF/TBF.csproj | 2 - 6 files changed, 22 insertions(+), 141 deletions(-) delete mode 100644 TBF/BenchControl/Modbus/UltrasoundLevelMeter/ReadStableVolumeOp.cs delete mode 100644 TBF/BenchControl/Modbus/UltrasoundLevelMeter/ReadVolumeOp.cs diff --git a/DeviceTest/DeviceTestDlg.cs b/DeviceTest/DeviceTestDlg.cs index 8ed370351..bfabc37c0 100644 --- a/DeviceTest/DeviceTestDlg.cs +++ b/DeviceTest/DeviceTestDlg.cs @@ -663,8 +663,7 @@ namespace DeviceTest else if (tbfComponent1forOp is TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter) { operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadLevelOp(ref dblBox1); - operation2 = (tbfComponent1forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadVolumeOp(ref dblBox2); - operation3 = (tbfComponent1forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadTempOp(ref dblBox3); + operation2 = (tbfComponent1forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadTempOp(ref dblBox3); } else if (tbfComponent1forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector) { @@ -696,8 +695,7 @@ namespace DeviceTest else if (tbfComponent2forOp is TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter) { operation21 = (tbfComponent2forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadLevelOp(ref dblBox1); - operation22 = (tbfComponent2forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadVolumeOp(ref dblBox2); - operation23 = (tbfComponent2forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadTempOp(ref dblBox3); + operation22 = (tbfComponent2forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadTempOp(ref dblBox3); } else if (tbfComponent2forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector) { @@ -729,8 +727,7 @@ namespace DeviceTest else if (tbfComponent3forOp is TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter) { operation31 = (tbfComponent3forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadLevelOp(ref dblBox1); - operation32 = (tbfComponent3forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadVolumeOp(ref dblBox2); - operation33 = (tbfComponent3forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadTempOp(ref dblBox3); + operation32 = (tbfComponent3forOp as TBF.BenchControl.Modbus.UltrasoundLevelMeter.LevelMeter).ReadTempOp(ref dblBox3); } else if (tbfComponent3forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector) { diff --git a/TBF/BenchControl/Modbus/UltrasoundLevelMeter/LevelMeter.cs b/TBF/BenchControl/Modbus/UltrasoundLevelMeter/LevelMeter.cs index 49ef3bfb6..b8c488948 100644 --- a/TBF/BenchControl/Modbus/UltrasoundLevelMeter/LevelMeter.cs +++ b/TBF/BenchControl/Modbus/UltrasoundLevelMeter/LevelMeter.cs @@ -11,7 +11,7 @@ using System.Diagnostics; namespace TBF.BenchControl.Modbus.UltrasoundLevelMeter { - public class LevelMeter : ComponentBase, GenericDevices.ILevelMeter, GenericDevices.IVolumeMeter, GenericDevices.ITempMeter, IDevice + public class LevelMeter : ComponentBase, GenericDevices.ILevelMeter, GenericDevices.ITempMeter, IDevice { private static readonly ILog log = LogManager.GetLogger(typeof(LevelMeter)); public override string ToString() { return string.Format("LevelMeter({0})", Cfg.ToString(1)); } @@ -28,7 +28,6 @@ namespace TBF.BenchControl.Modbus.UltrasoundLevelMeter double distance; /// [mm] double level; /// [mm] double percentage; /// [%] - double volume; /// [l] double temperature; /// [°C] ushort state; @@ -64,7 +63,6 @@ namespace TBF.BenchControl.Modbus.UltrasoundLevelMeter distance = 200.0; level = 0; percentage = 0; - volume = 0; temperature = 20.0; state = 0; @@ -80,15 +78,11 @@ namespace TBF.BenchControl.Modbus.UltrasoundLevelMeter public double ReadLevel() { return level; } /// Returns water level in mm - public double ReadVolume() { return volume; } /// Returns volume in l public double ReadTemperature() { return temperature; } /// Returns temperature in °C public IOperation ReadLevelOp(ref DoubleBox level) { return new ReadLevelOp(this, ref level); } public IOperation ReadStableLevelOp(ref DoubleBox level, double sdev) { return new ReadStableLevelOp(this, ref level, sdev); } public IOperation ManualReadLevelOp(ref DoubleBox level) { return null; } - public IOperation ReadVolumeOp(ref DoubleBox volume) { return new ReadVolumeOp(this, ref volume); } - public IOperation ReadStableVolumeOp(ref DoubleBox volume, double sdev) { return new ReadStableVolumeOp(this, ref volume, sdev); } - public IOperation ManualReadVolumeOp(ref DoubleBox volume) { return null; } public IOperation ReadTempOp(ref DoubleBox temperature) { return new ReadTempOp(this, ref temperature); } public IOperation ReadTempOp(ref DoubleBox temperature, Event eventDone) { return new ReadTempOp(this, ref temperature, eventDone); } @@ -109,15 +103,23 @@ namespace TBF.BenchControl.Modbus.UltrasoundLevelMeter if (telegram.Length == 15 && telegram[1] == 3 && telegram[2] == 10) { - distance = (double)(256 * telegram[3] + telegram[4]); - level = (double)(256 * telegram[5] + telegram[6]); - percentage = (double)(256 * telegram[7] + telegram[8]); - temperature = (double)256 * telegram[9] + telegram[10]; - state = (ushort)(256 * telegram[11] + telegram[12]); - volume = 0; /// TODO + double _distance = (double)(256 * telegram[3] + telegram[4]); /// [mm] + double _level = (double)(256 * telegram[5] + telegram[6]); /// [mm] + double _percentage = (double)(256 * telegram[7] + telegram[8]); /// [%] + double _temperature = (double)(256 * telegram[9] + telegram[10]); /// [°C] + ushort _state = (ushort)(256 * telegram[11] + telegram[12]); + + string line = string.Format("dist={0} mm level={1} mm, %={2} %, temp={3} °C, state={4}", + _distance, _level, _percentage, _temperature, _state); + if (_distance > 0) + { + distance = _distance; + level = _level; + percentage = _percentage; + temperature = _temperature; + state = _state; + } - string line = string.Format("dist={0} mm level={1} mm, %={2} %, temp={3} °C, volume={4} l, state={5}", - distance, level, percentage, temperature, volume, state); log.Debug(line); Debug.WriteLine(line); } diff --git a/TBF/BenchControl/Modbus/UltrasoundLevelMeter/ReadStableVolumeOp.cs b/TBF/BenchControl/Modbus/UltrasoundLevelMeter/ReadStableVolumeOp.cs deleted file mode 100644 index 30c0c4835..000000000 --- a/TBF/BenchControl/Modbus/UltrasoundLevelMeter/ReadStableVolumeOp.cs +++ /dev/null @@ -1,58 +0,0 @@ -/// -/// Copyright (c) 2018 Sensus Slovensko a.s. -/// -using System; -using log4net; -using TBF.Boxes; - -namespace TBF.BenchControl.Modbus.UltrasoundLevelMeter -{ - public class ReadStableVolumeOp : IOperation - { - private static readonly ILog log = LogManager.GetLogger(typeof(ReadVolumeOp)); - public override string ToString() { return string.Format("ReadVolumeOp(.,.)"); } - - /// Set by the constructor - readonly LevelMeter levelMeter; - readonly DoubleBox volume; - readonly double sdev; - - /// - /// Events: VolumeDone or Error - /// - /// Water volume meter reference - /// Reference to the measured volume variable, value is in l - /// Event to be returned by Run() when completed OK - public ReadStableVolumeOp(LevelMeter levelMeter, ref DoubleBox volume, double sdev) - { - if (levelMeter == null) throw new ArgumentNullException("levelMeter"); - this.levelMeter = levelMeter; - this.volume = volume; - this.sdev = sdev; - - log.Debug(this.ToString()); - } - - - /// Start this operation - public void Start() - { - volume.Val = levelMeter.ReadVolume(); - } - - /// Run this operation - /// - /// Event.VolumeDone - /// - public Event Run() - { - volume.Val = levelMeter.ReadVolume(); - return Event.VolumeDone; - } - - /// Stop this operation - public void Stop() - { - } - } -} diff --git a/TBF/BenchControl/Modbus/UltrasoundLevelMeter/ReadVolumeOp.cs b/TBF/BenchControl/Modbus/UltrasoundLevelMeter/ReadVolumeOp.cs deleted file mode 100644 index 616bddc8e..000000000 --- a/TBF/BenchControl/Modbus/UltrasoundLevelMeter/ReadVolumeOp.cs +++ /dev/null @@ -1,58 +0,0 @@ -/// -/// Copyright (c) 2018 Sensus Slovensko a.s. -/// -using System; -using log4net; -using TBF.Boxes; - -namespace TBF.BenchControl.Modbus.UltrasoundLevelMeter -{ - public class ReadVolumeOp : IOperation - { - private static readonly ILog log = LogManager.GetLogger(typeof(ReadVolumeOp)); - public override string ToString() { return string.Format("ReadVolumeOp(.,.)"); } - - /// Set by the constructor - readonly LevelMeter levelMeter; - - /// Measured value - DoubleBox volume; - - /// - /// Events: VolumeDone or Error - /// - /// Water volume meter reference - /// Reference to the measured volume variable, value is in l - /// Event to be returned by Run() when completed OK - public ReadVolumeOp(LevelMeter levelMeter, ref DoubleBox volume) - { - if (levelMeter == null) throw new ArgumentNullException("levelMeter"); - this.levelMeter = levelMeter; - this.volume = volume; - - log.Debug(this.ToString()); - } - - - /// Start this operation - public void Start() - { - volume.Val = levelMeter.ReadVolume(); - } - - /// Run this operation - /// - /// Event.VolumeDone - /// - public Event Run() - { - volume.Val = levelMeter.ReadVolume(); - return Event.VolumeDone; - } - - /// Stop this operation - public void Stop() - { - } - } -} diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index fbf46e208..03cdeaa4a 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.18.1077.0")] -[assembly: AssemblyFileVersion("2.18.1077.0")] +[assembly: AssemblyVersion("2.18.1078.0")] +[assembly: AssemblyFileVersion("2.18.1078.0")] diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index b543ec705..956b3943a 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -669,9 +669,7 @@ - -