Browse Source

update SchedulerLoader

chenkui 1 day ago
parent
commit
898fe7af38

+ 3 - 0
CyberX8_RT/Modules/RouteManager.cs

@@ -39,6 +39,7 @@ using CyberX8_RT.Devices.SRD;
 using MECF.Framework.Common.Alarm;
 using System.Diagnostics;
 using MECF.Framework.Common.WaferHolder;
+using CyberX8_RT.Schedulers;
 
 namespace CyberX8_RT.Modules
 {
@@ -210,6 +211,8 @@ namespace CyberX8_RT.Modules
 
             SubscribeOperation();
             SubscribeDataVariable();
+
+            SchedulerSequenceManager.Instance.Initialize();
         }
         /// <summary>
         /// 初始化模块集合

+ 1 - 1
CyberX8_RT/Schedulers/Loader/SchedulerLoader.cs

@@ -164,7 +164,7 @@ namespace CyberX8_RT.Schedulers.Loader
             {
                 if (_loaderEntity.State == (int)LOADERSTATE.WaitForLoad)
                 {
-                    if (_puf1Entity.State == (int)PUFSTATE.AferSwapParkStation || _puf1Entity.IsIdle && _puf1Entity.IsBackToParkStation)
+                    if (_puf1Entity.State == (int)PUFSTATE.AferSwapParkStation)
                     {
                         bool result = ExecuteLoadSide(true, loaderParameter.LoadCompleteToTransporterSide);
                         if (result)

+ 17 - 8
CyberX8_RT/Schedulers/SchedulerSequenceManager.cs

@@ -48,6 +48,19 @@ namespace CyberX8_RT.Schedulers
         private const string TRNPA = "TRNPA";
         private const string TRNPB = "TRNPB";
         #endregion
+
+        #region 内部变量
+        private int _sideAWaferSize = 0;
+        private int _sideBWaferSize = 0;
+        #endregion
+        /// <summary>
+        /// 初始化
+        /// </summary>
+        public void Initialize()
+        {
+            _sideAWaferSize = SC.GetValue<int>($"Loader1.SideAWaferSize");
+            _sideBWaferSize = SC.GetValue<int>($"Loader1.SideBWaferSize");
+        }
         /// <summary>
         /// 解析Wafer所有调度工序
         /// </summary>
@@ -187,18 +200,16 @@ namespace CyberX8_RT.Schedulers
         /// <returns></returns>
         private string AnalyseLoadTransporterSide(SequenceRecipe sequenceRecipe,int productWaferCount,int dummyWaferCount)
         {
-            int sideAWaferSize = SC.GetValue<int>($"Loader1.SideAWaferSize");
-            int sideBWaferSize = SC.GetValue<int>($"Loader1.SideBWaferSize");
             //单片,同时loader两边尺寸不一致
-            if ((productWaferCount == 1||dummyWaferCount==1) && sideAWaferSize != sideBWaferSize)
+            if ((productWaferCount == 1||dummyWaferCount==1) && _sideAWaferSize != _sideBWaferSize)
             {
                 //recipe使用B面工艺,但loader A面与recipe尺寸一致
-                if (sequenceRecipe.LastSingleWaferToSideB && sequenceRecipe.SubstrateSize == sideAWaferSize)
+                if (sequenceRecipe.LastSingleWaferToSideB && sequenceRecipe.SubstrateSize == _sideAWaferSize)
                 {
                     return "TRNPB";
                 }
                 //recipe使用A面工艺,但loader B面与recipe尺寸一致
-                else if (!sequenceRecipe.LastSingleWaferToSideB && sequenceRecipe.SubstrateSize == sideBWaferSize)
+                else if (!sequenceRecipe.LastSingleWaferToSideB && sequenceRecipe.SubstrateSize == _sideBWaferSize)
                 {
                     return "TRNPB";
                 }
@@ -247,9 +258,7 @@ namespace CyberX8_RT.Schedulers
         /// <returns></returns>
         private bool CheckLoaderWaferSizeNotEqual()
         {
-            int sideAWaferSize = SC.GetValue<int>($"Loader1.SideAWaferSize");
-            int sideBWaferSize = SC.GetValue<int>($"Loader1.SideBWaferSize");
-            return sideAWaferSize != sideBWaferSize;
+            return _sideAWaferSize != _sideBWaferSize;
         }
         /// <summary>
         /// 创建LoaderTrasporter同步模块消息