Procházet zdrojové kódy

添加JobAutoStart功能

git-svn-id: http://10.4.3.168:50001/svn/Furnace@104 dbcde07d-dcf5-c148-8a84-ac3097b7778e
Jiangjinyuan před 1 měsícem
rodič
revize
9400fd9578

+ 1 - 0
Furnace/FurnaceRT/Config/FurnaceGemModel.xml

@@ -2339,6 +2339,7 @@
     <ECID id="10010033" valueType="Ascii" logicalName="System.BackUpFileMaxNumber" value="" min="" max="" eventTrigger="" units="" description="BackUpFileMaxNumber" isArray="false" />
     <ECID id="10010034" valueType="Ascii" logicalName="System.RunningMode" value="" min="" max="" eventTrigger="" units="" description="" isArray="false" />
     <ECID id="10010035" valueType="Ascii" logicalName="System.EnableMinics" value="" min="" max="" eventTrigger="" units="" description="" isArray="false" />
+    <ECID id="10010036" valueType="Ascii" logicalName="System.IsScheduleMaintenance" value="" min="" max="" eventTrigger="" units="" description="" isArray="false" />
     <ECID id="10020001" valueType="Ascii" logicalName="System.EditParameter.EditChamberType" value="" min="" max="" eventTrigger="" units="" description="Edit Chamber Type" isArray="false" />
     <ECID id="10020002" valueType="Ascii" logicalName="System.EditParameter.EditParameterType" value="" min="" max="" eventTrigger="" units="" description="Alarm Condition,Temp Correction,Temp PID,Temp Profile,Temp Auto PID,Leak Check Condition,APC PID" isArray="false" />
     <ECID id="10030001" valueType="Ascii" logicalName="System.FDC.DataGroupName" value="" min="" max="" eventTrigger="" units="" description="FDC data group" isArray="false" />

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
Furnace/FurnaceRT/Config/VIDs/_ECID.xml


+ 31 - 5
Furnace/FurnaceRT/Equipments/Jobs/AutoTransfer.cs

@@ -41,6 +41,7 @@ using MECF.Framework.Common.DataCenter;
 using DocumentFormat.OpenXml.Drawing.Charts;
 using MECF.Framework.Common.Utilities;
 using System.Threading;
+using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
 
 namespace FurnaceRT.Equipments.Jobs
 {
@@ -1311,7 +1312,7 @@ namespace FurnaceRT.Equipments.Jobs
                                 return;
                             }
 
-                            if (!CheckDummyWaferUse(pj))
+                            if (!CheckDummyWaferUse(pj, cj))
                                 return;
 
                             if (!SC.GetValue<bool>("System.IsEnableDummyWaferDischarge"))
@@ -5904,7 +5905,7 @@ namespace FurnaceRT.Equipments.Jobs
 
         #region dummy use 
 
-        private bool CheckDummyWaferUse(ProcessJobInfo pj)
+        private bool CheckDummyWaferUse(ProcessJobInfo pj, ControlJobInfo cj)
         {
             foreach (var module in Singleton<EquipmentManager>.Instance.Modules.Keys)
             {
@@ -5995,10 +5996,35 @@ namespace FurnaceRT.Equipments.Jobs
                         int EDTimeWarning = DateTimeUtil.GetSecond(maintenanceItemEDWaferUserTime.StartValue);
                         int EDTimeAlarm = DateTimeUtil.GetSecond(maintenanceItemEDWaferUserTime.LimitValue);
                         bool IsEnableEDWaferUseTimeWarning = EDTimeWarning > 0;
-                        if (wafer.WaferType == WaferType.ED && IsEnableEDWaferUseCountWarning && wafer.UseCount > EDCountWarning && wafer.UseCount < EDCountAlarm)
+                        if (wafer.WaferType == WaferType.ED && IsEnableEDWaferUseCountWarning && maintenanceItemEDCarrierUseFreq.CurrentValue > EDCountWarning && wafer.UseCount < EDCountAlarm)
                         {
-                            Singleton<ScheduleMaintenanceDataManager>.Instance.MaintenanceProcessingCommandExec(maintenanceItemEDCarrierUseFreq.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set, $"more than {EDCountWarning} 次");
-                            return false;
+                            //Singleton<ScheduleMaintenanceDataManager>.Instance.MaintenanceProcessingCommandExec(maintenanceItemEDCarrierUseFreq.MaintenanceProcessing, Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set, $"more than {EDCountWarning} 次");
+                            //return false;
+                            if (Enum.TryParse<MaintenanceProcessingCommandEnum>(maintenanceItemEDCarrierUseFreq.MaintenanceProcessing, out var command))
+                            {
+                                switch (command)
+                                {
+                                    case MaintenanceProcessingCommandEnum.None:
+                                        break;
+                                    case MaintenanceProcessingCommandEnum.AlarmReport:
+                                        Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set($"more than {EDCountWarning} 次");
+                                        break;
+                                    case MaintenanceProcessingCommandEnum.JobProhibition:
+                                        break;
+                                    case MaintenanceProcessingCommandEnum.JobManualStart:
+                                        break;
+                                    case MaintenanceProcessingCommandEnum.JobAutoStart:
+
+                                        Singleton<EquipmentManager>.Instance.EDWaferTypeUseCountWarning.Set($"more than {EDCountWarning} 次");
+                                        Singleton<EquipmentManager>.Instance.CheckToPostMessage((int)EquipmentManager.MSG.JobAutoStart, cj.Name);
+                                        var pmModule = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
+                                        if (pmModule != null)
+                                            pmModule.Process(maintenanceItemEDCarrierUseFreq.AssociationProcessRecipeName, false, true, out string reson);
+
+                                        return false;
+
+                                }
+                            }
                         }
 
                         if (wafer.WaferType == WaferType.ED && IsEnableEDWaferUseTimeWarning && wafer.UseTime > EDTimeWarning && wafer.UseTime < EDTimeAlarm)

+ 10 - 0
Furnace/FurnaceRT/Equipments/Systems/EquipmentManager.cs

@@ -39,6 +39,7 @@ using MECF.Framework.Common.SubstrateTrackings;
 using MECF.Framework.FA.Core.FAControl;
 using MECF.Framework.RT.Core.Applications;
 using MECF.Framework.RT.Core.IoProviders;
+using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
 using AutoTransfer = FurnaceRT.Equipments.Jobs.AutoTransfer;
 using ReturnAllWafer = FurnaceRT.Equipments.Jobs.ReturnAllWafer;
 
@@ -115,6 +116,7 @@ namespace FurnaceRT.Equipments.Systems
             StartJob,
             StopJob,
             AbortJob,
+            JobAutoStart,
 
             JobDone,
 
@@ -361,6 +363,7 @@ namespace FurnaceRT.Equipments.Systems
 
             Transition(RtState.AutoRunning, FSM_MSG.TIMER, fAutoTransfer, RtState.AutoRunning);
 
+            Transition(RtState.AutoRunning, MSG.JobAutoStart, FsmJobAutoStart, RtState.Idle);
             Transition(RtState.AutoRunning, MSG.ABORT, FsmAbort, RtState.Idle);
             Transition(RtState.AutoRunning, MSG.JobDone, null, RtState.AutoIdle);
 
@@ -999,6 +1002,13 @@ namespace FurnaceRT.Equipments.Systems
             _transferJob.CancelUnloadingJob((string)param[0], (string)param[1]);
             return true;
         }
+        private bool FsmJobAutoStart(object[] param)
+        {
+            _auto.PauseJob((string)param[0]);
+            _auto.Clear();
+
+            return true;
+        }
         private bool FsmAbort(object[] param)
         {
             if (FsmState == (int)RtState.Transfer)