WaitTankContainsMoreThenOp, related Various.TankWithLevelMsrmnt and TankDraining changes, ver. 2.18.1064

This commit is contained in:
Milan Hanajik 2018-11-14 11:21:27 +01:00
parent 7d1d95305f
commit 3ffdf4e2cc
16 changed files with 510 additions and 266 deletions

View File

@ -31,7 +31,7 @@ namespace TBF.BenchControl.Dummy.Balance
public double Capacity { get { return 10000.0; } } public double Capacity { get { return 10000.0; } }
public IValve DrainValve { get { return null; } } public IValve DrainValve { get { return null; } }
public IValve DrainValve2 { get { return null; } } public IValve DrainValve2 { get { return null; } }
public bool IsEmpty(double mass) { return true; } public bool ContainsMoreThen(float thld) { return (thld == 0); }
public bool IsEmpty() { return true; } public bool IsEmpty() { return true; }
public string Format { get { return "F3"; } } public string Format { get { return "F3"; } }
public int EmptyTimeSec { get { return 5; } } public int EmptyTimeSec { get { return 5; } }

View File

@ -29,10 +29,15 @@ namespace TBF.BenchControl.GenericDevices
IValve DrainValve2 { get; } IValve DrainValve2 { get; }
/// <summary> /// <summary>
/// Returns true if tank s empty, the last measured mass is less then some threshold /// Returns true if tank is empty, the last measured mass is less then some threshold
/// </summary> /// </summary>
bool IsEmpty(); bool IsEmpty();
/// <summary>
/// Returns true if tank contains more then 'thld' kg or l of water
/// </summary>
bool ContainsMoreThen(float thld);
/// <summary> /// <summary>
/// Format string to be used as ToString() argument (e.g. "F3" to obtain resolution 1g) /// Format string to be used as ToString() argument (e.g. "F3" to obtain resolution 1g)
/// </summary> /// </summary>

View File

@ -12,5 +12,6 @@ namespace TBF.BenchControl.GenericDevices
{ {
IValve DrainValve { get; } IValve DrainValve { get; }
bool IsEmpty(); bool IsEmpty();
bool ContainsMoreThen(float thld);
} }
} }

View File

@ -124,11 +124,16 @@ namespace TBF.BenchControl.MettlerToledo.Multi
log.FatalFormat("Successfully initialized device {0}", ToString()); log.FatalFormat("Successfully initialized device {0}", ToString());
} }
public bool IsEmpty() public override bool IsEmpty()
{ {
return (Mass <= balanceCfg.Empty); return (Mass <= balanceCfg.Empty);
} }
public override bool ContainsMoreThen(float thld)
{
return (Mass >= thld);
}
/// <summary> /// <summary>
/// Get a stable mass measurement /// Get a stable mass measurement
/// </summary> /// </summary>

View File

@ -128,6 +128,11 @@ namespace TBF.BenchControl.MettlerToledo.Standard
return DrainValve.State ? (mass <= balanceCfg.Empty) : (mass <= balanceCfg.EmptyUp); return DrainValve.State ? (mass <= balanceCfg.Empty) : (mass <= balanceCfg.EmptyUp);
} }
public override bool ContainsMoreThen(float thld)
{
return (mass >= thld);
}
public void ZeroWhenStable() public void ZeroWhenStable()
{ {
if (balanceCfg.DebugLevel == DebugMode.Simulate) return; if (balanceCfg.DebugLevel == DebugMode.Simulate) return;

View File

@ -1,5 +1,5 @@
/// ///
/// Copyright (c) 2017 Sensus Metering Systems /// Copyright (c) 2017-2018 Sensus Metering Systems
/// ///
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -29,13 +29,18 @@ namespace TBF.BenchControl.MettlerToledo
readonly GenericDevices.ITankDrainingCfg tankDrainingCfg; readonly GenericDevices.ITankDrainingCfg tankDrainingCfg;
private IValve drainValve; bool hasDrainValve { get { return !string.IsNullOrEmpty(tankDrainingCfg.DrainValve); } } /// Available in UI (unlike 'drainValve')
IValve drainValve;
public GenericDevices.IValve DrainValve { get { return drainValve; } } public GenericDevices.IValve DrainValve { get { return drainValve; } }
private IOperation openTheDrainValveOp; IOperation openTheDrainValveOp;
private IOperation closeTheDrainValveOp; IOperation closeTheDrainValveOp;
private IOperation waitTankEmptyOp; IOperation waitTankIsEmptyOp;
IOperation waitTankContainsMoreThenThld1Op;
IOperation waitTankContainsMoreThenThld2Op;
IOperation waitTankContainsMoreThenThld3Op;
IOperation waitTankContainsMoreThenThld4Op;
DrainState drainState; DrainState drainState;
@ -45,8 +50,12 @@ namespace TBF.BenchControl.MettlerToledo
{ {
openTheDrainValveOp = null; openTheDrainValveOp = null;
closeTheDrainValveOp = null; closeTheDrainValveOp = null;
waitTankEmptyOp = null; waitTankIsEmptyOp = null;
} waitTankContainsMoreThenThld1Op = null;
waitTankContainsMoreThenThld2Op = null;
waitTankContainsMoreThenThld3Op = null;
waitTankContainsMoreThenThld4Op = null;
}
public TankDraining(Generic.IComponentCfg cfg) public TankDraining(Generic.IComponentCfg cfg)
: base(cfg) : base(cfg)
@ -56,8 +65,12 @@ namespace TBF.BenchControl.MettlerToledo
openTheDrainValveOp = null; openTheDrainValveOp = null;
closeTheDrainValveOp = null; closeTheDrainValveOp = null;
waitTankEmptyOp = null; waitTankIsEmptyOp = null;
} waitTankContainsMoreThenThld1Op = null;
waitTankContainsMoreThenThld2Op = null;
waitTankContainsMoreThenThld3Op = null;
waitTankContainsMoreThenThld4Op = null;
}
protected void Initalize() protected void Initalize()
{ {
@ -65,8 +78,17 @@ namespace TBF.BenchControl.MettlerToledo
openTheDrainValveOp = new Elde.SetValvesOp(StateMachine.ControlBoard, drainValve, null); openTheDrainValveOp = new Elde.SetValvesOp(StateMachine.ControlBoard, drainValve, null);
closeTheDrainValveOp = new Elde.SetValvesOp(StateMachine.ControlBoard, null, drainValve); closeTheDrainValveOp = new Elde.SetValvesOp(StateMachine.ControlBoard, null, drainValve);
waitTankEmptyOp = new WaitTankEmptyOp(this); waitTankIsEmptyOp = new WaitTankEmptyOp(this);
}
Various.TankWithLevelMsrmnt.TankCfg tankCfg = tankDrainingCfg as Various.TankWithLevelMsrmnt.TankCfg;
if (tankCfg != null)
{
waitTankContainsMoreThenThld1Op = new WaitTankContainsMoreThenOp(this, tankCfg.ThldLevel1);
waitTankContainsMoreThenThld2Op = new WaitTankContainsMoreThenOp(this, tankCfg.ThldLevel2);
waitTankContainsMoreThenThld3Op = new WaitTankContainsMoreThenOp(this, tankCfg.ThldLevel3);
waitTankContainsMoreThenThld4Op = new WaitTankContainsMoreThenOp(this, tankCfg.ThldLevel4);
}
}
protected void RunBefore() protected void RunBefore()
{ {
@ -112,33 +134,65 @@ namespace TBF.BenchControl.MettlerToledo
public virtual string GetName() { return string.Empty; } public virtual string GetName() { return string.Empty; }
public virtual bool IsEmpty() { return false; } public virtual bool IsEmpty() { return false; }
public virtual bool ContainsMoreThen(float thld) { return thld == 0; }
public int ConditionsCount
public int ConditionsCount { get { return 3; } } {
get { return hasDrainValve ? 3 : ((tankDrainingCfg is Various.TankWithLevelMsrmnt.TankCfg) ? 4 : 0); }
}
/// Strings are added to the combo-box for transition sequence condition selection /// Strings are added to the combo-box for transition sequence condition selection
public string ConditionName(int i) public string ConditionName(int i)
{ {
switch (i) if (hasDrainValve)
{ {
case 0: return string.Format(Strings._0_open_the_drain_valve, Name); switch (i)
case 1: return string.Format(Strings._0_close_the_drain_valve, Name); {
case 2: return string.Format(Strings._0_wait_until_the_tank_is_empty, Name); case 0: return string.Format(Strings._0_open_the_drain_valve, Name);
default: return string.Empty; case 1: return string.Format(Strings._0_close_the_drain_valve, Name);
} case 2: return string.Format(Strings._0_wait_until_the_tank_is_empty, Name);
}
}
else if (tankDrainingCfg is Various.TankWithLevelMsrmnt.TankCfg)
{
var tankCfg = tankDrainingCfg as Various.TankWithLevelMsrmnt.TankCfg;
switch (i)
{
case 0: return string.Format(Strings._0_wait_until_tank_contains_more_then_1_l, Name, tankCfg.ThldLevel1);
case 1: return string.Format(Strings._0_wait_until_tank_contains_more_then_1_l, Name, tankCfg.ThldLevel2);
case 2: return string.Format(Strings._0_wait_until_tank_contains_more_then_1_l, Name, tankCfg.ThldLevel3);
case 3: return string.Format(Strings._0_wait_until_tank_contains_more_then_1_l, Name, tankCfg.ThldLevel4);
}
}
return string.Empty; // Default
} }
/// Operation to be executed as a part of a transition sequence /// Operation to be executed as a part of a transition sequence
public IOperation ConditionOp(int i) public IOperation ConditionOp(int i)
{ {
switch (i) if (hasDrainValve)
{ {
case 0: return openTheDrainValveOp; switch (i)
case 1: return closeTheDrainValveOp; {
case 2: return waitTankEmptyOp; case 0: return openTheDrainValveOp;
default: return null; case 1: return closeTheDrainValveOp;
} case 2: return waitTankIsEmptyOp;
}
}
else if (tankDrainingCfg is Various.TankWithLevelMsrmnt.TankCfg)
{
switch (i)
{
case 0: return waitTankContainsMoreThenThld1Op;
case 1: return waitTankContainsMoreThenThld2Op;
case 2: return waitTankContainsMoreThenThld3Op;
case 3: return waitTankContainsMoreThenThld4Op;
}
}
return null; /// Default
} }
} }
} }

View File

@ -0,0 +1,51 @@
///
/// Copyright (c) 2018 Sensus Metering Systems
///
using log4net;
namespace TBF.BenchControl.MettlerToledo
{
public class WaitTankContainsMoreThenOp : IOperation
{
private static readonly ILog log = LogManager.GetLogger(typeof(WaitTankContainsMoreThenOp));
public override string ToString() { return string.Format("WaitTankFullOp()"); }
readonly GenericDevices.ITankDraining tankDraining;
float threshodLevel;
bool conditionMet;
/// <summary>
/// Events: ConditionMet, ConditionNotMet
/// </summary>
/// <param name="tankDraining">Tank draining (Balance device) instance</param>
public WaitTankContainsMoreThenOp(GenericDevices.ITankDraining tankDraining, float thresholdLevel)
{
this.tankDraining = tankDraining;
this.threshodLevel = thresholdLevel;
log.Debug(this.ToString());
}
/// <summary>Start this operation</summary>
public void Start()
{
conditionMet = tankDraining.ContainsMoreThen(threshodLevel);
}
/// <summary>Run this operation</summary>
/// <returns>
/// Event.ConditionMet . . . tank is empty
/// Event.ConditionNotMet . tank is not empty
/// </returns>
public Event Run()
{
conditionMet = conditionMet || tankDraining.ContainsMoreThen(threshodLevel);
return conditionMet ? Event.ConditionMet : Event.ConditionNotMet;
}
/// <summary>Stop this operation</summary>
public void Stop()
{
}
}
}

View File

@ -127,6 +127,11 @@ namespace TBF.BenchControl.Various.TankWithLevelMsrmnt
return false; return false;
} }
public override bool ContainsMoreThen(float thld)
{
return (Volume >= thld);
}
/// <summary> /// <summary>
/// Loads a calibration table in CSV format (column1 = height[mm], column2 = volume[l]). /// Loads a calibration table in CSV format (column1 = height[mm], column2 = volume[l]).
/// </summary> /// </summary>

View File

@ -34,7 +34,11 @@ namespace TBF.BenchControl.Various.TankWithLevelMsrmnt
public string DrainValve2; public string DrainValve2;
public string LevelMeasurement; /// Name of a level measurement component, 'Various.ManualLevelMsrmnt' is used when left empty. public string LevelMeasurement; /// Name of a level measurement component, 'Various.ManualLevelMsrmnt' is used when left empty.
public string CalibrationTable; /// Path name of a calibration table in CSV format (column1 = height[mm], column2 = volume[l]) public float ThldLevel1; /// Threshold level 1 (used by WaitTankContainsMoreThenOp) in l or kg
public float ThldLevel2; /// Threshold level 2 - ' ' -
public float ThldLevel3; /// Threshold level 3 - ' ' -
public float ThldLevel4; /// Threshold level 4 - ' ' -
public string CalibrationTable; /// Path name of a calibration table in CSV format (column1 = height[mm], column2 = volume[l])
/// Volume calculation using formulas for std. tanks in Level2Volume() is used when left empty. /// Volume calculation using formulas for std. tanks in Level2Volume() is used when left empty.
/// Private parameterless constructor invoked by all other (public) constructors /// Private parameterless constructor invoked by all other (public) constructors

View File

@ -81,7 +81,11 @@ namespace TBF.BenchControl.Various.TankWithLevelMsrmnt
drainValve2ComboBox.Text = string.IsNullOrEmpty(config.DrainValve2) ? "---" : config.DrainValve2; drainValve2ComboBox.Text = string.IsNullOrEmpty(config.DrainValve2) ? "---" : config.DrainValve2;
drainTimeTextBox.Text = config.DrainTimeSec.ToString(); drainTimeTextBox.Text = config.DrainTimeSec.ToString();
levelMeasurementComboBox.Text = string.IsNullOrEmpty(config.LevelMeasurement) ? "---" : config.LevelMeasurement; levelMeasurementComboBox.Text = string.IsNullOrEmpty(config.LevelMeasurement) ? "---" : config.LevelMeasurement;
calibrationTableTextBox.Text = config.CalibrationTable; thresholdLevel1TextBox.Text = config.ThldLevel1.ToString();
thresholdLevel2TextBox.Text = config.ThldLevel2.ToString();
thresholdLevel3TextBox.Text = config.ThldLevel3.ToString();
thresholdLevel4TextBox.Text = config.ThldLevel4.ToString();
calibrationTableTextBox.Text = config.CalibrationTable;
} }
public void Unlock() public void Unlock()
@ -93,7 +97,11 @@ namespace TBF.BenchControl.Various.TankWithLevelMsrmnt
drainValve2ComboBox.Enabled = true; drainValve2ComboBox.Enabled = true;
drainTimeTextBox.Enabled = true; drainTimeTextBox.Enabled = true;
levelMeasurementComboBox.Enabled = true; levelMeasurementComboBox.Enabled = true;
calibrationTableTextBox.Enabled = true; thresholdLevel1TextBox.Enabled = true;
thresholdLevel2TextBox.Enabled = true;
thresholdLevel3TextBox.Enabled = true;
thresholdLevel4TextBox.Enabled = true;
calibrationTableTextBox.Enabled = true;
} }
public CfgUpdateFlags VerifyCfg(ref string message) public CfgUpdateFlags VerifyCfg(ref string message)
@ -101,13 +109,13 @@ namespace TBF.BenchControl.Various.TankWithLevelMsrmnt
CfgUpdateFlags flags = CfgUpdateFlags.None; CfgUpdateFlags flags = CfgUpdateFlags.None;
int dummy; int dummy;
float mass; float ftmp;
if (!Utils.TryParseUFloat(capacityTextBox.Text, out mass) || mass <= 0) if (!Utils.TryParseUFloat(capacityTextBox.Text, out ftmp) || ftmp <= 0)
{ {
flags |= CfgUpdateFlags.Error; flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "'Tank Capacity' is not valid"; message += Environment.NewLine + "'Tank Capacity' is not valid";
} }
if (!Utils.TryParseUFloat(emptyTextBox.Text, out mass) || mass <= 0) if (!Utils.TryParseUFloat(emptyTextBox.Text, out ftmp) || ftmp <= 0)
{ {
flags |= CfgUpdateFlags.Error; flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "'Tank Empty' is not valid"; message += Environment.NewLine + "'Tank Empty' is not valid";
@ -132,6 +140,26 @@ namespace TBF.BenchControl.Various.TankWithLevelMsrmnt
flags |= CfgUpdateFlags.Error; flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + string.Format(Strings.Invalid_0, levelMeasurementLabel.Text); message += Environment.NewLine + string.Format(Strings.Invalid_0, levelMeasurementLabel.Text);
} }
if (!Utils.TryParseUFloat(thresholdLevel1TextBox.Text, out ftmp) || ftmp <= 0)
{
flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "'Threshold level 1' is not valid";
}
if (!Utils.TryParseUFloat(thresholdLevel2TextBox.Text, out ftmp) || ftmp <= 0)
{
flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "'Threshold level 2' is not valid";
}
if (!Utils.TryParseUFloat(thresholdLevel3TextBox.Text, out ftmp) || ftmp <= 0)
{
flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "'Threshold level 3' is not valid";
}
if (!Utils.TryParseUFloat(thresholdLevel4TextBox.Text, out ftmp) || ftmp <= 0)
{
flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "'Threshold level 4' is not valid";
}
return flags; return flags;
} }
@ -149,7 +177,11 @@ namespace TBF.BenchControl.Various.TankWithLevelMsrmnt
config.DrainValve = drainValveComboBox.Text.Equals("---") ? string.Empty : drainValveComboBox.Text; config.DrainValve = drainValveComboBox.Text.Equals("---") ? string.Empty : drainValveComboBox.Text;
config.DrainValve2 = drainValve2ComboBox.Text.Equals("---") ? string.Empty : drainValve2ComboBox.Text; config.DrainValve2 = drainValve2ComboBox.Text.Equals("---") ? string.Empty : drainValve2ComboBox.Text;
config.LevelMeasurement = levelMeasurementComboBox.Text.Equals("---") ? string.Empty : levelMeasurementComboBox.Text; config.LevelMeasurement = levelMeasurementComboBox.Text.Equals("---") ? string.Empty : levelMeasurementComboBox.Text;
config.CalibrationTable = calibrationTableTextBox.Text; config.ThldLevel1 = Utils.ParseUFloat(thresholdLevel1TextBox.Text);
config.ThldLevel2 = Utils.ParseUFloat(thresholdLevel2TextBox.Text);
config.ThldLevel3 = Utils.ParseUFloat(thresholdLevel3TextBox.Text);
config.ThldLevel4 = Utils.ParseUFloat(thresholdLevel4TextBox.Text);
config.CalibrationTable = calibrationTableTextBox.Text;
return flags; return flags;
} }

View File

@ -31,232 +31,294 @@ namespace TBF.BenchControl.Various.TankWithLevelMsrmnt
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.nameTextBox = new System.Windows.Forms.TextBox(); this.nameTextBox = new System.Windows.Forms.TextBox();
this.nameLabel = new System.Windows.Forms.Label(); this.nameLabel = new System.Windows.Forms.Label();
this.classNameLabel = new System.Windows.Forms.Label(); this.classNameLabel = new System.Windows.Forms.Label();
this.capacityLabel = new System.Windows.Forms.Label(); this.capacityLabel = new System.Windows.Forms.Label();
this.capacityTextBox = new System.Windows.Forms.TextBox(); this.capacityTextBox = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.emptyTextBox = new System.Windows.Forms.TextBox(); this.emptyTextBox = new System.Windows.Forms.TextBox();
this.emptyLabel = new System.Windows.Forms.Label(); this.emptyLabel = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
this.drainTimeTextBox = new System.Windows.Forms.TextBox(); this.drainTimeTextBox = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label();
this.drainValveComboBox = new System.Windows.Forms.ComboBox(); this.drainValveComboBox = new System.Windows.Forms.ComboBox();
this.drainValveLabel = new System.Windows.Forms.Label(); this.drainValveLabel = new System.Windows.Forms.Label();
this.levelMeasurementComboBox = new System.Windows.Forms.ComboBox(); this.levelMeasurementComboBox = new System.Windows.Forms.ComboBox();
this.levelMeasurementLabel = new System.Windows.Forms.Label(); this.levelMeasurementLabel = new System.Windows.Forms.Label();
this.calibrationTableTextBox = new System.Windows.Forms.TextBox(); this.calibrationTableTextBox = new System.Windows.Forms.TextBox();
this.calibrationTableLabel = new System.Windows.Forms.Label(); this.calibrationTableLabel = new System.Windows.Forms.Label();
this.drainValve2ComboBox = new System.Windows.Forms.ComboBox(); this.drainValve2ComboBox = new System.Windows.Forms.ComboBox();
this.drainValve2Label = new System.Windows.Forms.Label(); this.drainValve2Label = new System.Windows.Forms.Label();
this.SuspendLayout(); this.label1 = new System.Windows.Forms.Label();
// this.thresholdLevel1TextBox = new System.Windows.Forms.TextBox();
// nameTextBox this.thresholdLevelsLabel = new System.Windows.Forms.Label();
// this.thresholdLevel2TextBox = new System.Windows.Forms.TextBox();
this.nameTextBox.Enabled = false; this.thresholdLevel3TextBox = new System.Windows.Forms.TextBox();
this.nameTextBox.Location = new System.Drawing.Point(127, 31); this.thresholdLevel4TextBox = new System.Windows.Forms.TextBox();
this.nameTextBox.Name = "nameTextBox"; this.SuspendLayout();
this.nameTextBox.Size = new System.Drawing.Size(142, 20); //
this.nameTextBox.TabIndex = 2; // nameTextBox
// //
// nameLabel this.nameTextBox.Enabled = false;
// this.nameTextBox.Location = new System.Drawing.Point(127, 33);
this.nameLabel.AutoSize = true; this.nameTextBox.Name = "nameTextBox";
this.nameLabel.Location = new System.Drawing.Point(16, 34); this.nameTextBox.Size = new System.Drawing.Size(142, 20);
this.nameLabel.Name = "nameLabel"; this.nameTextBox.TabIndex = 2;
this.nameLabel.Size = new System.Drawing.Size(35, 13); //
this.nameLabel.TabIndex = 1; // nameLabel
this.nameLabel.Text = "Name"; //
// this.nameLabel.AutoSize = true;
// classNameLabel this.nameLabel.Location = new System.Drawing.Point(16, 36);
// this.nameLabel.Name = "nameLabel";
this.classNameLabel.AutoSize = true; this.nameLabel.Size = new System.Drawing.Size(35, 13);
this.classNameLabel.Location = new System.Drawing.Point(124, 12); this.nameLabel.TabIndex = 1;
this.classNameLabel.Name = "classNameLabel"; this.nameLabel.Text = "Name";
this.classNameLabel.Size = new System.Drawing.Size(89, 13); //
this.classNameLabel.TabIndex = 0; // classNameLabel
this.classNameLabel.Text = "ComponentName"; //
// this.classNameLabel.AutoSize = true;
// capacityLabel this.classNameLabel.Location = new System.Drawing.Point(124, 14);
// this.classNameLabel.Name = "classNameLabel";
this.capacityLabel.AutoSize = true; this.classNameLabel.Size = new System.Drawing.Size(89, 13);
this.capacityLabel.Location = new System.Drawing.Point(16, 63); this.classNameLabel.TabIndex = 0;
this.capacityLabel.Name = "capacityLabel"; this.classNameLabel.Text = "ComponentName";
this.capacityLabel.Size = new System.Drawing.Size(75, 13); //
this.capacityLabel.TabIndex = 5; // capacityLabel
this.capacityLabel.Text = "Tank capacity"; //
// this.capacityLabel.AutoSize = true;
// capacityTextBox this.capacityLabel.Location = new System.Drawing.Point(16, 58);
// this.capacityLabel.Name = "capacityLabel";
this.capacityTextBox.Enabled = false; this.capacityLabel.Size = new System.Drawing.Size(75, 13);
this.capacityTextBox.Location = new System.Drawing.Point(127, 60); this.capacityLabel.TabIndex = 3;
this.capacityTextBox.Name = "capacityTextBox"; this.capacityLabel.Text = "Tank capacity";
this.capacityTextBox.Size = new System.Drawing.Size(43, 20); //
this.capacityTextBox.TabIndex = 6; // capacityTextBox
// //
// label2 this.capacityTextBox.Enabled = false;
// this.capacityTextBox.Location = new System.Drawing.Point(127, 55);
this.label2.AutoSize = true; this.capacityTextBox.Name = "capacityTextBox";
this.label2.Location = new System.Drawing.Point(173, 63); this.capacityTextBox.Size = new System.Drawing.Size(43, 20);
this.label2.Name = "label2"; this.capacityTextBox.TabIndex = 4;
this.label2.Size = new System.Drawing.Size(23, 13); //
this.label2.TabIndex = 7; // label2
this.label2.Text = "liter"; //
// this.label2.AutoSize = true;
// label3 this.label2.Location = new System.Drawing.Point(173, 58);
// this.label2.Name = "label2";
this.label3.AutoSize = true; this.label2.Size = new System.Drawing.Size(23, 13);
this.label3.Location = new System.Drawing.Point(173, 85); this.label2.TabIndex = 5;
this.label3.Name = "label3"; this.label2.Text = "liter";
this.label3.Size = new System.Drawing.Size(23, 13); //
this.label3.TabIndex = 10; // label3
this.label3.Text = "liter"; //
// this.label3.AutoSize = true;
// emptyTextBox this.label3.Location = new System.Drawing.Point(173, 80);
// this.label3.Name = "label3";
this.emptyTextBox.Enabled = false; this.label3.Size = new System.Drawing.Size(23, 13);
this.emptyTextBox.Location = new System.Drawing.Point(127, 82); this.label3.TabIndex = 8;
this.emptyTextBox.Name = "emptyTextBox"; this.label3.Text = "liter";
this.emptyTextBox.Size = new System.Drawing.Size(43, 20); //
this.emptyTextBox.TabIndex = 9; // emptyTextBox
// //
// emptyLabel this.emptyTextBox.Enabled = false;
// this.emptyTextBox.Location = new System.Drawing.Point(127, 77);
this.emptyLabel.AutoSize = true; this.emptyTextBox.Name = "emptyTextBox";
this.emptyLabel.Location = new System.Drawing.Point(16, 85); this.emptyTextBox.Size = new System.Drawing.Size(43, 20);
this.emptyLabel.Name = "emptyLabel"; this.emptyTextBox.TabIndex = 7;
this.emptyLabel.Size = new System.Drawing.Size(109, 13); //
this.emptyLabel.TabIndex = 8; // emptyLabel
this.emptyLabel.Text = "Tank empty threshold"; //
// this.emptyLabel.AutoSize = true;
// label4 this.emptyLabel.Location = new System.Drawing.Point(16, 80);
// this.emptyLabel.Name = "emptyLabel";
this.label4.AutoSize = true; this.emptyLabel.Size = new System.Drawing.Size(109, 13);
this.label4.Location = new System.Drawing.Point(176, 153); this.emptyLabel.TabIndex = 6;
this.label4.Name = "label4"; this.emptyLabel.Text = "Tank empty threshold";
this.label4.Size = new System.Drawing.Size(24, 13); //
this.label4.TabIndex = 17; // label4
this.label4.Text = "sec"; //
// this.label4.AutoSize = true;
// drainTimeTextBox this.label4.Location = new System.Drawing.Point(176, 148);
// this.label4.Name = "label4";
this.drainTimeTextBox.Enabled = false; this.label4.Size = new System.Drawing.Size(24, 13);
this.drainTimeTextBox.Location = new System.Drawing.Point(127, 150); this.label4.TabIndex = 15;
this.drainTimeTextBox.Name = "drainTimeTextBox"; this.label4.Text = "sec";
this.drainTimeTextBox.Size = new System.Drawing.Size(43, 20); //
this.drainTimeTextBox.TabIndex = 16; // drainTimeTextBox
// //
// label5 this.drainTimeTextBox.Enabled = false;
// this.drainTimeTextBox.Location = new System.Drawing.Point(127, 145);
this.label5.AutoSize = true; this.drainTimeTextBox.Name = "drainTimeTextBox";
this.label5.Location = new System.Drawing.Point(16, 153); this.drainTimeTextBox.Size = new System.Drawing.Size(43, 20);
this.label5.Name = "label5"; this.drainTimeTextBox.TabIndex = 14;
this.label5.Size = new System.Drawing.Size(54, 13); //
this.label5.TabIndex = 15; // label5
this.label5.Text = "Drain time"; //
// this.label5.AutoSize = true;
// drainValveComboBox this.label5.Location = new System.Drawing.Point(16, 148);
// this.label5.Name = "label5";
this.drainValveComboBox.Enabled = false; this.label5.Size = new System.Drawing.Size(54, 13);
this.drainValveComboBox.FormattingEnabled = true; this.label5.TabIndex = 13;
this.drainValveComboBox.Location = new System.Drawing.Point(127, 104); this.label5.Text = "Drain time";
this.drainValveComboBox.Name = "drainValveComboBox"; //
this.drainValveComboBox.Size = new System.Drawing.Size(143, 21); // drainValveComboBox
this.drainValveComboBox.TabIndex = 14; //
// this.drainValveComboBox.Enabled = false;
// drainValveLabel this.drainValveComboBox.FormattingEnabled = true;
// this.drainValveComboBox.Location = new System.Drawing.Point(127, 99);
this.drainValveLabel.AutoSize = true; this.drainValveComboBox.Name = "drainValveComboBox";
this.drainValveLabel.Location = new System.Drawing.Point(16, 107); this.drainValveComboBox.Size = new System.Drawing.Size(143, 21);
this.drainValveLabel.Name = "drainValveLabel"; this.drainValveComboBox.TabIndex = 10;
this.drainValveLabel.Size = new System.Drawing.Size(61, 13); //
this.drainValveLabel.TabIndex = 13; // drainValveLabel
this.drainValveLabel.Text = "Drain valve"; //
// this.drainValveLabel.AutoSize = true;
// levelMeasurementComboBox this.drainValveLabel.Location = new System.Drawing.Point(16, 102);
// this.drainValveLabel.Name = "drainValveLabel";
this.levelMeasurementComboBox.Enabled = false; this.drainValveLabel.Size = new System.Drawing.Size(61, 13);
this.levelMeasurementComboBox.FormattingEnabled = true; this.drainValveLabel.TabIndex = 9;
this.levelMeasurementComboBox.Location = new System.Drawing.Point(127, 180); this.drainValveLabel.Text = "Drain valve";
this.levelMeasurementComboBox.Name = "levelMeasurementComboBox"; //
this.levelMeasurementComboBox.Size = new System.Drawing.Size(143, 21); // levelMeasurementComboBox
this.levelMeasurementComboBox.TabIndex = 32; //
// this.levelMeasurementComboBox.Enabled = false;
// levelMeasurementLabel this.levelMeasurementComboBox.FormattingEnabled = true;
// this.levelMeasurementComboBox.Location = new System.Drawing.Point(127, 167);
this.levelMeasurementLabel.AutoSize = true; this.levelMeasurementComboBox.Name = "levelMeasurementComboBox";
this.levelMeasurementLabel.Location = new System.Drawing.Point(16, 183); this.levelMeasurementComboBox.Size = new System.Drawing.Size(143, 21);
this.levelMeasurementLabel.Name = "levelMeasurementLabel"; this.levelMeasurementComboBox.TabIndex = 17;
this.levelMeasurementLabel.Size = new System.Drawing.Size(99, 13); //
this.levelMeasurementLabel.TabIndex = 31; // levelMeasurementLabel
this.levelMeasurementLabel.Text = "Level measurement"; //
// this.levelMeasurementLabel.AutoSize = true;
// calibrationTableTextBox this.levelMeasurementLabel.Location = new System.Drawing.Point(16, 170);
// this.levelMeasurementLabel.Name = "levelMeasurementLabel";
this.calibrationTableTextBox.Enabled = false; this.levelMeasurementLabel.Size = new System.Drawing.Size(99, 13);
this.calibrationTableTextBox.Location = new System.Drawing.Point(127, 210); this.levelMeasurementLabel.TabIndex = 16;
this.calibrationTableTextBox.Name = "calibrationTableTextBox"; this.levelMeasurementLabel.Text = "Level measurement";
this.calibrationTableTextBox.Size = new System.Drawing.Size(244, 20); //
this.calibrationTableTextBox.TabIndex = 34; // calibrationTableTextBox
// //
// calibrationTableLabel this.calibrationTableTextBox.Enabled = false;
// this.calibrationTableTextBox.Location = new System.Drawing.Point(127, 212);
this.calibrationTableLabel.AutoSize = true; this.calibrationTableTextBox.Name = "calibrationTableTextBox";
this.calibrationTableLabel.Location = new System.Drawing.Point(16, 213); this.calibrationTableTextBox.Size = new System.Drawing.Size(244, 20);
this.calibrationTableLabel.Name = "calibrationTableLabel"; this.calibrationTableTextBox.TabIndex = 25;
this.calibrationTableLabel.Size = new System.Drawing.Size(82, 13); //
this.calibrationTableLabel.TabIndex = 33; // calibrationTableLabel
this.calibrationTableLabel.Text = "Calibration table"; //
// this.calibrationTableLabel.AutoSize = true;
// drainValve2ComboBox this.calibrationTableLabel.Location = new System.Drawing.Point(16, 215);
// this.calibrationTableLabel.Name = "calibrationTableLabel";
this.drainValve2ComboBox.Enabled = false; this.calibrationTableLabel.Size = new System.Drawing.Size(82, 13);
this.drainValve2ComboBox.FormattingEnabled = true; this.calibrationTableLabel.TabIndex = 24;
this.drainValve2ComboBox.Location = new System.Drawing.Point(127, 127); this.calibrationTableLabel.Text = "Calibration table";
this.drainValve2ComboBox.Name = "drainValve2ComboBox"; //
this.drainValve2ComboBox.Size = new System.Drawing.Size(143, 21); // drainValve2ComboBox
this.drainValve2ComboBox.TabIndex = 36; //
// this.drainValve2ComboBox.Enabled = false;
// drainValve2Label this.drainValve2ComboBox.FormattingEnabled = true;
// this.drainValve2ComboBox.Location = new System.Drawing.Point(127, 122);
this.drainValve2Label.AutoSize = true; this.drainValve2ComboBox.Name = "drainValve2ComboBox";
this.drainValve2Label.Location = new System.Drawing.Point(16, 130); this.drainValve2ComboBox.Size = new System.Drawing.Size(143, 21);
this.drainValve2Label.Name = "drainValve2Label"; this.drainValve2ComboBox.TabIndex = 12;
this.drainValve2Label.Size = new System.Drawing.Size(70, 13); //
this.drainValve2Label.TabIndex = 35; // drainValve2Label
this.drainValve2Label.Text = "Drain valve 2"; //
// this.drainValve2Label.AutoSize = true;
// TankCfgCtrl this.drainValve2Label.Location = new System.Drawing.Point(16, 125);
// this.drainValve2Label.Name = "drainValve2Label";
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.drainValve2Label.Size = new System.Drawing.Size(70, 13);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.drainValve2Label.TabIndex = 11;
this.Controls.Add(this.drainValve2ComboBox); this.drainValve2Label.Text = "Drain valve 2";
this.Controls.Add(this.drainValve2Label); //
this.Controls.Add(this.calibrationTableTextBox); // label1
this.Controls.Add(this.calibrationTableLabel); //
this.Controls.Add(this.levelMeasurementComboBox); this.label1.AutoSize = true;
this.Controls.Add(this.levelMeasurementLabel); this.label1.Location = new System.Drawing.Point(324, 193);
this.Controls.Add(this.drainValveComboBox); this.label1.Name = "label1";
this.Controls.Add(this.drainValveLabel); this.label1.Size = new System.Drawing.Size(23, 13);
this.Controls.Add(this.label4); this.label1.TabIndex = 23;
this.Controls.Add(this.drainTimeTextBox); this.label1.Text = "liter";
this.Controls.Add(this.label5); //
this.Controls.Add(this.label3); // thresholdLevel1TextBox
this.Controls.Add(this.emptyTextBox); //
this.Controls.Add(this.emptyLabel); this.thresholdLevel1TextBox.Enabled = false;
this.Controls.Add(this.label2); this.thresholdLevel1TextBox.Location = new System.Drawing.Point(127, 190);
this.Controls.Add(this.capacityTextBox); this.thresholdLevel1TextBox.Name = "thresholdLevel1TextBox";
this.Controls.Add(this.capacityLabel); this.thresholdLevel1TextBox.Size = new System.Drawing.Size(43, 20);
this.Controls.Add(this.nameTextBox); this.thresholdLevel1TextBox.TabIndex = 19;
this.Controls.Add(this.nameLabel); //
this.Controls.Add(this.classNameLabel); // thresholdLevelsLabel
this.Name = "TankCfgCtrl"; //
this.Size = new System.Drawing.Size(415, 250); this.thresholdLevelsLabel.AutoSize = true;
this.Load += new System.EventHandler(this.BalanceCfgCtrl_Load); this.thresholdLevelsLabel.Location = new System.Drawing.Point(16, 193);
this.ResumeLayout(false); this.thresholdLevelsLabel.Name = "thresholdLevelsLabel";
this.PerformLayout(); this.thresholdLevelsLabel.Size = new System.Drawing.Size(84, 13);
this.thresholdLevelsLabel.TabIndex = 18;
this.thresholdLevelsLabel.Text = "Threshold levels";
//
// thresholdLevel2TextBox
//
this.thresholdLevel2TextBox.Enabled = false;
this.thresholdLevel2TextBox.Location = new System.Drawing.Point(177, 190);
this.thresholdLevel2TextBox.Name = "thresholdLevel2TextBox";
this.thresholdLevel2TextBox.Size = new System.Drawing.Size(43, 20);
this.thresholdLevel2TextBox.TabIndex = 20;
//
// thresholdLevel3TextBox
//
this.thresholdLevel3TextBox.Enabled = false;
this.thresholdLevel3TextBox.Location = new System.Drawing.Point(226, 190);
this.thresholdLevel3TextBox.Name = "thresholdLevel3TextBox";
this.thresholdLevel3TextBox.Size = new System.Drawing.Size(43, 20);
this.thresholdLevel3TextBox.TabIndex = 21;
//
// thresholdLevel4TextBox
//
this.thresholdLevel4TextBox.Enabled = false;
this.thresholdLevel4TextBox.Location = new System.Drawing.Point(275, 190);
this.thresholdLevel4TextBox.Name = "thresholdLevel4TextBox";
this.thresholdLevel4TextBox.Size = new System.Drawing.Size(43, 20);
this.thresholdLevel4TextBox.TabIndex = 22;
//
// TankCfgCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.thresholdLevel4TextBox);
this.Controls.Add(this.thresholdLevel3TextBox);
this.Controls.Add(this.thresholdLevel2TextBox);
this.Controls.Add(this.label1);
this.Controls.Add(this.thresholdLevel1TextBox);
this.Controls.Add(this.thresholdLevelsLabel);
this.Controls.Add(this.drainValve2ComboBox);
this.Controls.Add(this.drainValve2Label);
this.Controls.Add(this.calibrationTableTextBox);
this.Controls.Add(this.calibrationTableLabel);
this.Controls.Add(this.levelMeasurementComboBox);
this.Controls.Add(this.levelMeasurementLabel);
this.Controls.Add(this.drainValveComboBox);
this.Controls.Add(this.drainValveLabel);
this.Controls.Add(this.label4);
this.Controls.Add(this.drainTimeTextBox);
this.Controls.Add(this.label5);
this.Controls.Add(this.label3);
this.Controls.Add(this.emptyTextBox);
this.Controls.Add(this.emptyLabel);
this.Controls.Add(this.label2);
this.Controls.Add(this.capacityTextBox);
this.Controls.Add(this.capacityLabel);
this.Controls.Add(this.nameTextBox);
this.Controls.Add(this.nameLabel);
this.Controls.Add(this.classNameLabel);
this.Name = "TankCfgCtrl";
this.Size = new System.Drawing.Size(415, 250);
this.Load += new System.EventHandler(this.BalanceCfgCtrl_Load);
this.ResumeLayout(false);
this.PerformLayout();
} }
@ -282,5 +344,11 @@ namespace TBF.BenchControl.Various.TankWithLevelMsrmnt
private System.Windows.Forms.Label calibrationTableLabel; private System.Windows.Forms.Label calibrationTableLabel;
private System.Windows.Forms.ComboBox drainValve2ComboBox; private System.Windows.Forms.ComboBox drainValve2ComboBox;
private System.Windows.Forms.Label drainValve2Label; private System.Windows.Forms.Label drainValve2Label;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox thresholdLevel1TextBox;
private System.Windows.Forms.Label thresholdLevelsLabel;
private System.Windows.Forms.TextBox thresholdLevel2TextBox;
private System.Windows.Forms.TextBox thresholdLevel3TextBox;
private System.Windows.Forms.TextBox thresholdLevel4TextBox;
} }
} }

View File

@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number // Build Number
// Revision // Revision
// //
[assembly: AssemblyVersion("2.18.1063.0")] [assembly: AssemblyVersion("2.18.1064.0")]
[assembly: AssemblyFileVersion("2.18.1063.0")] [assembly: AssemblyFileVersion("2.18.1064.0")]

View File

@ -96,6 +96,15 @@ namespace TBF.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to {0} - wait until the tank contains more then {1} ltr..
/// </summary>
internal static string _0_wait_until_tank_contains_more_then_1_l {
get {
return ResourceManager.GetString("_0_wait_until_tank_contains_more_then_1_l", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to {0} - wait until the tank is empty. /// Looks up a localized string similar to {0} - wait until the tank is empty.
/// </summary> /// </summary>

View File

@ -1882,4 +1882,7 @@
<data name="TransitionBetween_chdr" xml:space="preserve"> <data name="TransitionBetween_chdr" xml:space="preserve">
<value>Between rep. - transition</value> <value>Between rep. - transition</value>
</data> </data>
<data name="_0_wait_until_tank_contains_more_then_1_l" xml:space="preserve">
<value>{0} - wait until the tank contains more then {1} ltr.</value>
</data>
</root> </root>

View File

@ -599,6 +599,7 @@
<Compile Include="BenchControl\MettlerToledo\Standard\TaringOp.cs" /> <Compile Include="BenchControl\MettlerToledo\Standard\TaringOp.cs" />
<Compile Include="BenchControl\MettlerToledo\TankDraining.cs" /> <Compile Include="BenchControl\MettlerToledo\TankDraining.cs" />
<Compile Include="BenchControl\MettlerToledo\WaitTankEmptyOp.cs" /> <Compile Include="BenchControl\MettlerToledo\WaitTankEmptyOp.cs" />
<Compile Include="BenchControl\MettlerToledo\WaitTankContainsMoreThenOp.cs" />
<Compile Include="BenchControl\Modbus\CometAmbient\Ambient.cs" /> <Compile Include="BenchControl\Modbus\CometAmbient\Ambient.cs" />
<Compile Include="BenchControl\Modbus\CometAmbient\AmbientCfg.cs" /> <Compile Include="BenchControl\Modbus\CometAmbient\AmbientCfg.cs" />
<Compile Include="BenchControl\Modbus\CometAmbient\AmbientCfgCtrl.cs"> <Compile Include="BenchControl\Modbus\CometAmbient\AmbientCfgCtrl.cs">

View File

@ -6,6 +6,7 @@ Igor
- stabilne meranie hladiny - stabilne meranie hladiny
- niekedy neprepne diverter - niekedy neprepne diverter
- sekvencia medzi opakovanymi skuskami - sekvencia medzi opakovanymi skuskami
- podmienka pre minimalny objem vody vo vezi
- testovanie citlivosti vodomera - testovanie citlivosti vodomera
- zivotnostne: menit prietok 15 min. - zivotnostne: menit prietok 15 min.