Browse Source

Fix the bugs about Exclude/Include feature.

sangwq 10 months ago
parent
commit
1d60dcb593

+ 2 - 1
Venus/Venus_RT/Modules/Schedulers/SchedulerLoadLock.cs

@@ -45,10 +45,11 @@ namespace Venus_RT.Modules.Schedulers
         {  
             get { return _entity.IsATM; } 
         }
+        public override bool IsInclude { get { return _entity.IsInclude; } }
 
         public override int TimeToReady
         {
-            get { return _entity.TimeToReady; }
+            get { return (IsOnline && IsInclude) ? _entity.TimeToReady : int.MaxValue; }
         }
 
         private LLEntity _entity = null;

+ 1 - 0
Venus/Venus_RT/Modules/Schedulers/SchedulerModule.cs

@@ -100,6 +100,7 @@ namespace Venus_RT.Scheduler
         public virtual bool IsError { get; }
         public virtual bool IsAtm { get { return true; } }
         public virtual bool IsVac { get { return false; } }
+        public virtual bool IsInclude { get { return true; } }
 
         public int InTransferSlot
         {

+ 4 - 2
Venus/Venus_RT/Modules/Schedulers/SchedulerPM.cs

@@ -62,9 +62,11 @@ namespace Venus_RT.Scheduler
 
         public override int TimeToReady
         {
-            get { return _entity.TimeToReady; }
+            get { return (IsOnline && IsInclude)?  _entity.TimeToReady : int.MaxValue; }
         }
-        
+
+        public override bool IsInclude { get { return _entity.IsInclude; } }
+
         public TaskType Task => _task;
         private PMEntity _entity = null;
 

+ 6 - 3
Venus/Venus_RT/Modules/SystemDispatcher.cs

@@ -1352,6 +1352,9 @@ namespace Venus_RT.Modules
                 if (ModuleHelper.IsLoadPort(mod.Key))
                     continue;
 
+                if (!mod.Value.Scheduler.IsInclude)
+                    continue;
+
                 if (!mod.Value.Scheduler.IsIdle)
                 {
                     LOG.Write(eEvent.ERR_ROUTER, mod.Key, $"{mod.Key} is not ready for return wafer.");
@@ -1389,7 +1392,7 @@ namespace Venus_RT.Modules
             int systemWaferCount = 0;
             foreach (var mod in _dictModuleTask)
             {
-                if (ModuleHelper.IsLoadPort(mod.Key))
+                if (ModuleHelper.IsLoadPort(mod.Key) || !mod.Value.Scheduler.IsInclude)
                     continue;
 
                 int nSlotNumber = ModuleHelper.IsLoadLock(mod.Key) ? (mod.Key == ModuleName.LLA ? _LLASlotNumber : _LLBSlotNumber) : (ModuleHelper.IsTMRobot(mod.Key) || ModuleHelper.IsEFEMRobot(mod.Key) ? 2 : 1);
@@ -4139,7 +4142,7 @@ namespace Venus_RT.Modules
             if (_tmRobotStatus != RState.End)
                 return;
             var hands = GetTMFreeHand();
-            var lls = _dictModuleTask.Where(mod => ModuleHelper.IsLoadLock(mod.Key) && !IsLLReservedByEFEM(mod.Key) && mod.Value.Scheduler.IsIdle && GetLLWaferExistance(mod.Key).emptySlots.Count > 0).OrderByDescending(mod => GetLLReadyInOutSlots(mod.Key).emptySlot.Count);
+            var lls = _dictModuleTask.Where(mod => ModuleHelper.IsLoadLock(mod.Key) && !IsLLReservedByEFEM(mod.Key) && mod.Value.Scheduler.IsIdle  && mod.Value.Scheduler.IsInclude && GetLLWaferExistance(mod.Key).emptySlots.Count > 0).OrderByDescending(mod => GetLLReadyInOutSlots(mod.Key).emptySlot.Count);
             if(lls.Count() > 0)
             {
                 // return robot wafers
@@ -4164,7 +4167,7 @@ namespace Venus_RT.Modules
 
                 // return PM wafers
                 var PickActions = new List<MoveItem>();
-                var hasWaferPMs = _dictModuleTask.Where(mod => ModuleHelper.IsPm(mod.Key) && mod.Value.Scheduler.IsIdle && WaferManager.Instance.CheckHasWafer(mod.Key, 0));
+                var hasWaferPMs = _dictModuleTask.Where(mod => ModuleHelper.IsPm(mod.Key) && mod.Value.Scheduler.IsIdle && mod.Value.Scheduler.IsInclude && WaferManager.Instance.CheckHasWafer(mod.Key, 0));
                 foreach(var pm in hasWaferPMs)
                 {
                     if (moveCount < hands.Count && moveCount < emptySlots.Count)