Browse Source

Merge branch 'Master_ELK02_Release_Development' of http://git.jetplasma-oa.com/Jet/FurnaceELK into Master_ELK02_Release_Development

huangping 6 days ago
parent
commit
d6fef68970

+ 9 - 1
Furnace/FurnaceRT/Equipments/Boats/BoatMove.cs

@@ -204,6 +204,14 @@ namespace FurnaceRT.Equipments.Boats
             Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
             {
                 Notify($"Check {boatMoveN2Purge} O2Desity");
+                var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
+
+                var isCheckO2Enbale = pm.CheckBoatMoveIsNeedOxygenPressure(boatMoveN2Purge, pm.IsProcessing, out var o2LimtData);
+                if (isCheckO2Enbale)
+                {
+                    pm.SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase1.ToString());
+                    pm.RestAllN2PrugeRD();
+                }
                 return true;
             }, () =>
             {
@@ -213,7 +221,7 @@ namespace FurnaceRT.Equipments.Boats
                 if (!isCheckO2Enbale)
                     return true;
 
-                _filterChecker.Monitor(pm.GetN2PurgeUnder20PPMStatus(o2LimtData));
+                _filterChecker.Monitor(pm.GetN2PurgeUnder20PPMStatus(o2LimtData)&&pm.CheckIsLASide());
                 if (_filterChecker.Trig)
                 {
                     pm.IsWait = false;

+ 30 - 3
Furnace/FurnaceRT/Equipments/Jobs/AutoTransfer.cs

@@ -1685,6 +1685,9 @@ namespace FurnaceRT.Equipments.Jobs
             if (pj == null || pj.IsEmptyLayout)
                 return;
 
+            var fims1Device = DEVICE.GetDevice<IoFIMS>($"PM1.FIMS1");
+            var fims2Device = DEVICE.GetDevice<IoFIMS>($"PM1.FIMS2");
+
             //load
             if (pj.ProcessingState == EnumProcessingState.Charging)
             {
@@ -1693,7 +1696,16 @@ namespace FurnaceRT.Equipments.Jobs
                     if (!st.IsAvailable || !CarrierManager.Instance.CheckHasCarrier(st.Module, 0))
                         continue;
 
+                    if (!SC.GetValue<bool>("System.IsSimulatorMode"))
+                    {
+                        if (st.Module == ModuleName.FIMS1 && fims2Device.IsRunning)
+                            continue;
+
+                        if (st.Module == ModuleName.FIMS2 && fims1Device.IsRunning)
+                            continue;
+                    }
                     var fimsDevice = DEVICE.GetDevice<IoFIMS>($"PM1.{st.Module}");
+
                     if (!CheckCarrierCanPickFromFIMS(st.Module) && !fimsDevice.IsLoadCompleted)
                     {
                         var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
@@ -1705,7 +1717,7 @@ namespace FurnaceRT.Equipments.Jobs
                         {
 
                             _fimsCheckOxDensityDict[st.Module.ToString()].Item1.CheckInterval = 1;
-                            _fimsCheckOxDensityDict[st.Module.ToString()].Item1.Monitor(pm.GetN2PurgeUnder20PPMStatus(waferChargeLAO2CheckSV));
+                            _fimsCheckOxDensityDict[st.Module.ToString()].Item1.Monitor(pm.GetN2PurgeUnder20PPMStatus(waferChargeLAO2CheckSV) && pm.CheckIsLASide());
                             if (_fimsCheckOxDensityDict[st.Module.ToString()].Item1.Trig)
                             {
                                 if (st.Load(CheckFimsIsNeedOxygenPressure, N2PurgeModeEnum.WaferCharge.ToString()))
@@ -1747,6 +1759,14 @@ namespace FurnaceRT.Equipments.Jobs
                     var wafers = WaferManager.Instance.GetWafers(st.Module);
                     if (wafers != null)
                     {
+                        if (!SC.GetValue<bool>("System.IsSimulatorMode"))
+                        {
+                            if (st.Module == ModuleName.FIMS1 && fims2Device.IsRunning)
+                                continue;
+
+                            if (st.Module == ModuleName.FIMS2 && fims1Device.IsRunning)
+                                continue;
+                        }
                         if (CheckCarrierNoHasEmptySlot(st.Module) && !fimsDevice.IsLoadCompleted)
                         {
                             var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
@@ -1758,7 +1778,7 @@ namespace FurnaceRT.Equipments.Jobs
                             if (isCheckO2)
                             {
                                 _fimsCheckOxDensityDict[st.Module.ToString()].Item1.CheckInterval = 1;
-                                _fimsCheckOxDensityDict[st.Module.ToString()].Item1.Monitor(pm.GetN2PurgeUnder20PPMStatus(waferDisChargeLAO2CheckSV));
+                                _fimsCheckOxDensityDict[st.Module.ToString()].Item1.Monitor(pm.GetN2PurgeUnder20PPMStatus(waferDisChargeLAO2CheckSV) && pm.CheckIsLASide());
                                 if (_fimsCheckOxDensityDict[st.Module.ToString()].Item1.Trig)
                                 {
                                     if (st.Load(CheckFimsIsNeedOxygenPressure, N2PurgeModeEnum.WaferDisCharge.ToString()))
@@ -1794,7 +1814,14 @@ namespace FurnaceRT.Equipments.Jobs
                     var carrier = CarrierManager.Instance.GetCarrier(st.Module, 0);
                     if (carrier != null)
                     {
+                        if (!SC.GetValue<bool>("System.IsSimulatorMode"))
+                        {
+                            if (st.Module == ModuleName.FIMS1 && fims2Device.IsRunning)
+                                continue;
 
+                            if (st.Module == ModuleName.FIMS2 && fims1Device.IsRunning)
+                                continue;
+                        }
                         if (!CheckCarrierCanPickFromFIMSInDischarge(carrier.InternalModuleName) && !fimsDevice.IsLoadCompleted)
                         {
                             var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
@@ -1805,7 +1832,7 @@ namespace FurnaceRT.Equipments.Jobs
                             if (isCheckO2)
                             {
                                 _fimsCheckOxDensityDict[st.Module.ToString()].Item1.CheckInterval = 1;
-                                _fimsCheckOxDensityDict[st.Module.ToString()].Item1.Monitor(pm.GetN2PurgeUnder20PPMStatus(waferDisChargeLAO2CheckSV));
+                                _fimsCheckOxDensityDict[st.Module.ToString()].Item1.Monitor(pm.GetN2PurgeUnder20PPMStatus(waferDisChargeLAO2CheckSV) && pm.CheckIsLASide());
                                 if (_fimsCheckOxDensityDict[st.Module.ToString()].Item1.Trig)
                                 {
                                     if (st.Load(CheckFimsIsNeedOxygenPressure, N2PurgeModeEnum.WaferDisCharge.ToString()))

+ 11 - 1
Furnace/FurnaceRT/Equipments/Jobs/TransferJob.cs

@@ -586,12 +586,22 @@ namespace FurnaceRT.Equipments.Jobs
                                 var foupEnterFIMSN2purgeConfig = pm.GetFoupEnterFIMSN2purgeConfig();
                                 var foupEnterLAO2CheckSV = pm.GetFoupEnterLAO2CheckSV();
                                 var lACurrectN2purgeMode = pm.GetLACurrectN2purgeMode();
+                                if (!SC.GetValue<bool>("System.IsSimulatorMode"))
+                                {
 
+                                    var fims1Device = DEVICE.GetDevice<IoFIMS>($"PM1.FIMS1");
+                                    var fims2Device = DEVICE.GetDevice<IoFIMS>($"PM1.FIMS2");
+                                    if (fims.Module == ModuleName.FIMS1 && fims2Device.IsRunning)
+                                        continue;
+
+                                    if (fims.Module == ModuleName.FIMS2 && fims1Device.IsRunning)
+                                        continue;
+                                }
                                 var CheckFimsIsNeedOxygenPressure = pm.CheckFimsIsNeedOxygenPressure(foupEnterFIMSN2purgeConfig, "", out var isCheckO2, false);
                                 if (isCheckO2)
                                 {
                                     tj.FimsCheckOxDensityDict[fims.Module.ToString()].Item1.CheckInterval = 1;
-                                    tj.FimsCheckOxDensityDict[fims.Module.ToString()].Item1.Monitor(pm.GetN2PurgeUnder20PPMStatus(foupEnterLAO2CheckSV));
+                                    tj.FimsCheckOxDensityDict[fims.Module.ToString()].Item1.Monitor(pm.GetN2PurgeUnder20PPMStatus(foupEnterLAO2CheckSV) && pm.CheckIsLASide());
                                     if (tj.FimsCheckOxDensityDict[fims.Module.ToString()].Item1.Trig)
                                     {
                                         if (fims.Load(CheckFimsIsNeedOxygenPressure, N2PurgeModeEnum.FoupEnter.ToString()))

+ 14 - 2
Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

@@ -140,11 +140,16 @@ namespace FurnaceRT.Equipments.PMs
             tank1_TRIG.CLK = SensorHCDTANKH != null && SensorHCDTANKH.Value;
             if (tank1_TRIG.Q)
             {
+                LOG.Info($"SensorHCDTANKH trigger:{SensorHCDTANKH.Value}");
+                SetHREFEnable(new object[1] { false });
+                ValveAV113?.TurnValve(false, out _);
+            }
+            if ((SensorHCDTANKH != null && SensorHCDTANKH.Value) && TrigSIREFON.Value)
+            {
+                LOG.Info($"SensorHCDTANKH trigger:{SensorHCDTANKH.Value},TrigCREFON:{TrigSIREFON.Value}");
                 SetHREFEnable(new object[1] { false });
                 ValveAV113?.TurnValve(false, out _);
-
             }
-
         }
 
         public bool SetHREFEnable(object[] param)
@@ -174,10 +179,17 @@ namespace FurnaceRT.Equipments.PMs
             tank2_TRIG.CLK = SensorCSOURCETANKH != null && SensorCSOURCETANKH.Value;
             if (tank2_TRIG.Q)
             {
+                LOG.Info($"SensorCSOURCETANKH trigger:{SensorCSOURCETANKH.Value}");
                 SetCREFEnable(new object[1] { false });
                 ValveAV121?.TurnValve(false, out _);
 
             }
+            if ((SensorCSOURCETANKH != null && SensorCSOURCETANKH.Value) && (TrigCREFON != null && TrigCREFON.Value))
+            {
+                LOG.Info($"SensorCSOURCETANKH trigger:{SensorCSOURCETANKH.Value},TrigCREFON:{TrigCREFON.Value}");
+                SetCREFEnable(new object[1] { false });
+                ValveAV121?.TurnValve(false, out _);
+            }
 
         }
         public bool SetCREFEnable(object[] param)

BIN
Furnace/FurnaceRT/dependence/MECF.Framework.MyFA.Core.dll