瀏覽代碼

update loader WaferGroup

chenkui 1 周之前
父節點
當前提交
2ead753b04

+ 0 - 4
CyberX8_RT/Devices/AXIS/JetAxisBase.cs

@@ -872,10 +872,6 @@ namespace CyberX8_RT.Devices.AXIS
             if (variable == MOTOR_POSITION)
             {
                 CalculateCurrentStation(MotionData.MotorPosition);
-                if (SC.GetValue<bool>("System.IsSimulatorMode"))
-                {
-                    LOG.WriteLog(eEvent.INFO_AXIS, Module, $"Motor position is {value}");
-                }
             }
             if (variable == ACTUAL_TORQUE)
             {

+ 2 - 12
CyberX8_RT/Devices/Loader/LoaderSideVacuumLevelCheckRoutine.cs

@@ -70,7 +70,7 @@ namespace CyberX8_RT.Devices.AXIS.CANOpen
             bool result = false;
             if (_vacuum)
             {
-                result= _loaderSide.SideData.CRSVacuumValue < 0 && _loaderSide.SideData.CRSVacuumValue < _crsVacuumHighLimit;
+                result= _loaderSide.SideData.CRSVacuumValue < _crsVacuumHighLimit;
                 if (!result)
                 {
                     if (_loaderSide.SideData.CRSVacuumValue >= _crsVacuumHighLimit)
@@ -78,26 +78,16 @@ namespace CyberX8_RT.Devices.AXIS.CANOpen
                         NotifyError(Aitex.Core.RT.Log.eEvent.INFO_LOADER, $"vacuum value {_loaderSide.SideData.CRSVacuumValue} is over or equal {_crsVacuumHighLimit}", 0);
                         return false;
                     }
-                    //if (_loaderSide.SideData.CRSVacuumValue >= 0)
-                    //{
-                    //    NotifyError(Aitex.Core.RT.Log.eEvent.INFO_LOADER, $"vacuum value {_loaderSide.SideData.CRSVacuumValue} is over or equal 0", 0);
-                    //    return false;
-                    //}
                 }
             }
             else
             {
-                result= _loaderSide.SideData.CRSVacuumValue > _crsVacuumLowLimit && _loaderSide.SideData.CRSVacuumValue < 0;
+                result= _loaderSide.SideData.CRSVacuumValue > _crsVacuumLowLimit;
                 if (_loaderSide.SideData.CRSVacuumValue <= _crsVacuumLowLimit)
                 {
                     NotifyError(Aitex.Core.RT.Log.eEvent.INFO_LOADER, $"vacuum value {_loaderSide.SideData.CRSVacuumValue} is less or equal {_crsVacuumLowLimit}", 0);
                     return false;
                 }
-                //if (_loaderSide.SideData.CRSVacuumValue >= 0)
-                //{
-                //    NotifyError(Aitex.Core.RT.Log.eEvent.INFO_LOADER, $"vacuum value {_loaderSide.SideData.CRSVacuumValue} is over or equal 0", 0);
-                //    return false;
-                //}
             }
             
             return result;

+ 12 - 0
CyberX8_RT/Modules/Loader/LoaderLoadSideRoutine.cs

@@ -86,6 +86,10 @@ namespace CyberX8_RT.Modules.Loader
         /// 完成后运行
         /// </summary>
         private string _completeSide = "TRNPA";
+        /// <summary>
+        /// Wafer组
+        /// </summary>
+        private string _waferGroup = "";
         #endregion
 
         #region 属性
@@ -101,6 +105,10 @@ namespace CyberX8_RT.Modules.Loader
         /// LoadTimeList
         /// </summary>
         public List<DateTime> LoadTimeList { get { return _loadTimeList; } }
+        /// <summary>
+        /// Wafer组
+        /// </summary>
+        public string WaferGroup { get { return _waferGroup; } }
         #endregion
 
         /// <summary>
@@ -311,6 +319,10 @@ namespace CyberX8_RT.Modules.Loader
             {
                 _completeSide= objs[2].ToString();
             }
+            if (objs.Length > 3)
+            {
+                _waferGroup= objs[3].ToString();
+            }
             _waferSize = SC.GetValue<int>($"Loader1.{_side}WaferSize");
             InitializeParameters();
             _loaderCommon = DEVICE.GetDevice<LoaderCommonDevice>($"{Module}.Common");

+ 12 - 0
CyberX8_RT/Modules/Loader/LoaderUnloadSideRoutine.cs

@@ -59,6 +59,10 @@ namespace CyberX8_RT.Modules.Loader
         /// WaferSize
         /// </summary>
         private int _waferSize;
+        /// <summary>
+        /// Wafer组
+        /// </summary>
+        private string _waferGroup;
         #endregion
 
         #region 属性
@@ -66,6 +70,10 @@ namespace CyberX8_RT.Modules.Loader
         /// UnLoad LotTrackData
         /// </summary>
         public List<LoaderLotTrackData> UnloadLotTrackDatas { get { return _datas; } }
+        /// <summary>
+        /// Wafer组
+        /// </summary>
+        public string waferGroup { get { return _waferGroup; } }
         #endregion
         /// <summary>
         /// 构造函数
@@ -212,6 +220,10 @@ namespace CyberX8_RT.Modules.Loader
         public RState Start(params object[] objs)
         {
             _side = objs[0].ToString();
+            if (objs.Length > 1)
+            {
+                _waferGroup = objs[1].ToString();
+            }
             _waferSize = SC.GetValue<int>($"Loader1.{_side}WaferSize");
             InitializeParameters();
             _loaderCommon = DEVICE.GetDevice<LoaderCommonDevice>($"{Module}.Common");

+ 38 - 3
CyberX8_RT/Schedulers/Loader/SchedulerLoader.cs

@@ -38,6 +38,7 @@ namespace CyberX8_RT.Schedulers.Loader
         private PUFEntity _puf1Entity;
         private SchedulerStep _currentStep;
         private int _currentWaferIndex = 1;
+        private string _waferGroup = "";
         #endregion
 
         #region 属性
@@ -71,6 +72,7 @@ namespace CyberX8_RT.Schedulers.Loader
             _state = RState.Running;
             _currentStep = SchedulerStep.WaitUnload;
             _currentWaferIndex = 1;
+            _waferGroup = "";
             return true;
         }
         /// <summary>
@@ -90,8 +92,9 @@ namespace CyberX8_RT.Schedulers.Loader
                         //触发loaderEntity UnloadAll
                         if (preLoaderWaferInfo != null && !string.IsNullOrEmpty(preLoaderWaferInfo.LoaderSide))
                         {
+                            _waferGroup = AnalyseWaferGroup(preLoaderWaferInfo);
                             _loaderEntity.CheckToPostMessage<LOADERSTATE, LoaderMSG>(eEvent.WARN_LOADER, ModuleName.Loader1.ToString(),
-                                (int)LoaderMSG.UnloadSide, preLoaderWaferInfo.LoaderSide);
+                                (int)LoaderMSG.UnloadSide, preLoaderWaferInfo.LoaderSide,_waferGroup);
                         }
                     }
                 }
@@ -185,6 +188,38 @@ namespace CyberX8_RT.Schedulers.Loader
             return true;
         }
         /// <summary>
+        /// 分析得到Wafer组
+        /// </summary>
+        /// <param name="waferInfo"></param>
+        /// <returns></returns>
+        private string AnalyseWaferGroup(WaferInfo waferInfo)
+        {
+            string matchWaferId = WaferTaskManager.Instance.GetMatchWaferIdByWaferId(waferInfo.WaferID);
+            if (string.IsNullOrEmpty(matchWaferId))
+            {
+                return $"{waferInfo.OriginStation}_{waferInfo.OriginSlot}_0";
+            }
+            else
+            {
+                WaferInfo matchedWafer = WaferManager.Instance.GetWaferByWaferId(matchWaferId);
+                if (matchedWafer != null && !matchedWafer.IsEmpty)
+                {
+                    if (matchedWafer.WaferType == WaferType.Assit)
+                    {
+                        return $"LP{waferInfo.OriginStation}_{waferInfo.OriginSlot+1}_0";
+                    }
+                    else
+                    {
+                        return $"LP{waferInfo.OriginStation}_{waferInfo.OriginSlot+1}_LP{matchedWafer.OriginStation}_{matchedWafer.OriginSlot+1}";
+                    }
+                }
+                else
+                {
+                    return $"LP{waferInfo.SourceStation}_{waferInfo.OriginSlot+1}_0";
+                }
+            }
+        }
+        /// <summary>
         /// 执行Loader Load动作
         /// </summary>
         /// <param name="loadComplete"></param>
@@ -206,7 +241,7 @@ namespace CyberX8_RT.Schedulers.Loader
                     return false;
                 }
                 return _loaderEntity.CheckToPostMessage<LOADERSTATE, LoaderMSG>(eEvent.WARN_LOADER, Module.ToString(),
-                    (int)LoaderMSG.LoadSide, side, loadComplete,completeSide);
+                    (int)LoaderMSG.LoadSide, side, loadComplete,completeSide,_waferGroup);
             }
             return false;
         } 
@@ -239,7 +274,7 @@ namespace CyberX8_RT.Schedulers.Loader
                     if (preLoaderWaferInfo != null && !string.IsNullOrEmpty(preLoaderWaferInfo.LoaderSide))
                     {
                         bool result = _loaderEntity.CheckToPostMessage<LOADERSTATE, LoaderMSG>(eEvent.WARN_LOADER, ModuleName.Loader1.ToString(),
-                            (int)LoaderMSG.UnloadSide, preLoaderWaferInfo.LoaderSide);
+                            (int)LoaderMSG.UnloadSide, preLoaderWaferInfo.LoaderSide, _waferGroup);
                     }
                 }
             }