Browse Source

update loader wafershuttle use issue

chenkui 3 weeks ago
parent
commit
71ab41b99f

+ 1 - 1
CyberX8_RT/Devices/AXIS/Galil/GalilAxis.cs

@@ -178,7 +178,7 @@ namespace CyberX8_RT.Devices.AXIS.Galil
                         _inTargetPosition = false;
                         EndOperation();
                         _status = RState.Failed;
-                        LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        LOG.WriteLog(eEvent.WARN_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
                     }
                 }
 

+ 1 - 23
CyberX8_RT/Devices/Loader/LoaderLoadRoutine.cs

@@ -195,7 +195,7 @@ namespace CyberX8_RT.Devices.Loader
                 .Run(LoadStep.CRSHomedGotoSetUp, () => { return AxisPosition(_crsAxis, $"Setup{_waferSize}"); }, _delay_1ms)
                 .WaitWithStopCondition(LoadStep.CRSHomedGotoSetUpCheck, () => { return _crsAxis.Status == RState.End; },
                     () => CheckAxisMotionStopStatus(_crsAxis))
-                .End(LoadStep.End, UpdateWaferHolderLipCRSUsed);
+                .End(LoadStep.End, NullFun);
 
             return Runner.Status; 
         }
@@ -560,27 +560,5 @@ namespace CyberX8_RT.Devices.Loader
             }
             return true;
         }
-        /// <summary>
-        /// 更新WaferHolder LipCRS用量
-        /// </summary>
-        /// <returns></returns>
-        private bool UpdateWaferHolderLipCRSUsed()
-        {
-            WaferHolderInfo waferHolderInfo = WaferHolderManager.Instance.GetWaferHolder("Loader");
-            if (waferHolderInfo != null)
-            {
-                if (!string.IsNullOrEmpty(waferHolderInfo.CrsAId) && _side == "SideA")
-                {
-                    waferHolderInfo.CrsATotalUses++;
-                    WaferHolderManager.Instance.UpdateWaferHolderInfo(waferHolderInfo);
-                }
-                if (!string.IsNullOrEmpty(waferHolderInfo.CrsBId) && _side == "SideB")
-                {
-                    waferHolderInfo.CrsBTotalUses++;
-                    WaferHolderManager.Instance.UpdateWaferHolderInfo(waferHolderInfo);
-                }
-            }
-            return true;
-        }
     }
 }

+ 5 - 1
CyberX8_RT/Devices/Loader/LoaderUnloadRoutine.cs

@@ -19,6 +19,9 @@ using MECF.Framework.Common.CommonData.Loader;
 using CyberX8_RT.Modules.Transporter;
 using Aitex.Core.RT.SCCore;
 using CyberX8_RT.Modules.Loader;
+using MECF.Framework.Common.WaferHolder;
+using Aitex.Core.Common;
+using MECF.Framework.Common.SubstrateTrackings;
 
 namespace CyberX8_RT.Devices.Loader
 {
@@ -163,7 +166,7 @@ namespace CyberX8_RT.Devices.Loader
                 //.Run(UnloadStep.CRSHomedGotoSetUp, () => { return AxisPosition(_lsAxis, $"Setup{_waferSize}"); }, _delay_1ms)
                 //.WaitWithStopCondition(UnloadStep.CRSHomedGotoSetUpCheck, () => { return _lsAxis.Status == RState.End; },
                 //    () => CheckAxisMotionStopStatus(_lsAxis))
-                .End(UnloadStep.End, NullFun, 10);
+                .End(UnloadStep.End, NullFun);
             return Runner.Status;
         }
         /// <summary>
@@ -540,5 +543,6 @@ namespace CyberX8_RT.Devices.Loader
             }
             return result;
         }
+
     }
 }

+ 2 - 16
CyberX8_RT/Modules/Loader/LoaderLoadSideRoutine.cs

@@ -138,7 +138,7 @@ namespace CyberX8_RT.Modules.Loader
                 .RunIf(LoadStep.RotationGoToTRNPA,_loadComplete,RotationGotoTransporterA,_delay_1s)
                 .WaitWithStopConditionIf(LoadStep.RotationGoToTRNPAWait,_loadComplete, CheckRotationPositionStatus,CheckRotationPositionRunStop)
                 .RunIf(LoadStep.UnclampWaferHolder,_loadComplete, WaferHolderClampOffAction,_delay_1ms)
-                .End(LoadStep.End, UpdateWaferHolderUse, _delay_1ms);
+                .End(LoadStep.End, NullFun, _delay_1ms);
             return Runner.Status;
         }
         /// <summary>
@@ -211,7 +211,7 @@ namespace CyberX8_RT.Modules.Loader
                 sideComplete = (ret != RState.Running);
                 if (_isSideStop)
                 {
-                    NotifyError(eEvent.ERR_LOADER, $"load A failed\r\n{_sideLoadRoutine.ErrorMsg}", 0);
+                    NotifyError(eEvent.ERR_LOADER, $"load  failed\r\n{_sideLoadRoutine.ErrorMsg}", 0);
                 }
             }
             return _isSideStop;
@@ -291,20 +291,6 @@ namespace CyberX8_RT.Modules.Loader
             return result;
         }
         /// <summary>
-        /// 更新WaferHolder总用量
-        /// </summary>
-        /// <returns></returns>
-        private bool UpdateWaferHolderUse()
-        {
-            WaferHolderInfo waferHolderInfo = WaferHolderManager.Instance.GetWaferHolder("Loader");
-            if(waferHolderInfo != null)
-            {
-                waferHolderInfo.TotalUses += 1;
-                WaferHolderManager.Instance.UpdateWaferHolderInfo(waferHolderInfo);
-            }
-            return true;
-        }
-        /// <summary>
         /// 启动
         /// </summary>
         /// <param name="objs"></param>

+ 63 - 2
CyberX8_RT/Modules/Loader/LoaderUnloadSideRoutine.cs

@@ -11,6 +11,7 @@ using Aitex.Core.RT.Log;
 using MECF.Framework.Common.CommonData.Loader;
 using Aitex.Core.RT.SCCore;
 using Aitex.Core.Util;
+using MECF.Framework.Common.WaferHolder;
 
 namespace CyberX8_RT.Modules.Loader
 {
@@ -18,6 +19,7 @@ namespace CyberX8_RT.Modules.Loader
     {
         private enum UnloadStep
         {
+            CheckRotationLocation,
             RotationGoToLOADA,
             RotationGoToLOADAWait,
             SideUnload,
@@ -61,6 +63,10 @@ namespace CyberX8_RT.Modules.Loader
         /// Wafer尺寸
         /// </summary>
         private int _waferSize;
+        /// <summary>
+        /// 是否相反
+        /// </summary>
+        private bool _isReverse;
         #endregion
 
         #region 属性
@@ -98,14 +104,28 @@ namespace CyberX8_RT.Modules.Loader
         public RState Monitor()
         {
             LottrackRecord();
-            Runner.Run(UnloadStep.RotationGoToLOADA,RotationGotoLOAD,_delay_1ms)
+            Runner.Run(UnloadStep.CheckRotationLocation,CheckRotationLocation)
+                .Run(UnloadStep.RotationGoToLOADA,RotationGotoLOAD,_delay_1ms)
                 .WaitWithStopCondition(UnloadStep.RotationGoToLOADAWait,CheckRotationPositionStatus,CheckRotationPositionRunStop)
                 .Run(UnloadStep.SideUnload, () => StartUnloadRoutine(_sideUnloadRoutine,_isSideUnloaded), _delay_1ms)
                 .WaitWithStopCondition(UnloadStep.UnloadAllWait, CheckUnloadAllRoutineEndStatus,CheckUnloadAllRoutineStopStatus)
-                .End(UnloadStep.End, NullFun, _delay_1ms);
+                .End(UnloadStep.End, UpdateWaferHolderLipCRSUsed, _delay_1ms);
             return Runner.Status;
         }
         /// <summary>
+        /// 检验Rotation位置
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckRotationLocation()
+        {
+            double rotationPosition = _rotationAxis.MotionData.MotorPosition;
+            if (_rotationAxis.CheckPositionIsInStation(rotationPosition, "TRNPB"))
+            {
+                _isReverse = true;
+            }
+            return true;
+        }
+        /// <summary>
         /// Rotation Goto LOADA
         /// </summary>
         /// <returns></returns>
@@ -214,6 +234,46 @@ namespace CyberX8_RT.Modules.Loader
             }
             return false;
         }
+
+
+        /// <summary>
+        /// 更新WaferHolder LipCRS用量
+        /// </summary>
+        /// <returns></returns>
+        private bool UpdateWaferHolderLipCRSUsed()
+        {
+            WaferHolderInfo waferHolderInfo = WaferHolderManager.Instance.GetWaferHolder("Loader");
+
+
+            if (waferHolderInfo != null)
+            {
+                if (_side==SIDE_A)
+                {
+                    if (_isReverse)
+                    {
+                        waferHolderInfo.CrsBTotalUses++;
+                    }
+                    else
+                    {
+                        waferHolderInfo.CrsATotalUses++;
+                    }
+                }
+                else 
+                {
+                    if (_isReverse)
+                    {
+                        waferHolderInfo.CrsATotalUses++;
+                    }
+                    else
+                    {
+                        waferHolderInfo.CrsBTotalUses++;
+                    }
+                }
+                waferHolderInfo.TotalUses++;
+                WaferHolderManager.Instance.UpdateWaferHolderInfo(waferHolderInfo);
+            }
+            return true;
+        }
         /// <summary>
         /// 启动
         /// </summary>
@@ -252,6 +312,7 @@ namespace CyberX8_RT.Modules.Loader
             _sideUnloadRoutine = new LoaderUnloadRoutine(ModuleName.Loader1.ToString(), _side);
             _isSideUnloaded = false;
             _isSideStop = false;
+            _isReverse = false;
         }
         /// <summary>
         /// 重试