|
@@ -38,8 +38,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
private N2PurgeModeEnum _currentPhase;
|
|
|
private double _manualPhase2StabilityTime = 0;
|
|
|
private double _manualPhase4StabilityTime = 0;
|
|
|
- private bool _manualPhase2NeedCheck = true;
|
|
|
- private bool _manualPhase4NeedCheck = true;
|
|
|
+
|
|
|
private bool _enableAbortN2purge = true;
|
|
|
|
|
|
private int _phase1CycleCount = 0;
|
|
@@ -62,11 +61,9 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
_n2ToAirData = SC.ContainsItem($"System.N2PurgeData") ? SC.GetValue<double>("System.N2ToAirData") : 185000;
|
|
|
|
|
|
_enableAbortN2purge = SC.ContainsItem($"PM1.N2Purge.EnableAbortN2purge") ? SC.GetValue<bool>("PM1.N2Purge.EnableAbortN2purge") : false;
|
|
|
- _manualPhase2StabilityTime = SC.ContainsItem($"PM1.N2Purge.Manual_phase2.StabilityTime") ? SC.GetValue<double>("PM1.N2Purge.Manual_phase2.StabilityTime") : 0;
|
|
|
- _manualPhase2NeedCheck = _manualPhase2StabilityTime > 0;
|
|
|
|
|
|
+ _manualPhase2StabilityTime = SC.ContainsItem($"PM1.N2Purge.Manual_phase2.StabilityTime") ? SC.GetValue<double>("PM1.N2Purge.Manual_phase2.StabilityTime") : 0;
|
|
|
_manualPhase4StabilityTime = SC.ContainsItem($"PM1.N2Purge.Manual_phase4.StabilityTime") ? SC.GetValue<double>("PM1.N2Purge.Manual_phase4.StabilityTime") : 0;
|
|
|
- _manualPhase4NeedCheck = _manualPhase4StabilityTime > 0;
|
|
|
|
|
|
_phase1CycleCountSC = SC.ContainsItem($"PM1.N2Purge.Manual_phase1.CycleCount") ? SC.GetValue<int>("PM1.N2Purge.Manual_phase1.CycleCount") : 0;
|
|
|
|
|
@@ -101,11 +98,6 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
|
|
|
private void MonitorN2Purge()
|
|
|
{
|
|
|
- if (IsAbortN2purge())
|
|
|
- {
|
|
|
- SC.SetItemValue("PM1.SelectN2PurgeMode", N2PurgeModeEnum.ATMMode.ToString());
|
|
|
- }
|
|
|
-
|
|
|
var selectN2PurgeMode = SC.ContainsItem("PM1.SelectN2PurgeMode") ? SC.GetStringValue("PM1.SelectN2PurgeMode") : "";
|
|
|
if (string.IsNullOrEmpty(selectN2PurgeMode))
|
|
|
{
|
|
@@ -116,8 +108,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
|
|
|
private void SetN2PurgeModeAction(string selectN2PurgeMode)
|
|
|
{
|
|
|
- double o2Density = GetO2Density();
|
|
|
- bool laDoorOpenStatus = GetLADoorOpenStatus();
|
|
|
+
|
|
|
_N2PurgeMode = (N2PurgeModeEnum)Enum.Parse(typeof(N2PurgeModeEnum), selectN2PurgeMode);
|
|
|
|
|
|
if (_N2PurgeMode == N2PurgeModeEnum.N2PurgeMode)
|
|
@@ -126,7 +117,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
{
|
|
|
if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase2.ToString()].Invoke() && _canSwitchToPhase2)
|
|
|
{
|
|
|
- SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase2.ToString());
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase2.ToString(), "from Manual_phase1 to Manual_phase2");
|
|
|
}
|
|
|
}
|
|
|
else if (_currentPhase == N2PurgeModeEnum.Manual_phase2)
|
|
@@ -140,7 +131,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
{
|
|
|
if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase1.ToString()].Invoke())
|
|
|
{
|
|
|
- SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase1.ToString());
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase1.ToString(), "from Manual_phase2 to Manual_phase1");
|
|
|
|
|
|
N2PurgeFaileAlarm.Set();
|
|
|
|
|
@@ -174,8 +165,63 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
if (_N2PurgeMode == N2PurgeModeEnum.ATMMode)
|
|
|
{
|
|
|
|
|
|
-
|
|
|
+ if (_currentPhase == N2PurgeModeEnum.Manual_phase3)
|
|
|
+ {
|
|
|
+
|
|
|
+ if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase4.ToString()].Invoke())
|
|
|
+ {
|
|
|
+ if (!_allTimeDict[N2PurgeModeEnum.Manual_phase4.ToString()].IsRunning)
|
|
|
+ {
|
|
|
+ _allTimeDict[N2PurgeModeEnum.Manual_phase4.ToString()].Restart();
|
|
|
+ }
|
|
|
+ var second = _allTimeDict[N2PurgeModeEnum.Manual_phase4.ToString()].Elapsed.Seconds;
|
|
|
+
|
|
|
+ if (second >= _manualPhase4StabilityTime)
|
|
|
+ {
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase4.ToString(), "from Manual_phase3 to Manual_phase4");
|
|
|
+ _allTimeDict[N2PurgeModeEnum.Manual_phase4.ToString()].Stop();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (_currentPhase == N2PurgeModeEnum.Manual_phase4)
|
|
|
+ {
|
|
|
+ if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase5.ToString()].Invoke())
|
|
|
+ {
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase5.ToString(), "from Manual_phase4 to Manual_phase5");
|
|
|
+ }
|
|
|
+ if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase3.ToString()].Invoke())
|
|
|
+ {
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase3.ToString(), "from Manual_phase4 to Manual_phase3");
|
|
|
+ }
|
|
|
|
|
|
+ }
|
|
|
+ else if (_currentPhase == N2PurgeModeEnum.Manual_phase5)
|
|
|
+ {
|
|
|
+ if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase4.ToString()].Invoke())
|
|
|
+ {
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase4.ToString(), "from Manual_phase5 to Manual_phase4");
|
|
|
+ }
|
|
|
+ if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase3.ToString()].Invoke())
|
|
|
+ {
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase3.ToString(), "from Manual_phase5 to Manual_phase3");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase3.ToString()].Invoke())
|
|
|
+ {
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase3.ToString());
|
|
|
+ }
|
|
|
+ if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase5.ToString()].Invoke())
|
|
|
+ {
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase5.ToString());
|
|
|
+ }
|
|
|
+ if (_n2PurgeSequenceStatus[N2PurgeModeEnum.Manual_phase4.ToString()].Invoke())
|
|
|
+ {
|
|
|
+ SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase4.ToString());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//switch (_N2PurgeMode)
|
|
@@ -251,10 +297,11 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- private void SetN2PurgeValveData(string mode)
|
|
|
+ private void SetN2PurgeValveData(string mode, string msg = "")
|
|
|
{
|
|
|
+ string message = string.IsNullOrEmpty(msg) ? $"N2PurgeMode Trigger {mode},O2:{GetO2Density()}" : $"N2PurgeMode Trigger {msg},O2:{GetO2Density()}";
|
|
|
+ LOG.Info(message);
|
|
|
var value = _n2PurgeSequenceAction[mode];
|
|
|
- LOG.Info($"N2PurgeMode Trigger{mode},O2:{GetO2Density()}");
|
|
|
|
|
|
_currentPhase = (N2PurgeModeEnum)Enum.Parse(typeof(N2PurgeModeEnum), mode);
|
|
|
|