|
@@ -10,6 +10,7 @@ using FurnaceRT.Equipments.PMs.Devices;
|
|
|
using FurnaceRT.Extraction;
|
|
|
using MECF.Framework.Common.CommonData.SorterDefines;
|
|
|
using MECF.Framework.Common.Equipment;
|
|
|
+using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.TDK;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Diagnostics;
|
|
@@ -39,6 +40,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
private double _manualPhase4StabilityTime = 0;
|
|
|
private bool _manualPhase2NeedCheck = true;
|
|
|
private bool _manualPhase4NeedCheck = true;
|
|
|
+ private bool _enableAbortN2purge = true;
|
|
|
|
|
|
private Dictionary<string, Stopwatch> _allTimeDict = new Dictionary<string, Stopwatch>();
|
|
|
private void InitN2PurgeData()
|
|
@@ -55,6 +57,7 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
_n2PurgeData = SC.ContainsItem($"System.N2PurgeData") ? SC.GetValue<double>("System.N2PurgeData") : 20;
|
|
|
_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;
|
|
|
|
|
@@ -91,6 +94,11 @@ 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))
|
|
|
{
|
|
@@ -318,7 +326,22 @@ namespace FurnaceRT.Equipments.PMs
|
|
|
{
|
|
|
return GetN2PurgeAIRTo20PPMStatus() && GetN2PurgeUnder20PPMStatus() && FIMS2.IsFoupExist && FIMS2.CollisionAvoidanceUpDownStatus == DeviceStatus.Down; ;
|
|
|
}
|
|
|
+ public bool IsAbortN2purge()
|
|
|
+ {
|
|
|
+ if (!_enableAbortN2purge)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
+ if (SensorSL02001gasboxdoorsw11.Value || SensorSL02001gasboxdoorsw12.Value || SensorSL02002gasboxdoorsw11.Value || SensorSL02002gasboxdoorsw12.Value || SensorSL05002LAdoorsw2.Value || SensorSL05004LAfurnacedoorsw.Value)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return false;
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
public void SetN2PurgeLAO2CheckFirstEnable(bool isEable)
|
|
|
{
|