|
@@ -6,6 +6,7 @@ using Aitex.Core.RT.Log;
|
|
|
using Aitex.Core.RT.SCCore;
|
|
|
using Aitex.Core.Util;
|
|
|
using DocumentFormat.OpenXml.Packaging;
|
|
|
+using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
using FurnaceRT.Devices;
|
|
|
using FurnaceRT.Equipments.PMs.Devices;
|
|
|
using FurnaceRT.Extraction;
|
|
@@ -49,6 +50,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
private Dictionary<string, Stopwatch> _allTimeDict = new Dictionary<string, Stopwatch>();
|
|
|
private void InitN2PurgeData()
|
|
|
{
|
|
|
+ DATA.Subscribe($"{Module}.N2PurgeLimitData", () => GetN2PurgeLimitData());
|
|
|
DATA.Subscribe($"{Module}.O2DensityData", () => ConcentrationO2.Value.ToString("f3"), SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
DATA.Subscribe($"{Module}.CheckO2Location", () => GetCheckO2Location(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
|
DATA.Subscribe($"{Module}.O2SetCheckSetPoint", () => GetO2SetCheckSetPoint(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
|
@@ -125,7 +127,18 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
SetN2PurgeModeAction(selectN2PurgeMode);
|
|
|
}
|
|
|
-
|
|
|
+ private double GetN2PurgeLimitData()
|
|
|
+ {
|
|
|
+ if (_N2PurgeMode == N2PurgeModeEnum.N2PurgeMode)
|
|
|
+ {
|
|
|
+ return _n2PurgeData;
|
|
|
+ }
|
|
|
+ if (_N2PurgeMode == N2PurgeModeEnum.ATMMode)
|
|
|
+ {
|
|
|
+ return _n2ToAirData;
|
|
|
+ }
|
|
|
+ return ConcentrationO2.Value;
|
|
|
+ }
|
|
|
private void SetN2PurgeModeAction(string selectN2PurgeMode)
|
|
|
{
|
|
|
|
|
@@ -135,7 +148,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
{
|
|
|
if (_currentPhase == N2PurgeModeEnum.Manual_phase1)
|
|
|
{
|
|
|
- if (CheckN2PurgePhase2( ) && _canSwitchToPhase2)
|
|
|
+ if (CheckN2PurgePhase2() && _canSwitchToPhase2)
|
|
|
{
|
|
|
LOG.Info($" N2PurgeMode Trigger from Manual_phase1 to Manual_phase2,O2:{ConcentrationO2.Value}");
|
|
|
SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase2.ToString());
|
|
@@ -150,7 +163,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
var second = _allTimeDict[N2PurgeModeEnum.Manual_phase2.ToString()].Elapsed.TotalSeconds;
|
|
|
if (second >= _manualPhase2StabilityTime)
|
|
|
{
|
|
|
- if (CheckN2PurgePhase1( ))
|
|
|
+ if (CheckN2PurgePhase1())
|
|
|
{
|
|
|
LOG.Info($"N2PurgeMode Trigger Manual_phase1 was triggered {second} seconds later,O2:{ConcentrationO2.Value}");
|
|
|
N2PurgeFaileAlarm.Set();
|
|
@@ -162,7 +175,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase1.ToString());
|
|
|
|
|
|
}
|
|
|
- if (CheckN2PurgePhase2( ))
|
|
|
+ if (CheckN2PurgePhase2())
|
|
|
{
|
|
|
LOG.Info($"N2PurgeMode Trigger Hold Manual_phase2 was triggered {second} seconds later,O2:{ConcentrationO2.Value}");
|
|
|
_allTimeDict[N2PurgeModeEnum.Manual_phase2.ToString()].Restart();
|
|
@@ -174,12 +187,12 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (CheckN2PurgePhase1( ))
|
|
|
+ if (CheckN2PurgePhase1())
|
|
|
{
|
|
|
LOG.Info($"N2PurgeMode Trigger Directly triggered Manual_phase1,O2:{ConcentrationO2.Value}");
|
|
|
SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase1.ToString());
|
|
|
}
|
|
|
- else if (CheckN2PurgePhase2( ))
|
|
|
+ else if (CheckN2PurgePhase2())
|
|
|
{
|
|
|
LOG.Info($"N2PurgeMode Trigger Directly triggered Manual_phase2,O2:{ConcentrationO2.Value}");
|
|
|
|
|
@@ -193,7 +206,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
|
|
|
if (_currentPhase == N2PurgeModeEnum.Manual_phase3)
|
|
|
{
|
|
|
- var checkResult = CheckN2PurgePhase4( );
|
|
|
+ var checkResult = CheckN2PurgePhase4();
|
|
|
|
|
|
if (!_allTimeDict[N2PurgeModeEnum.Manual_phase4.ToString()].IsRunning)
|
|
|
{
|
|
@@ -213,7 +226,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
else if (_currentPhase == N2PurgeModeEnum.Manual_phase4)
|
|
|
{
|
|
|
- if (CheckN2PurgePhase5( ))
|
|
|
+ if (CheckN2PurgePhase5())
|
|
|
{
|
|
|
LOG.Info($"N2PurgeMode Trigger from Manual_phase4 to Manual_phase5,O2:{ConcentrationO2.Value}");
|
|
|
|
|
@@ -229,7 +242,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
else if (_currentPhase == N2PurgeModeEnum.Manual_phase5)
|
|
|
{
|
|
|
- if (CheckN2PurgePhase4( ))
|
|
|
+ if (CheckN2PurgePhase4())
|
|
|
{
|
|
|
LOG.Info($"N2PurgeMode Trigger from Manual_phase5 to Manual_phase4,O2:{ConcentrationO2.Value}");
|
|
|
|
|
@@ -244,21 +257,21 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (CheckN2PurgePhase3( ))
|
|
|
+ if (CheckN2PurgePhase3())
|
|
|
{
|
|
|
LOG.Info($"N2PurgeMode Trigger Directly triggered Manual_phase3,O2:{ConcentrationO2.Value}");
|
|
|
|
|
|
SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase3.ToString());
|
|
|
return;
|
|
|
}
|
|
|
- if (CheckN2PurgePhase5( ))
|
|
|
+ if (CheckN2PurgePhase5())
|
|
|
{
|
|
|
LOG.Info($"N2PurgeMode Trigger Directly triggered Manual_phase5,O2:{ConcentrationO2.Value}");
|
|
|
|
|
|
SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase5.ToString());
|
|
|
return;
|
|
|
}
|
|
|
- if (CheckN2PurgePhase4( ))
|
|
|
+ if (CheckN2PurgePhase4())
|
|
|
{
|
|
|
LOG.Info($"N2PurgeMode Trigger Directly triggered Manual_phase4,O2:{ConcentrationO2.Value}");
|
|
|
|
|
@@ -269,7 +282,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
if (_N2PurgeMode == N2PurgeModeEnum.ManualMode || _N2PurgeMode == N2PurgeModeEnum.Auto)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
//switch (_N2PurgeMode)
|
|
|
//{
|
|
@@ -437,7 +450,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
|
|
|
-
|
|
|
+
|
|
|
private bool CheckN2PurgePhase1()
|
|
|
{
|
|
|
return ((int)ConcentrationO2.Value >= _n2PurgeData) && GetLADoorOpenStatus();
|
|
@@ -456,7 +469,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
}
|
|
|
private bool CheckN2PurgePhase4()
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
return (((int)ConcentrationO2.Value)) >= _n2ToAirData && GetLADoorOpenStatus();
|
|
|
}
|
|
|
private bool GetN2PurgeAIRTo20PPMStatus()
|