Modbus.UltrasoundLevelMeter : (1) telegrams with distance==0 are ignored, (2) IVolumeMeter interface removed, ver. 2.18.1078
This commit is contained in:
parent
7576a68651
commit
439f20bc95
@ -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)
|
||||
{
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Events: VolumeDone or Error
|
||||
/// </summary>
|
||||
/// <param name="levelMeter">Water volume meter reference</param>
|
||||
/// <param name="volume">Reference to the measured volume variable, value is in l</param>
|
||||
/// <param name="eventDone">Event to be returned by Run() when completed OK</param>
|
||||
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());
|
||||
}
|
||||
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
volume.Val = levelMeter.ReadVolume();
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
/// <returns>
|
||||
/// Event.VolumeDone
|
||||
/// </returns>
|
||||
public Event Run()
|
||||
{
|
||||
volume.Val = levelMeter.ReadVolume();
|
||||
return Event.VolumeDone;
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Events: VolumeDone or Error
|
||||
/// </summary>
|
||||
/// <param name="levelMeter">Water volume meter reference</param>
|
||||
/// <param name="volume">Reference to the measured volume variable, value is in l</param>
|
||||
/// <param name="eventDone">Event to be returned by Run() when completed OK</param>
|
||||
public ReadVolumeOp(LevelMeter levelMeter, ref DoubleBox volume)
|
||||
{
|
||||
if (levelMeter == null) throw new ArgumentNullException("levelMeter");
|
||||
this.levelMeter = levelMeter;
|
||||
this.volume = volume;
|
||||
|
||||
log.Debug(this.ToString());
|
||||
}
|
||||
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
volume.Val = levelMeter.ReadVolume();
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
/// <returns>
|
||||
/// Event.VolumeDone
|
||||
/// </returns>
|
||||
public Event Run()
|
||||
{
|
||||
volume.Val = levelMeter.ReadVolume();
|
||||
return Event.VolumeDone;
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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")]
|
||||
|
||||
@ -669,9 +669,7 @@
|
||||
<Compile Include="BenchControl\Modbus\UltrasoundLevelMeter\LevelMeterCfg.cs" />
|
||||
<Compile Include="BenchControl\Modbus\UltrasoundLevelMeter\ReadLevelOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\UltrasoundLevelMeter\ReadStableLevelOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\UltrasoundLevelMeter\ReadStableVolumeOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\UltrasoundLevelMeter\ReadTempOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\UltrasoundLevelMeter\ReadVolumeOp.cs" />
|
||||
<Compile Include="BenchControl\Network\Adapter\AdapterInfo.cs" />
|
||||
<Compile Include="BenchControl\Network\Adapter\Netadapter.cs" />
|
||||
<Compile Include="BenchControl\Network\Adapter\Factory.cs" />
|
||||
|
||||
Loading…
Reference in New Issue
Block a user