(1) Easytherm: proc. params, (2) TankSelector: no. proc. params, seq. conditions added., SetQuidoBitOp, SelectTankOp, UnselectTankOp, ver. 2.12.490
This commit is contained in:
parent
efc3efcbfb
commit
8d572a650a
@ -265,7 +265,6 @@ namespace DeviceTest
|
||||
{
|
||||
radioButton1.Text = "SetTemperature(10)";
|
||||
radioButton2.Text = "SetTemperature(20)";
|
||||
radioButton3.Text = "GetSomethig(0,1)";
|
||||
}
|
||||
else if (className == "Modbus.TankSelector")
|
||||
{
|
||||
@ -286,7 +285,6 @@ namespace DeviceTest
|
||||
{
|
||||
radioButton21.Text = "SetTemperature(10)";
|
||||
radioButton22.Text = "SetTemperature(20)";
|
||||
radioButton23.Text = "GetSomethig(0,1)";
|
||||
}
|
||||
else if (className == "Modbus.TankSelector")
|
||||
{
|
||||
@ -307,7 +305,6 @@ namespace DeviceTest
|
||||
{
|
||||
radioButton31.Text = "SetTemperature(10)";
|
||||
radioButton32.Text = "SetTemperature(20)";
|
||||
radioButton33.Text = "GetSomethig(0,1)";
|
||||
}
|
||||
else if (className == "Modbus.TankSelector")
|
||||
{
|
||||
@ -659,7 +656,6 @@ namespace DeviceTest
|
||||
{
|
||||
operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
|
||||
operation2 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
|
||||
operation3 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).ReadTemperatureOp();
|
||||
}
|
||||
else if (tbfComponent1forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector)
|
||||
{
|
||||
@ -687,7 +683,6 @@ namespace DeviceTest
|
||||
{
|
||||
operation21 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
|
||||
operation22 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
|
||||
operation23 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).ReadTemperatureOp();
|
||||
}
|
||||
else if (tbfComponent2forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector)
|
||||
{
|
||||
@ -715,7 +710,6 @@ namespace DeviceTest
|
||||
{
|
||||
operation31 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
|
||||
operation32 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
|
||||
operation33 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).ReadTemperatureOp();
|
||||
}
|
||||
else if (tbfComponent3forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector)
|
||||
{
|
||||
|
||||
@ -361,6 +361,7 @@ namespace Results
|
||||
if (!added)
|
||||
{
|
||||
WMeterRsltItemSpec item = GetItem(0);
|
||||
item.Caption = "Prs.Err.";
|
||||
item.Format = string.Format("Parse error: {0}", strArray[i]);
|
||||
result.Add(item);
|
||||
}
|
||||
@ -369,6 +370,7 @@ namespace Results
|
||||
catch
|
||||
{
|
||||
WMeterRsltItemSpec item = GetItem(0);
|
||||
item.Caption = "Prs.Err.";
|
||||
item.Format = string.Format("Parse error: {0}", strArray[i]);
|
||||
result.Add(item);
|
||||
}
|
||||
|
||||
@ -364,7 +364,7 @@ namespace TBF.BenchControl.Elde
|
||||
{
|
||||
string statusPStr = ((ulong)bufferedStatusP).ToString("x16");
|
||||
log.InfoFormat("RunDeviceBefore() StatusP = {0}", statusPStr);
|
||||
Program.MainWnd.UpdateStatusP(statusPStr);
|
||||
//Program.MainWnd.UpdateStatusP(statusPStr); /// TODO 170309
|
||||
lastStatusP = bufferedStatusP;
|
||||
}
|
||||
}
|
||||
@ -380,7 +380,7 @@ namespace TBF.BenchControl.Elde
|
||||
{
|
||||
string statusPStr = ((ulong)bufferedStatusP).ToString("x16");
|
||||
log.InfoFormat("RunDeviceAfter() StatusP = {0}", statusPStr);
|
||||
Program.MainWnd.UpdateStatusP(statusPStr);
|
||||
//Program.MainWnd.UpdateStatusP(statusPStr); /// TODO 170309
|
||||
lastStatusP = bufferedStatusP;
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,6 +20,9 @@ namespace TBF.BenchControl.Modbus.Easytherm
|
||||
private float temperatureSetPoint;
|
||||
private bool temperatureSetPointValid;
|
||||
|
||||
public float requiredTemp { get { return easythermCfg.ProcParams.RequiredTemp; } }
|
||||
|
||||
|
||||
public Easytherm()
|
||||
{
|
||||
}
|
||||
@ -58,9 +61,18 @@ namespace TBF.BenchControl.Modbus.Easytherm
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set Easytherm controller required temperature
|
||||
/// Set Easytherm controller to required temperature procedure parameter
|
||||
/// </summary>
|
||||
/// <param name="temperature">output value</param>
|
||||
/// <returns>true = OK, false = any error</returns>
|
||||
public bool SetRequiredTemperature()
|
||||
{
|
||||
return SetTemperature(requiredTemp);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set Easytherm controller to specified temperature
|
||||
/// </summary>
|
||||
/// <param name="temperature">Temperature in °C</param>
|
||||
/// <returns>true = OK, false = any error</returns>
|
||||
public bool SetTemperature(float temperature)
|
||||
{
|
||||
@ -123,22 +135,20 @@ namespace TBF.BenchControl.Modbus.Easytherm
|
||||
/// <summary>
|
||||
/// Events: SetOpututsDone, Error
|
||||
/// </summary>
|
||||
/// <param name="temperatureSetpoint">Reference to a variable for the pressure in Bar</param>
|
||||
/// <returns>SetOutputsOp instance reference casted to IOperaton</returns>
|
||||
public IOperation SetTemperatureOp(ushort temperatureSetpoint)
|
||||
public IOperation SetRequiredTemperatureOp()
|
||||
{
|
||||
return new SetTemperatureOp(this, temperatureSetpoint);
|
||||
return new SetRequiredTemperatureOp(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Events: pressureDone, Error
|
||||
/// Events: SetOpututsDone, Error
|
||||
/// </summary>
|
||||
/// <param name="outValue">Reference to a variable for the pressure in Bar</param>
|
||||
/// <param name="setOutputsDone">Event returned when SetOutput is done</param>
|
||||
/// <param name="temperature">Reference to a variable for the pressure in Bar</param>
|
||||
/// <returns>SetOutputsOp instance reference casted to IOperaton</returns>
|
||||
public IOperation ReadTemperatureOp()
|
||||
public IOperation SetTemperatureOp(float temperature)
|
||||
{
|
||||
return new ReadTemperatureOp(this);
|
||||
return new SetTemperatureOp(this, temperature);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,9 +2,8 @@
|
||||
/// Copyright (c) 2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Xml.Serialization;
|
||||
using Config.Entities;
|
||||
using TBF.BenchControl.Generic;
|
||||
|
||||
namespace TBF.BenchControl.Modbus.Easytherm
|
||||
@ -18,13 +17,27 @@ namespace TBF.BenchControl.Modbus.Easytherm
|
||||
///
|
||||
public byte ModbusAddress; /// 1..255
|
||||
|
||||
|
||||
/// <summary> Procedure parameters </summary>
|
||||
[XmlIgnore]
|
||||
public ProcParams ProcParams;
|
||||
public override IParamsProvider GetProcedureParams() { return ProcParams; }
|
||||
public override IParamsProvider CreateProcedureParams(Procedure procedure)
|
||||
{
|
||||
ProcParams procParams = new ProcParams();
|
||||
procParams.UpdateProcedureParams(Name, procedure);
|
||||
return procParams;
|
||||
}
|
||||
|
||||
|
||||
/// Private parameterless constructor invoked by all other (public) constructors
|
||||
EasythermCfg()
|
||||
{
|
||||
Name = "Easytherm";
|
||||
ParentName = "Modbus";
|
||||
ModbusAddress = 49;
|
||||
}
|
||||
ProcParams = new ProcParams();
|
||||
}
|
||||
|
||||
public EasythermCfg(IComponentFactory factory)
|
||||
: this()
|
||||
|
||||
@ -1,41 +1,27 @@
|
||||
///
|
||||
/// Copyright (c) 2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
using Config.Entities;
|
||||
using TBF.BenchControl.Generic;
|
||||
using TBF.Resources;
|
||||
|
||||
namespace TBF.BenchControl.Modbus.TankSelector
|
||||
namespace TBF.BenchControl.Modbus.Easytherm
|
||||
{
|
||||
public class ProcParams : ProcedureParamsBase, IParamsProvider, IProcedureParams
|
||||
{
|
||||
public float TempHotHeating; /// [°C] target temperature for hot water heating
|
||||
public float TempHotCooling; /// [°C] target temperature for hot water cooling
|
||||
public float TempWarmHeating; /// [°C] target temperature for warm water heating
|
||||
public float TempWarmCooling; /// [°C] target temperature for warm water cooling
|
||||
public float TempColdCooling; /// [°C] target temperature for cold water cooling
|
||||
public float RequiredTemp; /// [°C] target temperature for temperature controlled
|
||||
|
||||
|
||||
public override void InitializeAll()
|
||||
{
|
||||
TempHotHeating = 20.0f;
|
||||
TempHotCooling = 20.0f;
|
||||
TempWarmHeating = 20.0f;
|
||||
TempWarmCooling = 20.0f;
|
||||
TempColdCooling = 20.0f;
|
||||
RequiredTemp = 20.0f;
|
||||
}
|
||||
|
||||
string[] paramNames = new string[]
|
||||
{
|
||||
Strings.T_hot_heating,
|
||||
Strings.T_hot_cooling,
|
||||
Strings.T_warm_heating,
|
||||
Strings.T_warm_cooling,
|
||||
Strings.T_cold_cooling,
|
||||
Strings.Required_temperature_C,
|
||||
};
|
||||
public override string ParamName(int i) { return paramNames[i]; }
|
||||
public override int ParamsCount() { return paramNames.Length; }
|
||||
@ -44,11 +30,7 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 0: return TempHotHeating.ToString();
|
||||
case 1: return TempHotCooling.ToString();
|
||||
case 2: return TempWarmHeating.ToString();
|
||||
case 3: return TempWarmCooling.ToString();
|
||||
case 4: return TempColdCooling.ToString();
|
||||
case 0: return RequiredTemp.ToString();
|
||||
default: return string.Empty;
|
||||
}
|
||||
}
|
||||
@ -57,28 +39,28 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 0: TempHotHeating = Utils.ParseUFloat(strValue); return;
|
||||
case 1: TempHotCooling = Utils.ParseUFloat(strValue); return;
|
||||
case 2: TempWarmHeating = Utils.ParseUFloat(strValue); return;
|
||||
case 3: TempWarmCooling = Utils.ParseUFloat(strValue); return;
|
||||
case 4: TempColdCooling = Utils.ParseUFloat(strValue); return;
|
||||
case 0: RequiredTemp = Utils.ParseUFloat(strValue); return;
|
||||
default: return;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifiy the string representation of the parameter
|
||||
/// </summary>
|
||||
/// <param name="i">Parameter ID</param>
|
||||
/// <param name="strValue">String representation of the parameter</param>
|
||||
/// <param name="message">In case false is returned this is the error messsage to be displayed</param>
|
||||
/// <returns>true = parameter OK, false = parameter NOK</returns>
|
||||
public bool ValidateParam(int i, string strValue, out string message)
|
||||
{
|
||||
message = string.Empty;
|
||||
|
||||
float dummy;
|
||||
float temp;
|
||||
switch (i)
|
||||
{
|
||||
case 0: /// T_hot_heating
|
||||
case 1: /// T_hot_cooling
|
||||
case 2: /// T_warm_heating
|
||||
case 3: /// T_warm_cooling
|
||||
case 4: /// T_cold_cooling
|
||||
if (Utils.TryParseUFloat(strValue, out dummy)) return true;
|
||||
if (Utils.TryParseUFloat(strValue, out temp) && temp > 0 && temp < 100.0f)
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
message = "Invalid index";
|
||||
@ -91,11 +73,7 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
|
||||
void CopyContentTo(ProcParams prms)
|
||||
{
|
||||
prms.TempHotHeating = this.TempHotHeating;
|
||||
prms.TempHotCooling = this.TempHotCooling;
|
||||
prms.TempWarmHeating = this.TempWarmHeating;
|
||||
prms.TempWarmCooling = this.TempWarmCooling;
|
||||
prms.TempColdCooling = this.TempColdCooling;
|
||||
prms.RequiredTemp = this.RequiredTemp;
|
||||
}
|
||||
|
||||
public IParamsProvider Clone()
|
||||
@ -7,15 +7,14 @@ using TBF.Boxes;
|
||||
|
||||
namespace TBF.BenchControl.Modbus.Easytherm
|
||||
{
|
||||
public class ReadTemperatureOp : IOperation
|
||||
public class SetRequiredTemperatureOp : IOperation
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(SetTemperatureOp));
|
||||
public override string ToString() { return string.Format("SetOutputsOp(.,{0},{1})", outValue, eventDone); }
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(SetRequiredTemperatureOp));
|
||||
public override string ToString() { return string.Format("SetRequiredTemperatureOp({0})", eventDone); }
|
||||
|
||||
/// Set by the constructor
|
||||
readonly Easytherm easytherm;
|
||||
readonly Event eventDone;
|
||||
ushort outValue;
|
||||
|
||||
/// <summary>
|
||||
/// Events: PressureInDone, PressureOutDone or Error
|
||||
@ -23,25 +22,24 @@ namespace TBF.BenchControl.Modbus.Easytherm
|
||||
/// <param name="easytherm">Pressure meter reference</param>
|
||||
/// <param name="pressure">Reference to the measured pressure variable, value is in bar</param>
|
||||
/// <param name="eventDone">Event to be returned by Run() when completed OK</param>
|
||||
public ReadTemperatureOp(Easytherm easytherm, Event eventDone)
|
||||
public SetRequiredTemperatureOp(Easytherm easytherm, Event eventDone)
|
||||
{
|
||||
if (easytherm == null) throw new ArgumentNullException("easytherm");
|
||||
this.easytherm = easytherm;
|
||||
//this.outValue = outValue;
|
||||
this.eventDone = eventDone;
|
||||
|
||||
log.Debug(this.ToString());
|
||||
}
|
||||
public ReadTemperatureOp(Easytherm easytherm)
|
||||
: this(easytherm, Event.Done)
|
||||
public SetRequiredTemperatureOp(Easytherm easytherm)
|
||||
: this(easytherm, Event.ConditionMet)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
easytherm.GetSomething(0, 1);
|
||||
}
|
||||
easytherm.SetRequiredTemperature();
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
public Event Run()
|
||||
@ -10,7 +10,7 @@ namespace TBF.BenchControl.Modbus.Easytherm
|
||||
public class SetTemperatureOp : IOperation
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(SetTemperatureOp));
|
||||
public override string ToString() { return string.Format("SetTemperatureOp(.,{0},{1})", temperatureSetpoint, eventDone); }
|
||||
public override string ToString() { return string.Format("SetTemperatureOp({0},{1})", temperatureSetpoint, eventDone); }
|
||||
|
||||
/// Set by the constructor
|
||||
readonly Easytherm easytherm;
|
||||
|
||||
@ -73,6 +73,28 @@ namespace TBF.BenchControl.Modbus.QuidoRS
|
||||
SendOutputs(currentOutputs);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set bit(s) specified by a bitMask. Leave other bits unaffeced.
|
||||
/// </summary>
|
||||
/// <param name="bitMask">Specifies bit(s) to set</param>
|
||||
/// <param name="outputs">output value</param>
|
||||
public void SetBit(ushort bitMask)
|
||||
{
|
||||
currentOutputs = (UInt16)((Int32)currentOutputs | (Int32)bitMask);
|
||||
SendOutputs(currentOutputs);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reset bit(s) specified by a bitMask. Leave other bits unaffeced.
|
||||
/// </summary>
|
||||
/// <param name="bitMask">Specifies bit(s) to reset</param>
|
||||
/// <param name="outputs">output value</param>
|
||||
public void ResetBit(ushort bitMask)
|
||||
{
|
||||
currentOutputs = (UInt16)((Int32)currentOutputs & (~(Int32)bitMask));
|
||||
SendOutputs(currentOutputs);
|
||||
}
|
||||
|
||||
private void SendOutputs(ushort outputs)
|
||||
{
|
||||
byte[] msg = new byte[11];
|
||||
|
||||
@ -3,45 +3,59 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
{
|
||||
public class SelectTankOp : IOperation
|
||||
{
|
||||
public enum OpSpecifier
|
||||
{
|
||||
None,
|
||||
SelectTank,
|
||||
UnselectTank, /// tankNo is ignored, the selected tank is unselected
|
||||
}
|
||||
|
||||
TankSelector tankSelector;
|
||||
OpSpecifier currentOp;
|
||||
int tankNo;
|
||||
ushort bitMask;
|
||||
bool alreadySet;
|
||||
int time;
|
||||
|
||||
public SelectTankOp(TankSelector tankSelector, OpSpecifier op, int tankNo)
|
||||
public SelectTankOp(TankSelector tankSelector, int tankNo)
|
||||
{
|
||||
this.tankSelector = tankSelector;
|
||||
this.currentOp = op;
|
||||
if (currentOp == OpSpecifier.SelectTank) this.tankNo = tankNo;
|
||||
this.tankNo = tankNo;
|
||||
this.bitMask = (ushort)((tankNo == 1) ? 1 : ((tankNo == 2) ? 2 : ((tankNo == 3) ? 4 : 0)));
|
||||
}
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
switch (currentOp)
|
||||
if (tankSelector.CurrentlySelectedTankValid && (tankNo == tankSelector.CurrentlySelectedTank))
|
||||
{
|
||||
case OpSpecifier.SelectTank:
|
||||
tankSelector.SetOutputs((tankNo == 1) ? 1u : ((tankNo == 2) ? 2u : ((tankNo == 3) ? 4u : 0)));
|
||||
break;
|
||||
case OpSpecifier.UnselectTank:
|
||||
tankSelector.SetOutputs((tankNo == 1) ? 8u : ((tankNo == 2) ? 16u : ((tankNo == 3) ? 32u : 0)));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
alreadySet = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
tankSelector.CurrentlySelectedTank = tankNo;
|
||||
tankSelector.CurrentlySelectedTankValid = true;
|
||||
alreadySet = false;
|
||||
time = 0;
|
||||
|
||||
tankSelector.QuidoRS.SetBit(bitMask);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
public Event Run()
|
||||
{
|
||||
tankSelector.SetOutputs(0);
|
||||
return Event.ConditionMet;
|
||||
if (alreadySet)
|
||||
{
|
||||
return Event.ConditionMet;
|
||||
}
|
||||
else if (time == 0)
|
||||
{
|
||||
tankSelector.QuidoRS.ResetBit(bitMask);
|
||||
time++;
|
||||
return Event.ConditionNotMet;
|
||||
}
|
||||
else if (time <= 60)
|
||||
{
|
||||
time++;
|
||||
return Event.ConditionNotMet;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Event.ConditionMet;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
|
||||
@ -0,0 +1,57 @@
|
||||
|
||||
namespace TBF.BenchControl.Modbus.TankSelector
|
||||
{
|
||||
public class SetQuidoBitOp : IOperation
|
||||
{
|
||||
public enum OpSpecifier
|
||||
{
|
||||
None,
|
||||
SelectTank,
|
||||
UnselectTank, /// tankNo is ignored, the selected tank is unselected
|
||||
}
|
||||
|
||||
readonly TBF.BenchControl.Modbus.QuidoRS.QuidoRS quidoRS;
|
||||
readonly ushort bitMask;
|
||||
readonly bool set; /// true = set, false = reset
|
||||
readonly Event eventDone;
|
||||
|
||||
|
||||
public SetQuidoBitOp(TBF.BenchControl.Modbus.QuidoRS.QuidoRS quidoRS, TankSelector.QuidoOutputs bitMask, bool set)
|
||||
: this(quidoRS, (ushort)bitMask, set, Event.ConditionMet)
|
||||
{
|
||||
}
|
||||
|
||||
public SetQuidoBitOp(TBF.BenchControl.Modbus.QuidoRS.QuidoRS quidoRS, ushort bitMask, bool set)
|
||||
: this(quidoRS, bitMask, set, Event.ConditionMet)
|
||||
{
|
||||
}
|
||||
|
||||
public SetQuidoBitOp(TBF.BenchControl.Modbus.QuidoRS.QuidoRS quidoRS, ushort bitMask, bool set, Event eventDone)
|
||||
{
|
||||
this.quidoRS = quidoRS;
|
||||
this.bitMask = bitMask;
|
||||
this.set = set;
|
||||
this.eventDone = eventDone;
|
||||
}
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
if (set)
|
||||
quidoRS.SetBit(bitMask);
|
||||
else
|
||||
quidoRS.ResetBit(bitMask);
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
public Event Run()
|
||||
{
|
||||
return eventDone;
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -18,7 +18,7 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
|
||||
readonly TankSelectorCfg tankSelectorCfg;
|
||||
|
||||
readonly TBF.BenchControl.Modbus.QuidoRS.QuidoRS quidoRS;
|
||||
public readonly TBF.BenchControl.Modbus.QuidoRS.QuidoRS QuidoRS;
|
||||
|
||||
readonly TBF.BenchControl.Modbus.Easytherm.Easytherm hotHeating;
|
||||
readonly TBF.BenchControl.Modbus.Easytherm.Easytherm hotCooling;
|
||||
@ -31,10 +31,13 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
IList<IOperation> sequenceConditions;
|
||||
|
||||
|
||||
public int CurrentlySelectedTank;
|
||||
public bool CurrentlySelectedTankValid;
|
||||
|
||||
/// <summary>
|
||||
/// Quido digital out board outputs assignment
|
||||
/// </summary>
|
||||
private enum QuidoOutputs
|
||||
public enum QuidoOutputs : ushort
|
||||
{
|
||||
None = 0,
|
||||
SelectColdTank = 0x0001,
|
||||
@ -62,14 +65,15 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
{
|
||||
tankSelectorCfg = cfg as TankSelectorCfg;
|
||||
|
||||
quidoRS = (TBF.BenchControl.Modbus.QuidoRS.QuidoRS)TbfComponents.FindComponent(cfg.ParentName, components);
|
||||
if (quidoRS == null) throw new Exception(string.Format("Cannot find parent '{0}' of the component {1}", cfg.ParentName, Name));
|
||||
QuidoRS = (TBF.BenchControl.Modbus.QuidoRS.QuidoRS)TbfComponents.FindComponent(cfg.ParentName, components);
|
||||
if (QuidoRS == null) throw new Exception(string.Format("Cannot find parent '{0}' of the component {1}", cfg.ParentName, Name));
|
||||
|
||||
hotHeating = (TBF.BenchControl.Modbus.Easytherm.Easytherm)TbfComponents.FindComponent(tankSelectorCfg.HotWaterHeating, components);
|
||||
hotCooling = (TBF.BenchControl.Modbus.Easytherm.Easytherm)TbfComponents.FindComponent(tankSelectorCfg.HotWaterCooling, components);
|
||||
warmHeating = (TBF.BenchControl.Modbus.Easytherm.Easytherm)TbfComponents.FindComponent(tankSelectorCfg.WarmWaterHeating, components);
|
||||
warmCooling = (TBF.BenchControl.Modbus.Easytherm.Easytherm)TbfComponents.FindComponent(tankSelectorCfg.WarmWaterCooling, components);
|
||||
coldCooling = (TBF.BenchControl.Modbus.Easytherm.Easytherm)TbfComponents.FindComponent(tankSelectorCfg.ColdWaterCooling, components);
|
||||
|
||||
if (hotHeating == null) throw new Exception(string.Format("Component '{0}' cannot find temperature controller '{1}'", Name, tankSelectorCfg.HotWaterHeating));
|
||||
if (hotCooling == null) throw new Exception(string.Format("Component '{0}' cannot find temperature controller '{1}'", Name, tankSelectorCfg.HotWaterCooling));
|
||||
if (warmHeating == null) throw new Exception(string.Format("Component '{0}' cannot find temperature controller '{1}'", Name, tankSelectorCfg.WarmWaterHeating));
|
||||
@ -78,34 +82,96 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
|
||||
CreateConditions(true);
|
||||
|
||||
CurrentlySelectedTankValid = false;
|
||||
|
||||
log.Debug(this.ToString());
|
||||
}
|
||||
|
||||
public void Initialize() { SetOutputs(0); }
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
SetOutputs(0);
|
||||
}
|
||||
public void RunDeviceBefore() {}
|
||||
public void RunDeviceAfter() {}
|
||||
public void StopDevice() {}
|
||||
|
||||
|
||||
|
||||
|
||||
void CreateConditions(bool createAll)
|
||||
{
|
||||
sequenceConditionNames = new List<string>();
|
||||
sequenceConditionNames.Add(Strings.Select_COLD_tank);
|
||||
sequenceConditionNames.Add(Strings.Select_WARM_tank);
|
||||
sequenceConditionNames.Add(Strings.Select_HOT_tank);
|
||||
sequenceConditionNames.Add(Strings.Unselect_COLD_tank);
|
||||
sequenceConditionNames.Add(Strings.Unselect_WARM_tank);
|
||||
sequenceConditionNames.Add(Strings.Unselect_HOT_tank);
|
||||
sequenceConditions = new List<IOperation>();
|
||||
|
||||
if (createAll)
|
||||
{
|
||||
sequenceConditions = new List<IOperation>();
|
||||
sequenceConditions.Add(new SelectTankOp(this, SelectTankOp.OpSpecifier.SelectTank, 1));
|
||||
sequenceConditions.Add(new SelectTankOp(this, SelectTankOp.OpSpecifier.SelectTank, 2));
|
||||
sequenceConditions.Add(new SelectTankOp(this, SelectTankOp.OpSpecifier.SelectTank, 3));
|
||||
sequenceConditions.Add(new SelectTankOp(this, SelectTankOp.OpSpecifier.UnselectTank, 1));
|
||||
sequenceConditions.Add(new SelectTankOp(this, SelectTankOp.OpSpecifier.UnselectTank, 2));
|
||||
sequenceConditions.Add(new SelectTankOp(this, SelectTankOp.OpSpecifier.UnselectTank, 3));
|
||||
}
|
||||
sequenceConditionNames.Add(Strings.Select_COLD_tank);
|
||||
if (createAll) sequenceConditions.Add(new SelectTankOp(this, 1));
|
||||
|
||||
sequenceConditionNames.Add(Strings.Select_WARM_tank);
|
||||
if (createAll) sequenceConditions.Add(new SelectTankOp(this, 2));
|
||||
|
||||
sequenceConditionNames.Add(Strings.Select_HOT_tank);
|
||||
if (createAll) sequenceConditions.Add(new SelectTankOp(this, 3));
|
||||
|
||||
sequenceConditionNames.Add(Strings.Unselect_COLD_tank);
|
||||
if (createAll) sequenceConditions.Add(new UnselectTankOp(this, 1));
|
||||
|
||||
sequenceConditionNames.Add(Strings.Unselect_WARM_tank);
|
||||
if (createAll) sequenceConditions.Add(new UnselectTankOp(this, 2));
|
||||
|
||||
sequenceConditionNames.Add(Strings.Unselect_HOT_tank);
|
||||
if (createAll) sequenceConditions.Add(new UnselectTankOp(this, 3));
|
||||
|
||||
sequenceConditionNames.Add(Strings.Set_hot_water_heating_temperature);
|
||||
if (createAll) sequenceConditions.Add(hotHeating.SetRequiredTemperatureOp());
|
||||
|
||||
sequenceConditionNames.Add(Strings.Set_hot_water_cooling_temperature);
|
||||
if (createAll) sequenceConditions.Add(hotCooling.SetRequiredTemperatureOp());
|
||||
|
||||
sequenceConditionNames.Add(Strings.Set_warm_water_heating_temperature);
|
||||
if (createAll) sequenceConditions.Add(warmHeating.SetRequiredTemperatureOp());
|
||||
|
||||
sequenceConditionNames.Add(Strings.Set_warm_water_cooling_temperature);
|
||||
if (createAll) sequenceConditions.Add(warmCooling.SetRequiredTemperatureOp());
|
||||
|
||||
sequenceConditionNames.Add(Strings.Set_cold_water_cooling_temperature);
|
||||
if (createAll) sequenceConditions.Add(coldCooling.SetRequiredTemperatureOp());
|
||||
|
||||
sequenceConditionNames.Add("Start heating hot water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.HeatingHotTank, true));
|
||||
|
||||
sequenceConditionNames.Add("Stop heating hot water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.HeatingHotTank, false));
|
||||
|
||||
sequenceConditionNames.Add("Start cooling hot water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.CoolingHotTank, true));
|
||||
|
||||
sequenceConditionNames.Add("Stop cooling hot water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.CoolingHotTank, false));
|
||||
|
||||
sequenceConditionNames.Add("Start heating warm water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.HeatingWarmTank, true));
|
||||
|
||||
sequenceConditionNames.Add("Stop heating warm water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.HeatingWarmTank, false));
|
||||
|
||||
sequenceConditionNames.Add("Start cooling warm water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.CoolingWarmTank, true));
|
||||
|
||||
sequenceConditionNames.Add("Stop cooling warm water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.CoolingWarmTank, false));
|
||||
|
||||
sequenceConditionNames.Add("Start cooling cold water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.CoolingColdTank, true));
|
||||
|
||||
sequenceConditionNames.Add("Stop cooling cold water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.CoolingColdTank, false));
|
||||
|
||||
sequenceConditionNames.Add("Start mixing water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.Mixing, true));
|
||||
|
||||
sequenceConditionNames.Add("Stop mixing water");
|
||||
if (createAll) sequenceConditions.Add(new SetQuidoBitOp(QuidoRS, QuidoOutputs.Mixing, false));
|
||||
}
|
||||
|
||||
|
||||
@ -115,7 +181,7 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
/// <param name="outputs">output value</param>
|
||||
public void SetOutputs(uint outputs)
|
||||
{
|
||||
quidoRS.SetOutputs((ushort)outputs);
|
||||
QuidoRS.SetOutputs((ushort)outputs);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
///
|
||||
/// Copyright (c) 2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Config.Entities;
|
||||
using TBF.BenchControl.Generic;
|
||||
|
||||
namespace TBF.BenchControl.Modbus.TankSelector
|
||||
@ -22,24 +19,11 @@ namespace TBF.BenchControl.Modbus.TankSelector
|
||||
public string ColdWaterCooling; /// Name of the component communicating with the temperature controller
|
||||
|
||||
|
||||
/// <summary> Procedure parameters </summary>
|
||||
[XmlIgnore]
|
||||
public ProcParams ProcParams;
|
||||
public override IParamsProvider GetProcedureParams() { return ProcParams; }
|
||||
public override IParamsProvider CreateProcedureParams(Procedure procedure)
|
||||
{
|
||||
ProcParams procParams = new ProcParams();
|
||||
procParams.UpdateProcedureParams(Name, procedure);
|
||||
return procParams;
|
||||
}
|
||||
|
||||
|
||||
/// Private parameterless constructor invoked by all other (public) constructors
|
||||
TankSelectorCfg()
|
||||
{
|
||||
Name = "TankSelector";
|
||||
ParentName = "QuidoRS";
|
||||
ProcParams = new ProcParams();
|
||||
}
|
||||
|
||||
public TankSelectorCfg(IComponentFactory factory)
|
||||
|
||||
@ -0,0 +1,66 @@
|
||||
|
||||
namespace TBF.BenchControl.Modbus.TankSelector
|
||||
{
|
||||
public class UnselectTankOp : IOperation
|
||||
{
|
||||
TankSelector tankSelector;
|
||||
int tankNo;
|
||||
ushort bitMask;
|
||||
bool alreadyUnselected;
|
||||
int time;
|
||||
|
||||
public UnselectTankOp(TankSelector tankSelector, int tankNo)
|
||||
{
|
||||
this.tankSelector = tankSelector;
|
||||
this.tankNo = tankNo;
|
||||
this.bitMask = (ushort)((tankNo == 1) ? 8 : ((tankNo == 2) ? 0x10 : ((tankNo == 3) ? 0x20 : 0)));
|
||||
}
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
if (tankSelector.CurrentlySelectedTankValid && (tankNo == 0))
|
||||
{
|
||||
alreadyUnselected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
tankSelector.CurrentlySelectedTank = tankNo;
|
||||
tankSelector.CurrentlySelectedTankValid = true;
|
||||
alreadyUnselected = false;
|
||||
time = 0;
|
||||
|
||||
tankSelector.QuidoRS.SetBit(bitMask);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
public Event Run()
|
||||
{
|
||||
if (alreadyUnselected)
|
||||
{
|
||||
return Event.ConditionMet;
|
||||
}
|
||||
else if (time == 0)
|
||||
{
|
||||
tankSelector.QuidoRS.ResetBit(bitMask);
|
||||
time++;
|
||||
return Event.ConditionNotMet;
|
||||
}
|
||||
else if (time <= 60)
|
||||
{
|
||||
time++;
|
||||
return Event.ConditionNotMet;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Event.ConditionMet;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -264,7 +264,7 @@ namespace TBF
|
||||
IList<IComponent> other = new List<IComponent>();
|
||||
foreach (var cmpnt in TbfComponents)
|
||||
{
|
||||
if (cmpnt is TBF.BenchControl.Modbus.TankSelector.TankSelector) other.Add(cmpnt);
|
||||
if (cmpnt is TBF.BenchControl.Modbus.Easytherm.Easytherm) other.Add(cmpnt);
|
||||
}
|
||||
|
||||
if (other.Count > 0)
|
||||
|
||||
@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("2.12.489.1")]
|
||||
[assembly: AssemblyFileVersion("2.12.489.1")]
|
||||
[assembly: AssemblyVersion("2.12.490.1")]
|
||||
[assembly: AssemblyFileVersion("2.12.490.1")]
|
||||
|
||||
66
TestBenchFramework/Resources/Strings.Designer.cs
generated
66
TestBenchFramework/Resources/Strings.Designer.cs
generated
@ -3255,6 +3255,15 @@ namespace TBF.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Required temperature [°C].
|
||||
/// </summary>
|
||||
internal static string Required_temperature_C {
|
||||
get {
|
||||
return ResourceManager.GetString("Required_temperature_C", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Resistance.
|
||||
/// </summary>
|
||||
@ -3364,7 +3373,7 @@ namespace TBF.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Select COLD tank.
|
||||
/// Looks up a localized string similar to Select COLD water.
|
||||
/// </summary>
|
||||
internal static string Select_COLD_tank {
|
||||
get {
|
||||
@ -3382,7 +3391,7 @@ namespace TBF.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Select HOT tank.
|
||||
/// Looks up a localized string similar to Select HOT water.
|
||||
/// </summary>
|
||||
internal static string Select_HOT_tank {
|
||||
get {
|
||||
@ -3391,7 +3400,7 @@ namespace TBF.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Select WORM tank.
|
||||
/// Looks up a localized string similar to Select WARM water.
|
||||
/// </summary>
|
||||
internal static string Select_WARM_tank {
|
||||
get {
|
||||
@ -3471,6 +3480,15 @@ namespace TBF.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Set cold water cooling temperature.
|
||||
/// </summary>
|
||||
internal static string Set_cold_water_cooling_temperature {
|
||||
get {
|
||||
return ResourceManager.GetString("Set_cold_water_cooling_temperature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Set flow.
|
||||
/// </summary>
|
||||
@ -3480,6 +3498,24 @@ namespace TBF.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Set hot water cooling temperature.
|
||||
/// </summary>
|
||||
internal static string Set_hot_water_cooling_temperature {
|
||||
get {
|
||||
return ResourceManager.GetString("Set_hot_water_cooling_temperature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Set hot water heating temperature.
|
||||
/// </summary>
|
||||
internal static string Set_hot_water_heating_temperature {
|
||||
get {
|
||||
return ResourceManager.GetString("Set_hot_water_heating_temperature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Set route.
|
||||
/// </summary>
|
||||
@ -3489,6 +3525,24 @@ namespace TBF.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Set warm water cooling temperature.
|
||||
/// </summary>
|
||||
internal static string Set_warm_water_cooling_temperature {
|
||||
get {
|
||||
return ResourceManager.GetString("Set_warm_water_cooling_temperature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Set warm water heating temperature.
|
||||
/// </summary>
|
||||
internal static string Set_warm_water_heating_temperature {
|
||||
get {
|
||||
return ResourceManager.GetString("Set_warm_water_heating_temperature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Setting temperature.
|
||||
/// </summary>
|
||||
@ -4393,7 +4447,7 @@ namespace TBF.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Unselect COLD tank.
|
||||
/// Looks up a localized string similar to Unselect COLD water.
|
||||
/// </summary>
|
||||
internal static string Unselect_COLD_tank {
|
||||
get {
|
||||
@ -4402,7 +4456,7 @@ namespace TBF.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Unselect HOT tank.
|
||||
/// Looks up a localized string similar to Unselect HOT water.
|
||||
/// </summary>
|
||||
internal static string Unselect_HOT_tank {
|
||||
get {
|
||||
@ -4411,7 +4465,7 @@ namespace TBF.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Unselect WARM tank.
|
||||
/// Looks up a localized string similar to Unselect WARM water.
|
||||
/// </summary>
|
||||
internal static string Unselect_WARM_tank {
|
||||
get {
|
||||
|
||||
@ -1401,4 +1401,7 @@
|
||||
<data name="Other" xml:space="preserve">
|
||||
<value><other></value>
|
||||
</data>
|
||||
<data name="Required_temperature_C" xml:space="preserve">
|
||||
<value>Solltemperatur [°C]</value>
|
||||
</data>
|
||||
</root>
|
||||
@ -1634,22 +1634,22 @@
|
||||
<value>Do you want to retry RoI detection?</value>
|
||||
</data>
|
||||
<data name="Select_COLD_tank" xml:space="preserve">
|
||||
<value>Select COLD tank</value>
|
||||
<value>Select COLD water</value>
|
||||
</data>
|
||||
<data name="Select_HOT_tank" xml:space="preserve">
|
||||
<value>Select HOT tank</value>
|
||||
<value>Select HOT water</value>
|
||||
</data>
|
||||
<data name="Select_WARM_tank" xml:space="preserve">
|
||||
<value>Select WORM tank</value>
|
||||
<value>Select WARM water</value>
|
||||
</data>
|
||||
<data name="Unselect_COLD_tank" xml:space="preserve">
|
||||
<value>Unselect COLD tank</value>
|
||||
<value>Unselect COLD water</value>
|
||||
</data>
|
||||
<data name="Unselect_HOT_tank" xml:space="preserve">
|
||||
<value>Unselect HOT tank</value>
|
||||
<value>Unselect HOT water</value>
|
||||
</data>
|
||||
<data name="Unselect_WARM_tank" xml:space="preserve">
|
||||
<value>Unselect WARM tank</value>
|
||||
<value>Unselect WARM water</value>
|
||||
</data>
|
||||
<data name="T_cold_cooling" xml:space="preserve">
|
||||
<value>T cold cooling</value>
|
||||
@ -1669,4 +1669,22 @@
|
||||
<data name="Other" xml:space="preserve">
|
||||
<value>Other</value>
|
||||
</data>
|
||||
<data name="Required_temperature_C" xml:space="preserve">
|
||||
<value>Required temperature [°C]</value>
|
||||
</data>
|
||||
<data name="Set_cold_water_cooling_temperature" xml:space="preserve">
|
||||
<value>Set cold water cooling temperature</value>
|
||||
</data>
|
||||
<data name="Set_hot_water_cooling_temperature" xml:space="preserve">
|
||||
<value>Set hot water cooling temperature</value>
|
||||
</data>
|
||||
<data name="Set_hot_water_heating_temperature" xml:space="preserve">
|
||||
<value>Set hot water heating temperature</value>
|
||||
</data>
|
||||
<data name="Set_warm_water_cooling_temperature" xml:space="preserve">
|
||||
<value>Set warm water cooling temperature</value>
|
||||
</data>
|
||||
<data name="Set_warm_water_heating_temperature" xml:space="preserve">
|
||||
<value>Set warm water heating temperature</value>
|
||||
</data>
|
||||
</root>
|
||||
@ -508,7 +508,8 @@
|
||||
<Compile Include="BenchControl\Modbus\Easytherm\EasythermCfgCtrl.designer.cs">
|
||||
<DependentUpon>EasythermCfgCtrl.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BenchControl\Modbus\Easytherm\ReadTemperatureOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\Easytherm\ProcParams.cs" />
|
||||
<Compile Include="BenchControl\Modbus\Easytherm\SetRequiredTemperatureOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\Easytherm\SetTemperatureOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\Enums.cs" />
|
||||
<Compile Include="BenchControl\Modbus\Common\Modbus.cs" />
|
||||
@ -541,8 +542,8 @@
|
||||
<Compile Include="BenchControl\Modbus\QuidoRS\Factory.cs" />
|
||||
<Compile Include="BenchControl\Modbus\QuidoRS\SetOutputsOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\TankSelector\Factory.cs" />
|
||||
<Compile Include="BenchControl\Modbus\TankSelector\ProcParams.cs" />
|
||||
<Compile Include="BenchControl\Modbus\TankSelector\SelectTankOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\TankSelector\SetQuidoBitOp.cs" />
|
||||
<Compile Include="BenchControl\Modbus\TankSelector\TankSelector.cs" />
|
||||
<Compile Include="BenchControl\Modbus\TankSelector\TankSelectorCfg.cs" />
|
||||
<Compile Include="BenchControl\Modbus\TankSelector\TankSelectorCfgCtrl.cs">
|
||||
@ -551,6 +552,7 @@
|
||||
<Compile Include="BenchControl\Modbus\TankSelector\TankSelectorCfgCtrl.designer.cs">
|
||||
<DependentUpon>TankSelectorCfgCtrl.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BenchControl\Modbus\TankSelector\UnselectTankOp.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