Browse Source

fix list pointer exceeds limit bug.

sangwq 1 year ago
parent
commit
b447d07d5a
1 changed files with 5 additions and 8 deletions
  1. 5 8
      Venus/Venus_RT/Modules/AutoCycle.cs

+ 5 - 8
Venus/Venus_RT/Modules/AutoCycle.cs

@@ -1390,7 +1390,7 @@ namespace Venus_RT.Modules
         #region Atm System
         private void driveAtmSystem()
         {
-            if(_efemMovingItems.Count == 0)
+            if(_efemMovingItems.Count == 0 && _efemRobot.IsAvailable && _efemRobot.RobotStatus != RState.Running)
             {
                 PumpingEFEMRobotTask();
                 RuningEFEMRobotTask();
@@ -1399,9 +1399,6 @@ namespace Venus_RT.Modules
 
         private void PumpingEFEMRobotTask()
         {
-            if (!_efemRobot.IsAvailable || _efemRobot.RobotStatus == RState.Running)
-                return;
-
             foreach (var scheduler in _atmSchedulers)
             {
                 if (!scheduler.Value.IsAvailable)
@@ -1935,7 +1932,7 @@ namespace Venus_RT.Modules
 
         private void RuningEFEMRobotTask()
         {
-            if (_efemRobot.IsAvailable && _efemMovingItems.Count > 0)
+            if (_efemMovingItems.Count > 0)
             {
                 if (_efemRobot.PostMoveItems(_efemMovingItems.ToArray()))
                 {
@@ -1995,16 +1992,16 @@ namespace Venus_RT.Modules
                                 WaferInfo wafer = WaferManager.Instance.GetWafer(align.Key, 0);
                                 if (!wafer.IsEmpty)
                                 {
-                                    string attr = "AlignAngle";
-                                    string angle = string.Empty;
                                     int step = wafer.NextSequenceStep;
-                                    if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Contains(align.Key))
+                                    if (step >= wafer.ProcessJob.Sequence.Steps.Count || !wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Contains(align.Key))
                                     {
                                         step = wafer.NextSequenceStep - 1;
                                     }
 
+                                    string attr = "AlignAngle";
                                     if (wafer.ProcessJob.Sequence.Steps[step].StepParameter.ContainsKey(attr))
                                     {
+                                        string angle;
                                         angle = (string)wafer.ProcessJob.Sequence.Steps[step].StepParameter[attr];
                                         if (_efemRobot.Align(float.Parse(angle)))
                                         {