|
@@ -32,7 +32,8 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
{
|
|
{
|
|
public class ReservoirDevice : BaseDevice, IDevice
|
|
public class ReservoirDevice : BaseDevice, IDevice
|
|
{
|
|
{
|
|
- private enum ReservoirOperation
|
|
|
|
|
|
+
|
|
|
|
+ protected enum DiReplenOperation
|
|
{
|
|
{
|
|
None,
|
|
None,
|
|
ManualANDiReplen,
|
|
ManualANDiReplen,
|
|
@@ -40,7 +41,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
AutoANDiReplen,
|
|
AutoANDiReplen,
|
|
AutoCADiReplen
|
|
AutoCADiReplen
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
#region 常量
|
|
#region 常量
|
|
protected const string AUTO = "Auto";
|
|
protected const string AUTO = "Auto";
|
|
protected const string MANUAL = "Manual";
|
|
protected const string MANUAL = "Manual";
|
|
@@ -73,20 +74,13 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
#region 内部变量
|
|
#region 内部变量
|
|
- /// <summary>
|
|
|
|
- /// Prewet 持久性数值对象
|
|
|
|
- /// </summary>
|
|
|
|
- private ReservoirsPersistentValue _persistentValue;
|
|
|
|
|
|
+
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 变量是否初始化字典
|
|
/// 变量是否初始化字典
|
|
/// </summary>
|
|
/// </summary>
|
|
private Dictionary<string, bool> _variableInitializeDic = new Dictionary<string, bool>();
|
|
private Dictionary<string, bool> _variableInitializeDic = new Dictionary<string, bool>();
|
|
/// <summary>
|
|
/// <summary>
|
|
- /// 数据
|
|
|
|
- /// </summary>
|
|
|
|
- private ReservoirData _reservoirData = new ReservoirData();
|
|
|
|
- /// <summary>
|
|
|
|
/// 定时器
|
|
/// 定时器
|
|
/// </summary>
|
|
/// </summary>
|
|
private PeriodicJob _periodicJob;
|
|
private PeriodicJob _periodicJob;
|
|
@@ -128,10 +122,6 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
/// </summary>
|
|
/// </summary>
|
|
private ReservoirDiReplenHelper _direplenHelper;
|
|
private ReservoirDiReplenHelper _direplenHelper;
|
|
|
|
|
|
- /// <summary>
|
|
|
|
- /// 当前操作
|
|
|
|
- /// </summary>
|
|
|
|
- private ReservoirOperation _currentOperation;
|
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
#region Trigger
|
|
#region Trigger
|
|
@@ -152,6 +142,14 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
/// 手动注水时间(秒)
|
|
/// 手动注水时间(秒)
|
|
/// </summary>
|
|
/// </summary>
|
|
protected int _manualReplenSecond = 0;
|
|
protected int _manualReplenSecond = 0;
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 数据
|
|
|
|
+ /// </summary>
|
|
|
|
+ protected ReservoirData _reservoirData = new ReservoirData();
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// Prewet 持久性数值对象
|
|
|
|
+ /// </summary>
|
|
|
|
+ protected ReservoirsPersistentValue _persistentValue;
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
#region 属性
|
|
#region 属性
|
|
@@ -181,17 +179,25 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
/// </summary>
|
|
/// </summary>
|
|
public bool IsCALowLevel { get { return CheckCALowLevelStatus(); } }
|
|
public bool IsCALowLevel { get { return CheckCALowLevelStatus(); } }
|
|
/// <summary>
|
|
/// <summary>
|
|
- /// 检验阳极是否highlevel
|
|
|
|
|
|
+ /// 当前Recipe
|
|
/// </summary>
|
|
/// </summary>
|
|
- public bool IsANHighLevel { get { return _reservoirData.AnTowerHigh; } }
|
|
|
|
|
|
+ public ResRecipe Recipe { get { return _resRecipe; } }
|
|
/// <summary>
|
|
/// <summary>
|
|
- /// 检验阳极是否lowlevel
|
|
|
|
|
|
+ /// 阴极是否需要补水
|
|
/// </summary>
|
|
/// </summary>
|
|
- public bool IsANLowLevel { get { return _reservoirData.AnTowerLow; } }
|
|
|
|
|
|
+ public bool CANeedDiReplen { get { return CheckCANeedDiReplen(); } }
|
|
/// <summary>
|
|
/// <summary>
|
|
- /// 当前Recipe
|
|
|
|
|
|
+ /// 正在补水
|
|
/// </summary>
|
|
/// </summary>
|
|
- public ResRecipe Recipe { get { return _resRecipe; } }
|
|
|
|
|
|
+ public bool IsDireplenOn { get { return _reservoirData.AnDiReplen || _reservoirData.CaDiReplen; } }
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 单次补水是否超时
|
|
|
|
+ /// </summary>
|
|
|
|
+ public bool IsDIReplenPerfillTimeOut { get { return _isDIReplenPerfillTimeOut; } }
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 累计补水是否超时
|
|
|
|
+ /// </summary>
|
|
|
|
+ public bool IsDIReplenMaxTimeOut { get { return _isDIReplenMaxTimeOut; } }
|
|
#endregion
|
|
#endregion
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 构造函数
|
|
/// 构造函数
|
|
@@ -228,11 +234,6 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
{
|
|
{
|
|
LOG.WriteLog(eEvent.ERR_RESERVOIR, Module.ToString(), "Persistent Value Object is not exist");
|
|
LOG.WriteLog(eEvent.ERR_RESERVOIR, Module.ToString(), "Persistent Value Object is not exist");
|
|
}
|
|
}
|
|
- _persistentValue = ReservoirsPersistentManager.Instance.GetReservoirsPersistentValue(Module);
|
|
|
|
- if (_persistentValue == null)
|
|
|
|
- {
|
|
|
|
- LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, "Persistent Value Object is not exist");
|
|
|
|
- }
|
|
|
|
if (!string.IsNullOrEmpty(_persistentValue.Recipe))
|
|
if (!string.IsNullOrEmpty(_persistentValue.Recipe))
|
|
{
|
|
{
|
|
_resRecipe = RecipeFileManager.Instance.LoadGenericityRecipe<ResRecipe>(_persistentValue.Recipe);
|
|
_resRecipe = RecipeFileManager.Instance.LoadGenericityRecipe<ResRecipe>(_persistentValue.Recipe);
|
|
@@ -258,7 +259,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
DATA.Subscribe($"{Module}.IsCALowLevel", () => IsCALowLevel, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
DATA.Subscribe($"{Module}.IsCALowLevel", () => IsCALowLevel, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
|
|
|
DATA.Subscribe($"{Module}.DIValveMaxOnTime", () => SC.GetValue<double>($"Reservoir.{Module}.DIValveMaxOnTime") * 60, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
DATA.Subscribe($"{Module}.DIValveMaxOnTime", () => SC.GetValue<double>($"Reservoir.{Module}.DIValveMaxOnTime") * 60, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
- DATA.Subscribe($"{Module}.IsManualCAReplen", () => { return _currentOperation == ReservoirOperation.ManualCADiReplen; }, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
|
|
|
+ DATA.Subscribe($"{Module}.IsManualCAReplen", () => { return _currentDireplenOperation == DiReplenOperation.ManualCADiReplen; }, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
DATA.Subscribe($"{Module}.IsDIReplenPerfillTimeOut", () => _isDIReplenPerfillTimeOut, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
DATA.Subscribe($"{Module}.IsDIReplenPerfillTimeOut", () => _isDIReplenPerfillTimeOut, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
DATA.Subscribe($"{Module}.IsDIReplenMaxTimeOut", () => _isDIReplenMaxTimeOut, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
DATA.Subscribe($"{Module}.IsDIReplenMaxTimeOut", () => _isDIReplenMaxTimeOut, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
}
|
|
}
|
|
@@ -282,8 +283,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
|
|
|
|
OP.Subscribe($"{Module}.CAIsolationOn", (cmd, para) => { return CAIsolationOn(); });
|
|
OP.Subscribe($"{Module}.CAIsolationOn", (cmd, para) => { return CAIsolationOn(); });
|
|
OP.Subscribe($"{Module}.CAIsolationOff", (cmd, para) => { return CAIsolationOff(); });
|
|
OP.Subscribe($"{Module}.CAIsolationOff", (cmd, para) => { return CAIsolationOff(); });
|
|
- OP.Subscribe($"{Module}.ANIsolationOn", (cmd, para) => { return ANIsolationOn(); });
|
|
|
|
- OP.Subscribe($"{Module}.ANIsolationOff", (cmd, para) => { return ANIsolationOff(); });
|
|
|
|
|
|
+
|
|
OP.Subscribe($"{Module}.SampleOutValveOn", (cmd, para) => { return SampleOutValveOn(); });
|
|
OP.Subscribe($"{Module}.SampleOutValveOn", (cmd, para) => { return SampleOutValveOn(); });
|
|
OP.Subscribe($"{Module}.SampleOutValveOff", (cmd, para) => { return SampleOutValveOff(); });
|
|
OP.Subscribe($"{Module}.SampleOutValveOff", (cmd, para) => { return SampleOutValveOff(); });
|
|
OP.Subscribe($"{Module}.DegasValveOn", (cmd, para) => { return DegasValveOn(); });
|
|
OP.Subscribe($"{Module}.DegasValveOn", (cmd, para) => { return DegasValveOn(); });
|
|
@@ -359,7 +359,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
/// <param name="variable"></param>
|
|
/// <param name="variable"></param>
|
|
/// <param name="value"></param>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
- private bool WriteVariableValue(string variable, object value)
|
|
|
|
|
|
+ protected bool WriteVariableValue(string variable, object value)
|
|
{
|
|
{
|
|
string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{variable}");
|
|
string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{variable}");
|
|
return IOModuleManager.Instance.WriteIoValue(ioName, value);
|
|
return IOModuleManager.Instance.WriteIoValue(ioName, value);
|
|
@@ -374,7 +374,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
{
|
|
{
|
|
//CalculateCALevel();
|
|
//CalculateCALevel();
|
|
WaterLevelMonitor();
|
|
WaterLevelMonitor();
|
|
- //DireplenMonitor();
|
|
|
|
|
|
+ DireplenMonitor();
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
#region timer
|
|
#region timer
|
|
@@ -507,20 +507,21 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
}
|
|
}
|
|
if (_currentDireplenOperation == DiReplenOperation.ManualANDiReplen)
|
|
if (_currentDireplenOperation == DiReplenOperation.ManualANDiReplen)
|
|
{
|
|
{
|
|
- bool result = _direplenHelper.MonitorManualDiReplenComplete(_manualReplenSecond, ANDiReplenOff, ref _isDIReplenMaxTimeOut);
|
|
|
|
- if (result)
|
|
|
|
- {
|
|
|
|
- _currentDireplenOperation = DiReplenOperation.None;
|
|
|
|
- }
|
|
|
|
|
|
+ //bool result = _direplenHelper.MonitorManualDiReplenComplete(_manualReplenSecond, ANDiReplenOff, ref _isDIReplenMaxTimeOut);
|
|
|
|
+ //if (result)
|
|
|
|
+ //{
|
|
|
|
+ // _currentDireplenOperation = DiReplenOperation.None;
|
|
|
|
+ //}
|
|
}
|
|
}
|
|
if (_currentDireplenOperation == DiReplenOperation.AutoCADiReplen)
|
|
if (_currentDireplenOperation == DiReplenOperation.AutoCADiReplen)
|
|
{
|
|
{
|
|
AutoDiReplenMonitor(CADiReplenOff, _reservoirData.CaLevel, _resRecipe.ReservoirCALevel, _resRecipe.DIReplenEnable,
|
|
AutoDiReplenMonitor(CADiReplenOff, _reservoirData.CaLevel, _resRecipe.ReservoirCALevel, _resRecipe.DIReplenEnable,
|
|
_resRecipe.DIReplenTimeRate, _resRecipe.DIReplenCurrentRate);
|
|
_resRecipe.DIReplenTimeRate, _resRecipe.DIReplenCurrentRate);
|
|
}
|
|
}
|
|
- if (_currentDireplenOperation == DiReplenOperation.AutoANDiReplen) //阳极没有水位,自动补水监控逻辑待修正
|
|
|
|
|
|
+ //阳极没有水位,自动补水监控逻辑待修正
|
|
|
|
+ if (_currentDireplenOperation == DiReplenOperation.AutoANDiReplen)
|
|
{
|
|
{
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -532,6 +533,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
private void AutoDiReplenMonitor(Func<string, object[], bool> direplenOff, double level, double recipeLevel, bool replenEnable,
|
|
private void AutoDiReplenMonitor(Func<string, object[], bool> direplenOff, double level, double recipeLevel, bool replenEnable,
|
|
int direplenTimeRate, int direplenCurrentRate)
|
|
int direplenTimeRate, int direplenCurrentRate)
|
|
{
|
|
{
|
|
|
|
+ //判断是否注水超时(包括单次和累计)
|
|
bool result = _direplenHelper.AutoDiReplenMonitorTimeOut(direplenOff, ref _isDIReplenMaxTimeOut, ref _isDIReplenPerfillTimeOut);
|
|
bool result = _direplenHelper.AutoDiReplenMonitorTimeOut(direplenOff, ref _isDIReplenMaxTimeOut, ref _isDIReplenPerfillTimeOut);
|
|
if (result)
|
|
if (result)
|
|
{
|
|
{
|
|
@@ -666,6 +668,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
public void Monitor()
|
|
public void Monitor()
|
|
{
|
|
{
|
|
}
|
|
}
|
|
|
|
+
|
|
#region CA Pump
|
|
#region CA Pump
|
|
/// <summary>
|
|
/// <summary>
|
|
/// CA Pump调速
|
|
/// CA Pump调速
|
|
@@ -805,22 +808,8 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
}
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
- /// <summary>
|
|
|
|
- /// ANIsolationOn
|
|
|
|
- /// </summary>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- public bool ANIsolationOn()
|
|
|
|
- {
|
|
|
|
- return WriteVariableValue(AN_ISOLATION, true);
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
- /// ANIsolationOff
|
|
|
|
- /// </summary>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- public bool ANIsolationOff()
|
|
|
|
- {
|
|
|
|
- return WriteVariableValue(AN_ISOLATION, false);
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
/// CAIsolationOn
|
|
/// CAIsolationOn
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -1033,72 +1022,6 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
}
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
- #region AN DiReplen
|
|
|
|
- /// <summary>
|
|
|
|
- /// 阳极DI Replen On
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="cmd"></param>
|
|
|
|
- /// <param name="args"></param>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- private bool ANDiReplenOnOperation(string cmd, object[] args)
|
|
|
|
- {
|
|
|
|
- return ANDiReplenOn();
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 阳极DI Replen On
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="showError"></param>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- private bool ANDiReplenOn()
|
|
|
|
- {
|
|
|
|
- bool preCondition = CheckPreDiReplenCondition();
|
|
|
|
- if (!preCondition)
|
|
|
|
- {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- if (IsANHighLevel)
|
|
|
|
- {
|
|
|
|
- LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, $"ANHighLevel is activate,Can't do AN_DIReple");
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- if (IsANLowLevel)
|
|
|
|
- {
|
|
|
|
- LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, $"ANLowLevel is activate,Can't do AN_DIReple");
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- if (ReservoirData.CaDiReplen)
|
|
|
|
- {
|
|
|
|
- LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, "CADiReplen is on");
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{AN_DI_REPLEN}");
|
|
|
|
- return BeckhoffIOManager.Instance.WriteIoValue(ioName, true);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// 阳极DI Replen Off
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="cmd"></param>
|
|
|
|
- /// <param name="args"></param>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- private bool ANDiReplenOff(string cmd, object[] args)
|
|
|
|
- {
|
|
|
|
- string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{AN_DI_REPLEN}");
|
|
|
|
- bool result = BeckhoffIOManager.Instance.WriteIoValue(ioName, false);
|
|
|
|
- if (result)
|
|
|
|
- {
|
|
|
|
- _persistentValue.IsDiReplenOn = false;
|
|
|
|
- if (_currentDireplenOperation == DiReplenOperation.ManualANDiReplen || _currentDireplenOperation == DiReplenOperation.AutoANDiReplen)
|
|
|
|
- {
|
|
|
|
- _currentDireplenOperation = DiReplenOperation.None;
|
|
|
|
- _persistentValue.LastTotalReplen = _persistentValue.TotalReplen;
|
|
|
|
- ReservoirsPersistentManager.Instance.UpdatePersistentValue(Module);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- #endregion
|
|
|
|
|
|
|
|
#region DiReplen Operation
|
|
#region DiReplen Operation
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -1126,22 +1049,12 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
return ManualDiReplen(CADiReplenOnOperation, DiReplenOperation.ManualCADiReplen, args[0].ToString());
|
|
return ManualDiReplen(CADiReplenOnOperation, DiReplenOperation.ManualCADiReplen, args[0].ToString());
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <summary>
|
|
- /// 手动阳极注水
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="cmd"></param>
|
|
|
|
- /// <param name="args"></param>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- private bool ManualANDiReplen(string cmd, object[] args)
|
|
|
|
- {
|
|
|
|
- return ManualDiReplen(ANDiReplenOnOperation, DiReplenOperation.ManualANDiReplen, args[0].ToString());
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
/// 手动注水
|
|
/// 手动注水
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <param name="direplenOn"></param>
|
|
/// <param name="direplenOn"></param>
|
|
/// <param name="direplenOperation"></param>
|
|
/// <param name="direplenOperation"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
- private bool ManualDiReplen(Func<string, object[], bool> direplenOn, DiReplenOperation direplenOperation, string timeLength)
|
|
|
|
|
|
+ protected bool ManualDiReplen(Func<string, object[], bool> direplenOn, DiReplenOperation direplenOperation, string timeLength)
|
|
{
|
|
{
|
|
if (_currentDireplenOperation != DiReplenOperation.None)
|
|
if (_currentDireplenOperation != DiReplenOperation.None)
|
|
{
|
|
{
|
|
@@ -1230,6 +1143,26 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
{
|
|
{
|
|
return ReservoirData.CaWaterLevel < SC.GetValue<double>($"Reservoir.{Module}.CALowLevel") ? true : false;
|
|
return ReservoirData.CaWaterLevel < SC.GetValue<double>($"Reservoir.{Module}.CALowLevel") ? true : false;
|
|
}
|
|
}
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 检验CA是否需要注水
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ public bool CheckCANeedDiReplen()
|
|
|
|
+ {
|
|
|
|
+ if (IsAuto && _resRecipe != null)
|
|
|
|
+ {
|
|
|
|
+ if (_resRecipe.DIReplenEnable && _resRecipe.DIReplenTimeRate == 0 && _resRecipe.DIReplenCurrentRate == 0)
|
|
|
|
+ {
|
|
|
|
+ double levelHysteresis = SC.GetValue<double>("Reservoir.LevelHysteresis");
|
|
|
|
+ return _reservoirData.CaLevel < _resRecipe.ReservoirCALevel - levelHysteresis;
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
public void Reset()
|
|
public void Reset()
|
|
@@ -1239,14 +1172,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
|
|
public void Terminate()
|
|
public void Terminate()
|
|
{
|
|
{
|
|
}
|
|
}
|
|
- protected enum DiReplenOperation
|
|
|
|
- {
|
|
|
|
- None,
|
|
|
|
- ManualANDiReplen,
|
|
|
|
- ManualCADiReplen,
|
|
|
|
- AutoANDiReplen,
|
|
|
|
- AutoCADiReplen
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|