Browse Source

FIMS如果是压氧load,则根据配置项决定LA是否切换阶段1

jiangjy 1 week ago
parent
commit
c41cfe3292

+ 2 - 11
Furnace/FurnaceRT/Equipments/FIMSs/FIMSLoadRoutine.cs

@@ -8,6 +8,7 @@ using FurnaceRT.Equipments.Systems;
 using MECF.Framework.Common.CommonData.SorterDefines;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.SubstrateTrackings;
+using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
 using System;
 using System.ServiceModel;
 
@@ -64,19 +65,9 @@ namespace FurnaceRT.Equipments.FIMSs
                 }
             }
             if (_isNeedN2Purge)
-            {
-                //if (SC.ContainsItem("System.FIMSManualCheck") && SC.GetValue<bool>("System.FIMSManualCheck") )
-                //{
-                //    if (!(Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).FIMSLoadCheckLAO2(out string reason))
-                //    {
-                //        _fimsModule.LoadFailAlarm.Set(reason);
-                //        return Result.FAIL;
-                //    }
-                //}
-
                 _pmModule?.SetN2PurgeParameters(_transferMode);
 
-            }
+
 
 
             if (_fimsModule.FIMSDevice.IsLoadCompleted)

+ 10 - 21
Furnace/FurnaceRT/Equipments/Jobs/AutoTransfer.cs

@@ -47,6 +47,7 @@ using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
 using MECF.Framework.Common.Tolerance;
 using MECF.Framework.Common.CommonData.SorterDefines;
 using MECF.Framework.Common.Extens;
+using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.TDK;
 
 namespace FurnaceRT.Equipments.Jobs
 {
@@ -801,7 +802,7 @@ namespace FurnaceRT.Equipments.Jobs
                     if (pj.ProcessingState == EnumProcessingState.Charging || pj.ProcessingState == EnumProcessingState.Discharging)
                     {
                         var pmModule = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
-                
+
                     }
 
                     pj.ProcessingState = EnumProcessingState.WaitingWithdrawal;
@@ -979,7 +980,7 @@ namespace FurnaceRT.Equipments.Jobs
                 {
                     pj.SetState(EnumProcessJobState.ProcessingComplete);
                     JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
-                  
+
                 }
                 else
                 {
@@ -992,7 +993,7 @@ namespace FurnaceRT.Equipments.Jobs
                             pj.SetState(EnumProcessJobState.ProcessingComplete);
                             JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
                             _faCallback.EndDischarge(pj);
-                          
+
                         }
                     }
                     else if (pj.State == EnumProcessJobState.Stopping)
@@ -1001,7 +1002,7 @@ namespace FurnaceRT.Equipments.Jobs
                         {
                             pj.SetState(EnumProcessJobState.ProcessingComplete);
                             JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
-                        
+
                         }
                     }
                 }
@@ -1521,14 +1522,7 @@ namespace FurnaceRT.Equipments.Jobs
             var laIsNeedXxygenPressure = pmModule.CheckLAIsNeedOxygenPressure(pj.N2PurgeModeStr);
             if (laIsNeedXxygenPressure)
             {
-                //pmModule?.SetN2PurgeProcess(true);
-                //if (SC.ContainsItem("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable") && SC.GetValue<bool>("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable"))
-                //    pmModule?.SetN2PurgeLAO2CheckFirstEnable(true);
-
-                if (SC.ContainsItem("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable") && SC.GetValue<bool>("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable"))
-                {
-                
-                }
+             
                 if (SC.ContainsItem("PM1.RecipeRelevancyN2Purge") && SC.GetValue<bool>("PM1.RecipeRelevancyN2Purge") && SC.ContainsItem("PM1.SelectN2PurgeMode"))
                 {
                     var setValue = pmModule.GetN2PurgeModeEnumByStr(pj.N2PurgeModeStr);
@@ -1705,6 +1699,8 @@ namespace FurnaceRT.Equipments.Jobs
                             {
                                 if (st.Load(CheckFimsIsNeedOxygenPressure, N2PurgeModeEnum.WaferCharge.ToString()))
                                 {
+                                    
+
                                     _fimsCheckOxDensityDict[st.Module.ToString()].Item1.Restart();
                                     LOG.Info($"FIMS={st.Module} , FIMS N2PurgeConfig={waferChargeFIMSN2purgeConfig},Recipe N2purge Set={pj.N2PurgeModeStr},Currect N2Purge={lACurrectN2purgeMode},pjStatus:{pj.ProcessingState},wait WaferCharge。A");
 
@@ -6648,7 +6644,7 @@ namespace FurnaceRT.Equipments.Jobs
                     }
                 }
                 var asd = CheckChargeFinished(pj, pm.Module);
-           
+
                 if (isNeedProcess && asd && pj.ProcessingState != EnumProcessingState.Processing &&
                     pmModule.CheckStandbyCondition() && pm.IsAvailable)
                 {
@@ -6734,14 +6730,7 @@ namespace FurnaceRT.Equipments.Jobs
                             var laIsNeedXxygenPressure = pmModule.CheckLAIsNeedOxygenPressure(pj.N2PurgeModeStr);
                             if (laIsNeedXxygenPressure)
                             {
-                                //pmModule?.SetN2PurgeProcess(true);
-                                //if (SC.ContainsItem("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable") && SC.GetValue<bool>("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable"))
-                                //    pmModule?.SetN2PurgeLAO2CheckFirstEnable(true);
-
-                                if (SC.ContainsItem("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable") && SC.GetValue<bool>("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable"))
-                                {
-                                    pmModule?.SetN2PurgeProcess(true);
-                                }
+                              
                                 if (SC.ContainsItem("PM1.RecipeRelevancyN2Purge") && SC.GetValue<bool>("PM1.RecipeRelevancyN2Purge") && SC.ContainsItem("PM1.SelectN2PurgeMode"))
                                 {
                                     var setValue = pmModule.GetN2PurgeModeEnumByStr(pj.N2PurgeModeStr);

+ 77 - 26
Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

@@ -443,7 +443,7 @@ namespace FurnaceRT.Equipments.PMs
             }
             _canSwitchToPhase2 = true;
         }
-        private void SetN2PurgeValveData(string mode, string msg = "")
+        public void SetN2PurgeValveData(string mode, string msg = "")
         {
 
             var value = _n2PurgeSequenceAction[mode];
@@ -702,16 +702,32 @@ namespace FurnaceRT.Equipments.PMs
             {
                 SetN2PurgeFOUPO2CheckSV((float)GetWaferChargeFOUPO2CheckSV());
                 SetN2PurgeLAO2CheckSV((float)GetWaferChargeLAO2CheckSV());
+
+                if (GetWaferChargeLAN2purgeConfig())
+                {
+                    SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase1.ToString());
+                    RestAllN2PrugeRD();
+                }
             }
             if (n2PurgeModeEnum == N2PurgeModeEnum.FoupEnter.ToString())
             {
                 SetN2PurgeFOUPO2CheckSV((float)GetFoupEnterFOUPO2CheckSV());
                 SetN2PurgeLAO2CheckSV((float)GetFoupEnterLAO2CheckSV());
+                if (GetFoupEnterLAN2purgeConfig())
+                {
+                    SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase1.ToString());
+                    RestAllN2PrugeRD();
+                }
             }
             if (n2PurgeModeEnum == N2PurgeModeEnum.WaferDisCharge.ToString())
             {
                 SetN2PurgeFOUPO2CheckSV((float)GetWaferDisChargeFOUPO2CheckSV());
                 SetN2PurgeLAO2CheckSV((float)GetWaferDisChargeLAO2CheckSV());
+                if (GetWaferDisChargeLAN2purgeConfig())
+                {
+                    SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase1.ToString());
+                    RestAllN2PrugeRD();
+                }
             }
         }
 
@@ -862,7 +878,7 @@ namespace FurnaceRT.Equipments.PMs
         /// <param name="isProcessing"></param>
         /// <param name="limitO2Data"></param>
         /// <returns></returns>
-        public bool CheckBoatMoveIsNeedOxygenPressure(string n2PurgeModeEnumStr,bool isProcessing, out double limitO2Data)
+        public bool CheckBoatMoveIsNeedOxygenPressure(string n2PurgeModeEnumStr, bool isProcessing, out double limitO2Data)
         {
             limitO2Data = 0;
 
@@ -917,6 +933,19 @@ namespace FurnaceRT.Equipments.PMs
             }
             return str;
         }
+
+
+
+
+
+
+        public string GetLACurrectN2purgeMode()
+        {
+            return SC.ContainsItem("PM1.SelectN2PurgeMode") ? SC.GetStringValue("PM1.SelectN2PurgeMode") : N2PurgeModeEnum.ManualMode.ToString();
+        }
+
+
+        #region FoupEnter
         public double GetFoupEnterLAO2CheckSV()
         {
             return SC.ContainsItem("PM1.N2Purge.FoupEnter.LAO2CheckSV") ? SC.GetValue<double>("PM1.N2Purge.FoupEnter.LAO2CheckSV") : 20;
@@ -930,6 +959,13 @@ namespace FurnaceRT.Equipments.PMs
             return SC.ContainsItem("PM1.N2Purge.FoupEnter.FOUPN2PurgeEnable") ? SC.GetValue<bool>("PM1.N2Purge.FoupEnter.FOUPN2PurgeEnable") : false;
 
         }
+        public bool GetFoupEnterLAN2purgeConfig()
+        {
+            return SC.ContainsItem("PM1.N2Purge.FoupEnter.TransferRoomN2PurgeEnable") ? SC.GetValue<bool>("PM1.N2Purge.FoupEnter.TransferRoomN2PurgeEnable") : false;
+
+        }
+        #endregion
+        #region WaferCharge
         public double GetWaferChargeLAO2CheckSV()
         {
             return SC.ContainsItem("PM1.N2Purge.WaferCharge.LAO2CheckSV") ? SC.GetValue<double>("PM1.N2Purge.WaferCharge.LAO2CheckSV") : 20;
@@ -943,55 +979,70 @@ namespace FurnaceRT.Equipments.PMs
         {
             return SC.ContainsItem("PM1.N2Purge.WaferCharge.FOUPN2PurgeEnable") ? SC.GetValue<bool>("PM1.N2Purge.WaferCharge.FOUPN2PurgeEnable") : false;
         }
-
-        public bool GetBoatLoadCheckO2DensityConfig()
+        public bool GetWaferChargeLAN2purgeConfig()
         {
-            return SC.ContainsItem("PM1.N2Purge.BoatLoad.TransferRoomO2DensityCheckEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatLoad.TransferRoomO2DensityCheckEnable") : false;
-        }
+            return SC.ContainsItem("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable") ? SC.GetValue<bool>("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable") : false;
 
-        public bool GetBoatUnLoadCheckO2DensityConfig()
+        }
+        #endregion
+        #region WaferDisCharge
+        public double GetWaferDisChargeLAO2CheckSV()
         {
-            return SC.ContainsItem("PM1.N2Purge.BoatUnLoad.TransferRoomO2DensityCheckEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatUnLoad.TransferRoomO2DensityCheckEnable") : false;
+            return SC.ContainsItem("PM1.N2Purge.WaferDisCharge.LAO2CheckSV") ? SC.GetValue<double>("PM1.N2Purge.WaferDisCharge.LAO2CheckSV") : 20;
         }
-
-        public bool GetBoatUnLoadEAxisInhibitEnableConfig()
+        public double GetWaferDisChargeFOUPO2CheckSV()
         {
-            return SC.ContainsItem("PM1.N2Purge.BoatUnLoad.EAxisInhibitEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatUnLoad.EAxisInhibitEnable") : false;
+            return SC.ContainsItem("PM1.N2Purge.WaferDisCharge.FOUPO2CheckSV") ? SC.GetValue<double>("PM1.N2Purge.WaferDisCharge.FOUPO2CheckSV") : 20;
         }
 
-        public bool GetBoatLoadEAxisInhibitEnableConfig()
+        public bool GetWaferDisChargeFIMSN2purgeConfig()
         {
-            return SC.ContainsItem("PM1.N2Purge.BoatLoad.EAxisInhibitEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatLoad.EAxisInhibitEnable") : false;
+            return SC.ContainsItem("PM1.N2Purge.WaferDisCharge.FOUPN2PurgeEnable") ? SC.GetValue<bool>("PM1.N2Purge.WaferDisCharge.FOUPN2PurgeEnable") : false;
         }
-        public double GetBoatUnLoadLAO2CheckSV()
+        public bool GetWaferDisChargeLAN2purgeConfig()
         {
-            return SC.ContainsItem("PM1.N2Purge.BoatUnLoad.LAO2CheckSV") ? SC.GetValue<double>("PM1.N2Purge.BoatUnLoad.LAO2CheckSV") : 20;
+            return SC.ContainsItem("PM1.N2Purge.WaferDisCharge.TransferRoomN2PurgeEnable") ? SC.GetValue<bool>("PM1.N2Purge.WaferDisCharge.TransferRoomN2PurgeEnable") : false;
+
         }
+        #endregion
+        #region Boat Load
         public double GetBoatLoadLAO2CheckSV()
         {
             return SC.ContainsItem("PM1.N2Purge.BoatLoad.LAO2CheckSV") ? SC.GetValue<double>("PM1.N2Purge.BoatLoad.LAO2CheckSV") : 20;
         }
-        public double GetWaferDisChargeLAO2CheckSV()
+        public bool GetBoatLoadCheckO2DensityConfig()
         {
-            return SC.ContainsItem("PM1.N2Purge.WaferDisCharge.LAO2CheckSV") ? SC.GetValue<double>("PM1.N2Purge.WaferDisCharge.LAO2CheckSV") : 20;
+            return SC.ContainsItem("PM1.N2Purge.BoatLoad.TransferRoomO2DensityCheckEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatLoad.TransferRoomO2DensityCheckEnable") : false;
         }
-        public double GetWaferDisChargeFOUPO2CheckSV()
+        public bool GetBoatLoadEAxisInhibitEnableConfig()
         {
-            return SC.ContainsItem("PM1.N2Purge.WaferDisCharge.FOUPO2CheckSV") ? SC.GetValue<double>("PM1.N2Purge.WaferDisCharge.FOUPO2CheckSV") : 20;
+            return SC.ContainsItem("PM1.N2Purge.BoatLoad.EAxisInhibitEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatLoad.EAxisInhibitEnable") : false;
         }
-
-        public bool GetWaferDisChargeFIMSN2purgeConfig()
+        public bool GetBoatLoadLAN2purgeConfig()
         {
-            return SC.ContainsItem("PM1.N2Purge.WaferDisCharge.FOUPN2PurgeEnable") ? SC.GetValue<bool>("PM1.N2Purge.WaferDisCharge.FOUPN2PurgeEnable") : false;
+            return SC.ContainsItem("PM1.N2Purge.BoatLoad.TransferRoomN2PurgeEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatLoad.TransferRoomN2PurgeEnable") : false;
         }
-        public string GetLACurrectN2purgeMode()
+        #endregion
+        #region BoatUnLoad
+        public bool GetBoatUnLoadCheckO2DensityConfig()
         {
-            return SC.ContainsItem("PM1.SelectN2PurgeMode") ? SC.GetStringValue("PM1.SelectN2PurgeMode") : N2PurgeModeEnum.ManualMode.ToString();
+            return SC.ContainsItem("PM1.N2Purge.BoatUnLoad.TransferRoomO2DensityCheckEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatUnLoad.TransferRoomO2DensityCheckEnable") : false;
         }
 
+        public bool GetBoatUnLoadEAxisInhibitEnableConfig()
+        {
+            return SC.ContainsItem("PM1.N2Purge.BoatUnLoad.EAxisInhibitEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatUnLoad.EAxisInhibitEnable") : false;
+        }
+        public double GetBoatUnLoadLAO2CheckSV()
+        {
+            return SC.ContainsItem("PM1.N2Purge.BoatUnLoad.LAO2CheckSV") ? SC.GetValue<double>("PM1.N2Purge.BoatUnLoad.LAO2CheckSV") : 20;
+        }
+        public bool GetBoatUnLoadLAN2purgeConfig()
+        {
+            return SC.ContainsItem("PM1.N2Purge.BoatUnLoad.TransferRoomN2PurgeEnable") ? SC.GetValue<bool>("PM1.N2Purge.BoatUnLoad.TransferRoomN2PurgeEnable") : false;
 
-
-
+        }
+        #endregion
 
     }
 }

+ 1 - 1
Furnace/FurnaceUI/Dialog/N2PurgeSelectDialogView.xaml

@@ -833,7 +833,7 @@
                         <TextBlock
                             Margin="2"
                             Foreground="White"
-                            Text="[Foup Enter] Enable N2-Purge before OUP N2-Purge"
+                            Text="[Foup Enter] Enable N2-Purge before FOUP N2-Purge"
                             TextWrapping="Wrap"/>
                     </Border>
                 </Grid>

+ 2 - 2
Furnace/FurnaceUI/Views/Parameter/N2PurgeEditView.xaml

@@ -1698,7 +1698,7 @@
                     <oxy:PlotView Background="Transparent" Width="auto" Margin="-30,-14,-8,-10" Model="{Binding N2Model}" Panel.ZIndex="1"   />
 
                 </Border>-->
-                <!--<Viewbox
+                <Viewbox
                     Grid.Row="0"
                     Grid.RowSpan="10"
                     Grid.Column="0"
@@ -1728,7 +1728,7 @@
                             Stroke="Blue"
                             StrokeThickness="5"/>
                     </Canvas>
-                </Viewbox>-->
+                </Viewbox>
 
             </Grid>