Sfoglia il codice sorgente

开发 AutoCycle 模块, 增加TMRobot module id.

sangwq 1 anno fa
parent
commit
8826cc0cd0

+ 9 - 0
Venus/Framework/Common/Device/ModuleName.cs

@@ -120,6 +120,10 @@ namespace MECF.Framework.Common.Equipment
         [EnumMember]
         TM,
 
+        // TM robot
+        [EnumMember]
+        TMRobot,
+
         //buffers
         [EnumMember]
         Buffer,
@@ -261,6 +265,11 @@ namespace MECF.Framework.Common.Equipment
             return unit == ModuleName.TM;
         }
 
+        public static bool IsTMRobot(ModuleName unit)
+        {
+            return unit == ModuleName.TMRobot;
+        }
+
         public static bool IsEFEMRobot(ModuleName unit)
         {
             return unit == ModuleName.EfemRobot;

+ 11 - 11
Venus/Venus_RT/Devices/TM/SIASUNRobot.cs

@@ -173,7 +173,7 @@ namespace Venus_RT.Devices
 
         private bool _SendCommand(string cmd)
         {
-            LOG.WriteSingeLine(eEvent.INFO_TM_ROBOT, ModuleName.TM, $"Send Command to SIASUN TM Robot: {cmd}");
+            LOG.WriteSingeLine(eEvent.INFO_TM_ROBOT, ModuleName.TMRobot, $"Send Command to SIASUN TM Robot: {cmd}");
             return _socket.Write(cmd);
         }
 
@@ -181,17 +181,17 @@ namespace Venus_RT.Devices
         {
             if(Status == RState.Init)
             {
-                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TM, "TM Robot is not homed, please home first.");
+                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, "TM Robot is not homed, please home first.");
                 return false;
             }
             else if(Status == RState.Running)
             {
-                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TM, "TM Robot is busy, please wait a minute");
+                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, "TM Robot is busy, please wait a minute");
                 return false;
             }
             else if(Status == RState.Failed || Status == RState.Timeout)
             {
-                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TM, "TM Robot has a error, please check and fix the hardware issue and home it");
+                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, "TM Robot has a error, please check and fix the hardware issue and home it");
                 return false;
             }
 
@@ -211,7 +211,7 @@ namespace Venus_RT.Devices
                 return;
             }
 
-            LOG.WriteSingeLine(eEvent.INFO_TM_ROBOT, ModuleName.TM, $"Receive message from SIASUN TM Robot: {RevMsg}, while {_currentOP}");
+            LOG.WriteSingeLine(eEvent.INFO_TM_ROBOT, ModuleName.TMRobot, $"Receive message from SIASUN TM Robot: {RevMsg}, while {_currentOP}");
 
             switch (_currentOP)
             {
@@ -233,7 +233,7 @@ namespace Venus_RT.Devices
                             ReportWrongMsg(RevMsg);
 
                         if (_currentOP != OPStep.PickExtend && _currentOP != OPStep.PlaceExtent)
-                            SetRobotMovingInfo(RobotAction.None, Hand.Both, ModuleName.TM);
+                            SetRobotMovingInfo(RobotAction.None, Hand.Both, ModuleName.TMRobot);
                     }
                     break;
                 case OPStep.Home:
@@ -284,19 +284,19 @@ namespace Venus_RT.Devices
             string WaferStatus = result.Groups[2].Value;
             if(WaferStatus == "ON")
             {
-                WaferManager.Instance.CreateWafer(ModuleName.TM, Arm == "A" ? 0 : 1, Aitex.Core.Common.WaferStatus.Unknown);
+                WaferManager.Instance.CreateWafer(ModuleName.TMRobot, Arm == "A" ? 0 : 1, Aitex.Core.Common.WaferStatus.Unknown);
             }
         }
 
         private void OnErrorHappen(ErrorEventArgs args)
         {
             Singleton<RouteManager>.Instance.TM.PostMsg(TMEntity.MSG.Error);
-            LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TM, $"SIASUN TM Robot Error: {args.Reason} while {_currentOP}");
+            LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, $"SIASUN TM Robot Error: {args.Reason} while {_currentOP}");
         }
 
         private void ReportWrongMsg(string revMsg)
         {
-            LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TM, $"Receive wrong message:{revMsg} while {_currentOP}");
+            LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, $"Receive wrong message:{revMsg} while {_currentOP}");
         }
 
         private void ErrorMessageHandler(string errCode)
@@ -588,11 +588,11 @@ namespace Venus_RT.Devices
 
                 }
 
-                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TM, ErrorInfo);
+                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, ErrorInfo);
             }
             else
             {
-                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TM, $"Try Parse the receive error code faild:{errCode}");
+                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, $"Try Parse the receive error code faild:{errCode}");
             }
         }
 

+ 181 - 4
Venus/Venus_RT/Modules/AutoCycle.cs

@@ -1,12 +1,189 @@
-using System;
+using Aitex.Core.RT.Routine;
+using Aitex.Core.RT.SCCore;
+using Aitex.Sorter.Common;
+using Venus_RT.Devices;
+using MECF.Framework.Common.Routine;
+using MECF.Framework.Common.Equipment;
+using MECF.Framework.Common.SubstrateTrackings;
+using Venus_Core;
+using Aitex.Core.RT.Log;
+using Aitex.Core.Util;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using Venus_RT.Modules.Schedulers;
+using Venus_RT.Scheduler;
+using System;
+using MECF.Framework.Common.Schedulers;
+using Aitex.Core.RT.Fsm;
 
 namespace Venus_RT.Modules
 {
-    class AutoCycle
+    enum ModulePriority
     {
+        High,
+        Middle,
+        Low,
+        Stop,
+    }
+    class ModuleFlag
+    {
+        public ModulePriority priority;
+
+        public ModuleFlag(ModulePriority _priority)
+        {
+            priority = _priority;
+        }
+    }
+
+    class AutoCycle : IRoutine
+    {
+        private RState _cycleState = RState.Init;
+
+        Dictionary<ModuleName, SchedulerModule> _atmSchedulers  = new Dictionary<ModuleName, SchedulerModule>();
+        Dictionary<ModuleName, ModuleFlag> _atmModules          = new Dictionary<ModuleName, ModuleFlag>();
+
+        Dictionary<ModuleName, SchedulerModule> _vacSchedulers  = new Dictionary<ModuleName, SchedulerModule>();
+        Dictionary<ModuleName, ModuleFlag> _vacModules          = new Dictionary<ModuleName, ModuleFlag>();
+
+        public AutoCycle() 
+        {
+            InitModules();
+        }
+
+        public RState Start(params object[] objs)
+        {
+            return RState.Running;
+        }
+
+        public RState Monitor()
+        {
+            prelude();
+            driveAtmSystem();
+            driveVacSystem();
+            epilogue();
+            return _cycleState;
+        }
+
+        public void Abort()
+        {
+        }
+
+        private void InitModules()
+        {
+            foreach(var module in new ModuleName[]{ ModuleName.LP1, ModuleName.LP2, ModuleName.LP3, 
+                ModuleName.Aligner1, ModuleName.Aligner2, ModuleName.Cooling1, ModuleName.Cooling2})
+            {
+                if(ModuleHelper.IsInstalled(module))
+                {
+                    if(ModuleHelper.IsLoadPort(module))
+                    {
+                        _atmSchedulers[module] = new SchedulerLoadPort(module);
+                        _atmModules[module] = new ModuleFlag(ModulePriority.Middle);
+                    }
+                    else if(ModuleHelper.IsAligner(module) || ModuleHelper.IsCooling(module))
+                    {
+                        _atmSchedulers[module] = new SchedulerAligner(module);
+                        _atmModules[module] = new ModuleFlag(ModulePriority.Middle);
+                    }
+                }
+            }
+
+            foreach (var module in new ModuleName[] { ModuleName.PMA, ModuleName.PMB, ModuleName.PMC, 
+                ModuleName.PMD, ModuleName.PME, ModuleName.PMF})
+            {
+                if (ModuleHelper.IsInstalled(module))
+                {
+                    _vacSchedulers[module] = new SchedulerPM(module);
+                    _vacModules[module] = new ModuleFlag(ModulePriority.Middle);
+                }
+            }
+
+            foreach (var module in new ModuleName[] { ModuleName.LLA, ModuleName.LLB })
+            {
+                if (ModuleHelper.IsInstalled(module))
+                {
+                    var llScheduler = new SchedulerLoadLock(module);
+                    _vacSchedulers[module] = llScheduler;
+                    _vacModules[module] = new ModuleFlag(ModulePriority.Middle);
+
+                    _atmSchedulers[module] = llScheduler;
+                    _atmModules[module] = new ModuleFlag(ModulePriority.Middle);
+                }
+            }
+        }
+
+        private void prelude()
+        {
+        }
+
+        private void epilogue()
+        {
+        }
+
+        private void driveVacSystem()
+        {
+            PumpingTMRobotTask();
+            ProcessTMRobotTask();
+        }
+
+        #region Vacuum System
+        private void PumpingTMRobotTask()
+        {
+            
+        }
+
+        private void ProcessTMRobotTask()
+        {
+
+        }
+
+        private Hand GetTMRobotFreeHand()
+        {
+            var blade1HasWafer = WaferManager.Instance.CheckHasWafer(ModuleName.TMRobot, 0);
+            var blade2HasWafer = WaferManager.Instance.CheckHasWafer(ModuleName.TMRobot, 1);
+            if (blade1HasWafer && blade2HasWafer)
+                return Hand.None;
+            else if (!blade1HasWafer && !blade2HasWafer)
+                return Hand.Both;
+            else if (blade1HasWafer)
+                return Hand.Blade2;
+            else
+                return Hand.Blade1;
+        }
+
+        #endregion Vacuum System
+
+        #region Atm System
+        private void driveAtmSystem()
+        {
+            PumpingEFEMRobotTask();
+            ProcessEFEMRobotTask();
+        }
+
+        private void PumpingEFEMRobotTask()
+        {
+
+        }
+
+        private void ProcessEFEMRobotTask()
+        {
+
+        }
+
+        private Hand GetEFEMRobotFreeHand()
+        {
+            var blade1HasWafer = WaferManager.Instance.CheckHasWafer(ModuleName.EfemRobot, 0);
+            var blade2HasWafer = WaferManager.Instance.CheckHasWafer(ModuleName.EfemRobot, 1);
+            if (blade1HasWafer && blade2HasWafer)
+                return Hand.None;
+            else if (!blade1HasWafer && !blade2HasWafer)
+                return Hand.Both;
+            else if (blade1HasWafer)
+                return Hand.Blade2;
+            else
+                return Hand.Blade1;
+        }
+
+        #endregion Atm System
     }
 }

+ 3 - 3
Venus/Venus_RT/Modules/EFEM/EfemEntity.cs

@@ -23,9 +23,9 @@ namespace Venus_RT.Modules
 {
     class EfemEntity : Entity, IEntity, IModuleEntity
     {
-        private int _bigWafer = 0;
-        private int _midWafer = 0;
-        private int _smallWafer = 0;
+        //private int _bigWafer = 0;
+        //private int _midWafer = 0;
+        //private int _smallWafer = 0;
 
         public enum STATE
         {

+ 11 - 11
Venus/Venus_RT/Modules/Schedulers/SchedulerTMRobot.cs

@@ -98,7 +98,7 @@ namespace Venus_RT.Modules.Schedulers
 
                 for (int i = 0; i < swapIndex; i++)
                 {
-                    if(!ModuleHelper.IsTM(swapItems[i].SourceModule))
+                    if(!ModuleHelper.IsTMRobot(swapItems[i].SourceModule))
                     {
                         SchedulerItem item = new SchedulerItem();
                         item.MoveType = ModuleHelper.IsLoadLock(swapItems[i].SourceModule) ? TMEntity.MSG.Pick : TMEntity.MSG.PMPick;
@@ -119,19 +119,19 @@ namespace Venus_RT.Modules.Schedulers
 
                 for (int j = swapIndex; j < swapItems.Length; j++)
                 {
-                    if (!ModuleHelper.IsTM(swapItems[j].DestinationModule))
+                    if (!ModuleHelper.IsTMRobot(swapItems[j].DestinationModule))
                     {
                         SchedulerItem item = new SchedulerItem();
                         item.MoveType = ModuleHelper.IsLoadLock(swapItems[j].DestinationModule) ?  TMEntity.MSG.Place : TMEntity.MSG.PMPlace;
                         item.target = swapItems[j].DestinationModule;
                         item.moveList = new Queue<MoveItem>();
-                        item.moveList.Enqueue(new MoveItem(ModuleName.TM, j - swapIndex, swapItems[j].DestinationModule, swapItems[j].DestinationSlot, (Hand)(j - swapIndex)));
+                        item.moveList.Enqueue(new MoveItem(ModuleName.TMRobot, j - swapIndex, swapItems[j].DestinationModule, swapItems[j].DestinationSlot, (Hand)(j - swapIndex)));
                         _schedulerList.Enqueue(item);
                     }
                 }
             }
 
-            if(WaferManager.Instance.CheckNoWafer(ModuleName.TM, 0) && WaferManager.Instance.CheckNoWafer(ModuleName.TM, 1))
+            if(WaferManager.Instance.CheckNoWafer(ModuleName.TMRobot, 0) && WaferManager.Instance.CheckNoWafer(ModuleName.TMRobot, 1))
             {
                 if (items.Length == 4)
                 {
@@ -189,23 +189,23 @@ namespace Venus_RT.Modules.Schedulers
             {
                 foreach(var moveItem in items)
                 {
-                    if(!ModuleHelper.IsTM(moveItem.SourceModule))
+                    if(!ModuleHelper.IsTMRobot(moveItem.SourceModule))
                     {
                         SchedulerItem item = new SchedulerItem();
                         item.MoveType = ModuleHelper.IsLoadLock(moveItem.SourceModule) ?  TMEntity.MSG.Pick : TMEntity.MSG.PMPick;
                         item.target = moveItem.SourceModule;
                         item.moveList = new Queue<MoveItem>();
-                        item.moveList.Enqueue(new MoveItem(moveItem.SourceModule, moveItem.SourceSlot, ModuleName.TM, (int)freeHand, freeHand));
+                        item.moveList.Enqueue(new MoveItem(moveItem.SourceModule, moveItem.SourceSlot, ModuleName.TMRobot, (int)freeHand, freeHand));
                         _schedulerList.Enqueue(item);
                     }
 
-                    if (!ModuleHelper.IsTM(moveItem.DestinationModule))
+                    if (!ModuleHelper.IsTMRobot(moveItem.DestinationModule))
                     {
                         SchedulerItem item = new SchedulerItem();
                         item.MoveType = ModuleHelper.IsLoadLock(moveItem.DestinationModule) ? TMEntity.MSG.Place : TMEntity.MSG.PMPlace;
                         item.target = moveItem.DestinationModule;
                         item.moveList = new Queue<MoveItem>();
-                        item.moveList.Enqueue(new MoveItem(ModuleName.TM, (int)freeHand, moveItem.DestinationModule, moveItem.DestinationSlot,  freeHand));
+                        item.moveList.Enqueue(new MoveItem(ModuleName.TMRobot, (int)freeHand, moveItem.DestinationModule, moveItem.DestinationSlot,  freeHand));
                         _schedulerList.Enqueue(item);
                     }
                 }
@@ -216,10 +216,10 @@ namespace Venus_RT.Modules.Schedulers
 
         Hand SelectFreeHand()
         {
-            if (WaferManager.Instance.CheckNoWafer(ModuleName.TM, 0))
+            if (WaferManager.Instance.CheckNoWafer(ModuleName.TMRobot, 0))
                 return Hand.Blade1;
 
-            if (WaferManager.Instance.CheckNoWafer(ModuleName.TM, 1))
+            if (WaferManager.Instance.CheckNoWafer(ModuleName.TMRobot, 1))
                 return Hand.Blade2;
 
             return Hand.None;
@@ -237,7 +237,7 @@ namespace Venus_RT.Modules.Schedulers
                 foreach(var item in _currentScheduler.moveList)
                 {
                     moveItems.Enqueue(item);
-                    LOG.Write(eEvent.INFO_TM, ModuleName.TM, $"TM Moving Items: {item.SourceModule} Slot {item.SourceSlot + 1} => {item.DestinationModule} Slot {item.DestinationSlot + 1}");
+                    LOG.Write(eEvent.INFO_TM, ModuleName.TMRobot, $"TM Moving Items: {item.SourceModule} Slot {item.SourceSlot + 1} => {item.DestinationModule} Slot {item.DestinationSlot + 1}");
                 }
 
                 if(_entity.CheckToPostMessage((int)_currentScheduler.MoveType, moveItems))

+ 3 - 3
Venus/Venus_RT/Modules/TM/MFPMExtendRoutine.cs

@@ -29,7 +29,7 @@ namespace Venus_RT.Modules.TM
         int _targetSlot;
         Hand _hand;
 
-        public MFPMExtendRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
+        public MFPMExtendRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TMRobot)
         {
             _JetTM = tm;
             _robot = robot;
@@ -63,7 +63,7 @@ namespace Venus_RT.Modules.TM
                 return RState.Failed;
             }
 
-            if (WaferManager.Instance.CheckHasWafer(ModuleName.TM, (int)_hand))
+            if (WaferManager.Instance.CheckHasWafer(ModuleName.TMRobot, (int)_hand))
             {
                 LOG.Write(eEvent.ERR_TM, Module, $"Cannot pick as TM Robot Arm: {_hand} already has a wafer");
                 return RState.Failed;
@@ -71,7 +71,7 @@ namespace Venus_RT.Modules.TM
 
             if (WaferManager.Instance.CheckHasWafer(_targetModule, _targetSlot))
             {
-                if(WaferManager.Instance.CheckHasWafer(ModuleName.TM, (int)_hand))
+                if(WaferManager.Instance.CheckHasWafer(ModuleName.TMRobot, (int)_hand))
                 {
                     LOG.Write(eEvent.ERR_TM, Module, $"Both {_targetModule} and robot arm {_hand} have wafers");
                     return RState.Failed;

+ 4 - 4
Venus/Venus_RT/Modules/TM/MFPMPickRoutine.cs

@@ -37,7 +37,7 @@ namespace Venus_RT.Modules.TM
         private int _targetSlot;
         private Hand _hand;
 
-        public MFPMPickRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
+        public MFPMPickRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TMRobot)
         {
             _JetTM = tm;
             _robot = robot;
@@ -66,7 +66,7 @@ namespace Venus_RT.Modules.TM
                 return RState.Failed;
             }
 
-            if (WaferManager.Instance.CheckHasWafer(ModuleName.TM, (int)_hand))
+            if (WaferManager.Instance.CheckHasWafer(ModuleName.TMRobot, (int)_hand))
             {
                 LOG.Write(eEvent.ERR_TM, Module, $"Cannot pick as TM Robot Arm: {_hand} already has a wafer");
                 return RState.Failed;
@@ -79,7 +79,7 @@ namespace Venus_RT.Modules.TM
             }
 
             var wafer = WaferManager.Instance.GetWafer(_targetModule, _targetSlot);
-            LOG.Write(eEvent.INFO_TM_ROBOT, ModuleName.TM, $"{wafer.WaferOrigin} will be move from {_targetModule} {_targetSlot + 1} to TM Robot {_hand}");
+            LOG.Write(eEvent.INFO_TM_ROBOT, ModuleName.TMRobot, $"{wafer.WaferOrigin} will be move from {_targetModule} {_targetSlot + 1} to TM Robot {_hand}");
 
             Reset();
             _pickingTimeout = SC.GetValue<int>($"{Module}.PickTimeout") * 1000;
@@ -129,7 +129,7 @@ namespace Venus_RT.Modules.TM
             }
             else if (_robot.Status == RState.End)
             {
-                WaferManager.Instance.WaferMoved(_targetModule, _targetSlot, ModuleName.TM, (int)_hand);
+                WaferManager.Instance.WaferMoved(_targetModule, _targetSlot, ModuleName.TMRobot, (int)_hand);
                 return true;
             }
             else

+ 5 - 5
Venus/Venus_RT/Modules/TM/MFPMPlaceRoutine.cs

@@ -37,7 +37,7 @@ namespace Venus_RT.Modules.TM
         private int _targetSlot;
         private Hand _hand;
 
-        public MFPMPlaceRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
+        public MFPMPlaceRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TMRobot)
         {
             _JetTM = tm;
             _robot = robot;
@@ -66,7 +66,7 @@ namespace Venus_RT.Modules.TM
                 return RState.Failed;
             }
 
-            if (WaferManager.Instance.CheckNoWafer(ModuleName.TM, (int)_hand))
+            if (WaferManager.Instance.CheckNoWafer(ModuleName.TMRobot, (int)_hand))
             {
                 LOG.Write(eEvent.ERR_TM, Module, $"Cannot Place as TM Robot Arm: {_hand} has no wafer");
                 return RState.Failed;
@@ -78,8 +78,8 @@ namespace Venus_RT.Modules.TM
                 return RState.Failed;
             }
 
-            var wafer = WaferManager.Instance.GetWafer(ModuleName.TM, (int)_hand);
-            LOG.Write(eEvent.INFO_TM_ROBOT, ModuleName.TM, $"{wafer.WaferOrigin} will be move from TM Robot {_hand}  to {_targetModule} {_targetSlot + 1}");
+            var wafer = WaferManager.Instance.GetWafer(ModuleName.TMRobot, (int)_hand);
+            LOG.Write(eEvent.INFO_TM_ROBOT, ModuleName.TMRobot, $"{wafer.WaferOrigin} will be move from TM Robot {_hand}  to {_targetModule} {_targetSlot + 1}");
 
             Reset();
             _placingTimeout = SC.GetValue<int>($"{Module}.PlaceTimeout") * 1000;
@@ -128,7 +128,7 @@ namespace Venus_RT.Modules.TM
             }
             else if (_robot.Status == RState.End)
             {
-                WaferManager.Instance.WaferMoved(ModuleName.TM, (int)_hand, _targetModule, _targetSlot);
+                WaferManager.Instance.WaferMoved(ModuleName.TMRobot, (int)_hand, _targetModule, _targetSlot);
                 return true;
             }
             else

+ 1 - 1
Venus/Venus_RT/Modules/TM/MFPMRetractRoutine.cs

@@ -29,7 +29,7 @@ namespace Venus_RT.Modules.TM
         int _targetSlot;
         Hand _hand;
 
-        public MFPMRetractRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
+        public MFPMRetractRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TMRobot)
         {
             _JetTM = tm;
             _robot = robot;

+ 5 - 5
Venus/Venus_RT/Modules/TM/MFPMSwapRoutine.cs

@@ -44,7 +44,7 @@ namespace Venus_RT.Modules.TM
         private Hand _pickHand;
         private Hand _placeHand;
 
-        public MFPMSwapRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
+        public MFPMSwapRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TMRobot)
         {
             _JetTM = tm;
             _robot = robot;
@@ -74,13 +74,13 @@ namespace Venus_RT.Modules.TM
                 return RState.Failed;
             }
 
-            if (WaferManager.Instance.CheckNoWafer(ModuleName.TM, (int)_placeHand))
+            if (WaferManager.Instance.CheckNoWafer(ModuleName.TMRobot, (int)_placeHand))
             {
                 LOG.Write(eEvent.ERR_TM, Module, $"Cannot Swap Wafer as TM Robot Arm: {_placeHand} has no wafer");
                 return RState.Failed;
             }
 
-            if (WaferManager.Instance.CheckHasWafer(ModuleName.TM, (int)_pickHand))
+            if (WaferManager.Instance.CheckHasWafer(ModuleName.TMRobot, (int)_pickHand))
             {
                 LOG.Write(eEvent.ERR_TM, Module, $"Cannot Swap Wafer as TM Robot Arm: {_pickHand} has a wafer");
                 return RState.Failed;
@@ -185,7 +185,7 @@ namespace Venus_RT.Modules.TM
         {
             if (_pmModule.Status == PMEntity.PMStatus.Exchange_Ready)
             {
-                WaferManager.Instance.WaferMoved(_targetModule, _targetSlot, ModuleName.TM, (int)_pickHand);
+                WaferManager.Instance.WaferMoved(_targetModule, _targetSlot, ModuleName.TMRobot, (int)_pickHand);
                 return true;
             }
 
@@ -218,7 +218,7 @@ namespace Venus_RT.Modules.TM
         {
             if(_pmModule.Status == PMEntity.PMStatus.Exchange_Ready)
             {
-                WaferManager.Instance.WaferMoved(ModuleName.TM, (int)_placeHand, _targetModule, _targetSlot);
+                WaferManager.Instance.WaferMoved(ModuleName.TMRobot, (int)_placeHand, _targetModule, _targetSlot);
                 return true;
             }
 

+ 3 - 3
Venus/Venus_RT/Modules/TM/MFPickRoutine.cs

@@ -34,7 +34,7 @@ namespace Venus_RT.Modules.TM
         int _targetSlot;
         Hand _hand;
         
-        public MFPickRoutine(JetTM tm, ITransferRobot robot) :base(ModuleName.TM)
+        public MFPickRoutine(JetTM tm, ITransferRobot robot) :base(ModuleName.TMRobot)
         {
             _JetTM = tm;
             _robot = robot;
@@ -64,7 +64,7 @@ namespace Venus_RT.Modules.TM
                 return RState.Failed;
             }
 
-            if (WaferManager.Instance.CheckHasWafer(ModuleName.TM, (int)_hand))
+            if (WaferManager.Instance.CheckHasWafer(ModuleName.TMRobot, (int)_hand))
             {
                 LOG.Write(eEvent.ERR_TM, Module, $"Cannot pick as TM Robot Arm: {_hand} already has a wafer");
                 return RState.Failed;
@@ -145,7 +145,7 @@ namespace Venus_RT.Modules.TM
             else if (_robot.Status == RState.End)
             {
                 //WaferManager.Instance.WaferMoved(ModuleName.TM, (int)_hand, _targetModule, _targetSlot);
-                WaferManager.Instance.WaferMoved(_targetModule, _targetSlot, ModuleName.TM, (int)_hand);
+                WaferManager.Instance.WaferMoved(_targetModule, _targetSlot, ModuleName.TMRobot, (int)_hand);
 
                 return true;
             }

+ 3 - 3
Venus/Venus_RT/Modules/TM/MFPlaceRoutine.cs

@@ -34,7 +34,7 @@ namespace Venus_RT.Modules.TM
         int _targetSlot;
         Hand _hand;
 
-        public MFPlaceRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
+        public MFPlaceRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TMRobot)
         {
             _JetTM = tm;
             _robot = robot;
@@ -64,7 +64,7 @@ namespace Venus_RT.Modules.TM
                 return RState.Failed;
             }
 
-            if (WaferManager.Instance.CheckNoWafer(ModuleName.TM, (int)_hand))
+            if (WaferManager.Instance.CheckNoWafer(ModuleName.TMRobot, (int)_hand))
             {
                 LOG.Write(eEvent.ERR_TM, Module, $"Cannot place as TM Robot Arm: {_hand} has no wafer");
                 return RState.Failed;
@@ -144,7 +144,7 @@ namespace Venus_RT.Modules.TM
             }
             else if (_robot.Status == RState.End)
             {
-                WaferManager.Instance.WaferMoved(ModuleName.TM, (int)_hand, _targetModule, _targetSlot);
+                WaferManager.Instance.WaferMoved(ModuleName.TMRobot, (int)_hand, _targetModule, _targetSlot);
                 return true;
             }
             else

+ 5 - 5
Venus/Venus_RT/Modules/TM/MFSwapRoutine.cs

@@ -39,7 +39,7 @@ namespace Venus_RT.Modules.TM
         Queue<MoveItem> _actionList = new Queue<MoveItem>();
         MoveItem _currentAction;
 
-        public MFSwapRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
+        public MFSwapRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TMRobot)
         {
             _JetTM = tm;
             _robot = robot;
@@ -159,19 +159,19 @@ namespace Venus_RT.Modules.TM
                 return false;
 
             var wafer = WaferManager.Instance.GetWafer(_currentAction.SourceModule, _currentAction.SourceSlot);
-            LOG.Write(eEvent.INFO_TM_ROBOT, ModuleName.TM, $"{wafer.WaferOrigin} will be move from {_currentAction.SourceModule} {_currentAction.SourceSlot + 1}  to {_currentAction.DestinationModule} {_currentAction.DestinationSlot + 1}");
+            LOG.Write(eEvent.INFO_TM_ROBOT, ModuleName.TMRobot, $"{wafer.WaferOrigin} will be move from {_currentAction.SourceModule} {_currentAction.SourceSlot + 1}  to {_currentAction.DestinationModule} {_currentAction.DestinationSlot + 1}");
 
-            if (ModuleHelper.IsLoadLock(_currentAction.SourceModule) && ModuleHelper.IsTM(_currentAction.DestinationModule))
+            if (ModuleHelper.IsLoadLock(_currentAction.SourceModule) && ModuleHelper.IsTMRobot(_currentAction.DestinationModule))
             {
                 return _robot.Pick(_currentAction.SourceModule, _currentAction.SourceSlot, (Hand)_currentAction.DestinationSlot);
             }
-            else if(ModuleHelper.IsTM(_currentAction.SourceModule) && ModuleHelper.IsLoadLock(_currentAction.DestinationModule))
+            else if(ModuleHelper.IsTMRobot(_currentAction.SourceModule) && ModuleHelper.IsLoadLock(_currentAction.DestinationModule))
             {
                 return _robot.Place(_currentAction.DestinationModule, _currentAction.DestinationSlot, (Hand)_currentAction.SourceSlot);
             }
             else
             {
-                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TM, $"Invalid move parameter, source:{_currentAction.SourceModule},{_currentAction.SourceSlot}, destination: {_currentAction.DestinationModule}, {_currentAction.DestinationSlot}");
+                LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, $"Invalid move parameter, source:{_currentAction.SourceModule},{_currentAction.SourceSlot}, destination: {_currentAction.DestinationModule}, {_currentAction.DestinationSlot}");
                 return false;
             }
         }

+ 5 - 9
Venus/Venus_RT/Modules/TM/TMEntity.cs

@@ -133,14 +133,10 @@ namespace Venus_RT.Modules
             _leakCheckRoutine   = new MFLeakCheckRoutine(_tm, ModuleName.TM);
             _purgeRoutine       = new MFPurgeRoutine(_tm, ModuleName.TM);
 
-
-
             _pmRetractRoutine = new MFPMRetractRoutine(_tm, _robot);
             _pmExtendRoutine  = new MFPMExtendRoutine(_tm, _robot);
 
-
-
-            WaferManager.Instance.SubscribeLocation(ModuleName.TM, 2);
+            WaferManager.Instance.SubscribeLocation(ModuleName.TMRobot, 2);
 
             InitFsmMap();
         }
@@ -670,10 +666,10 @@ namespace Venus_RT.Modules
             else if(flag == 6)
             {
                 Queue<MoveItem> items = new Queue<MoveItem>();
-                items.Enqueue(new MoveItem(ModuleName.TM, 0, ModuleName.LLA, 0, Hand.Blade1));
-                items.Enqueue(new MoveItem(ModuleName.TM, 1, ModuleName.LLA, 1, Hand.Blade2));
-                items.Enqueue(new MoveItem(ModuleName.LLA, 0, ModuleName.TM, 0, Hand.Blade1));
-                items.Enqueue(new MoveItem(ModuleName.LLA, 1, ModuleName.TM, 1, Hand.Blade2));
+                items.Enqueue(new MoveItem(ModuleName.TMRobot, 0, ModuleName.LLA, 0, Hand.Blade1));
+                items.Enqueue(new MoveItem(ModuleName.TMRobot, 1, ModuleName.LLA, 1, Hand.Blade2));
+                items.Enqueue(new MoveItem(ModuleName.LLA, 0, ModuleName.TMRobot, 0, Hand.Blade1));
+                items.Enqueue(new MoveItem(ModuleName.LLA, 1, ModuleName.TMRobot, 1, Hand.Blade2));
                 PostMsg(MSG.Swap,items);
             }
             else if(flag == 7)

+ 0 - 15
Venus/Venus_RT/Modules/TMCycle.cs

@@ -91,21 +91,6 @@ namespace Venus_RT.Modules
                 cycleCount = (int)objs[1];
             }
 
-            // temp debug
-            {
-                //for(int i = 0; i < _sourceSlotNumber; i ++)
-                //{
-                //    WaferManager.Instance.CreateWafer(_sourceModule, i, Aitex.Core.Common.WaferStatus.Normal);
-                //    WaferManager.Instance.DeleteWafer(_destinationModule, i);
-                //}
-
-                //WaferManager.Instance.DeleteWafer(ModuleName.TM, 0);
-                //WaferManager.Instance.DeleteWafer(ModuleName.TM, 1);
-                //WaferManager.Instance.DeleteWafer(ModuleName.PMA, 0);
-                //WaferManager.Instance.DeleteWafer(ModuleName.PMB, 0);
-            }
-            // temp debug
-
             return Runner.Start(Module, Name);
         }