Browse Source

Transfer PM wafer while PMTask status not update to idle.

sangwq 1 year ago
parent
commit
614fe9104b
1 changed files with 4 additions and 2 deletions
  1. 4 2
      Venus/Venus_RT/Modules/SystemDispatcher.cs

+ 4 - 2
Venus/Venus_RT/Modules/SystemDispatcher.cs

@@ -219,7 +219,7 @@ namespace Venus_RT.Modules
         public ModuleStatus                 Status      { get; set; }
         public SchedulerModule              Scheduler   { get; }
         public virtual int                  SlotNum     { get; protected set; }
-        public virtual bool                 IsIdle      { get { return Status == ModuleStatus.Idle; } }
+        public virtual bool                 IsIdle      { get { return Status == ModuleStatus.Idle || Status == ModuleStatus.PreHeating; } }
 
         private int     _currentActionTime = 0;
 
@@ -317,7 +317,6 @@ namespace Venus_RT.Modules
                         {
                             return Scheduler.IsAvailable ? 0 : (Scheduler.TimeToReady + 500) / 1000;
                         }
-                        break;
                     case ModuleStatus.PostJobClean:
                     case ModuleStatus.WTWClean:
                         {
@@ -2287,6 +2286,9 @@ namespace Venus_RT.Modules
                         if (nextActions.Exists(action => !_lstWaferTasks.Exists(wafer => (wafer.movingStatus == RState.End || wafer.movingStatus == RState.Init) && wafer.currentMod == action.SourceModule && wafer.currentSlot == action.SourceSlot)))
                             return;
 
+                        if (ModuleHelper.IsPm(nextActions.First().Module) && !_dictModuleTask[nextActions.First().Module].IsIdle)  /// wait PMTask status update to idle
+                            return;
+
                         _curTmAction = _tmSchdActions.Dequeue();
                         foreach(var action in _curTmAction)
                         {