Quellcode durchsuchen

Add place/pick delay.

sangwq vor 2 Jahren
Ursprung
Commit
2663cfc1d9

+ 4 - 4
Venus/Venus_RT/Config/System.sccfg

@@ -210,8 +210,8 @@
 		<config default="25" name="GasTemperature" nameView="Gas Temperature" max="1000" min="-1000" paramter="" tag="" unit="℃" visible="false" type="Double" />
 		<config default="9" name="TargetPressureInMFCVerification" nameView="MFC verification中的目标压力" max="100" min="0" paramter="" tag="" unit="Torr" visible="false" type="Double" />
 		<config default="180" name="GasFlowTimeInMFCVerification" nameView="MFC verification中的目标时间" max="1000" min="0" paramter="" tag="" unit="second" visible="false" type="Double" />
-		<config default="0" name="PinDownDelayTimePick" nameView="Pick Delay Time before pin down" description="" max="120" min="0" paramter="" tag="" unit="s" type="Integer" />
-		<config default="0" name="PinDownDelayTimePlace" nameView="Place Delay Time before pin down" description="" max="120" min="0" paramter="" tag="" unit="s" type="Integer" />
+		<config default="0" name="PickDelayTime" nameView="Pick Delay Time before retract robot arm(ms)" description="" max="10000" min="0" paramter="" tag="" unit="ms" type="Integer" />
+		<config default="0" name="PlaceDelayTime" nameView="Place Delay Time before retract robot arm(ms)" description="" max="10000" min="0" paramter="" tag="" unit="ms" type="Integer" />
 		<config default="Strip" name="ChamberLabel"  nameView="Chamber Label" description="Chamber名称" max="" min="" paramter="" tag=""  unit="" type="String" />
 		<config default="30" name="MaxDeviationInMFCVerification" nameView="MFC verification允许的最大偏差值(%)" max="100000" min="0" paramter="" tag="" unit="%" visible="false" type="Double" />
 		<config default="150" name="WallHeaterSetPointLimit" nameView="Wall Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -656,8 +656,8 @@
 		<config default="25" name="GasTemperature" nameView="Gas Temperature" max="1000" min="-1000" paramter="" tag="" unit="℃" visible="false" type="Double" />
 		<config default="9" name="TargetPressureInMFCVerification" nameView="MFC verification中的目标压力" max="100" min="0" paramter="" tag="" unit="Torr" visible="false" type="Double" />
 		<config default="180" name="GasFlowTimeInMFCVerification" nameView="MFC verification中的目标时间" max="1000" min="0" paramter="" tag="" unit="second" visible="false" type="Double" />
-		<config default="0" name="PinDownDelayTimePick" nameView="Pick Delay Time before pin down" description="" max="120" min="0" paramter="" tag="" unit="s" type="Integer" />
-		<config default="0" name="PinDownDelayTimePlace" nameView="Place Delay Time before pin down" description="" max="120" min="0" paramter="" tag="" unit="s" type="Integer" />
+		<config default="0" name="PickDelayTime" nameView="Pick Delay Time before retract robot arm(ms)" description="" max="10000" min="0" paramter="" tag="" unit="ms" type="Integer" />
+		<config default="0" name="PlaceDelayTime" nameView="Place Delay Time before retract robot arm(ms)" description="" max="10000" min="0" paramter="" tag="" unit="ms" type="Integer" />
 		<config default="Strip" name="ChamberLabel"  nameView="Chamber Label" description="Chamber名称" max="" min="" paramter="" tag=""  unit="" type="String" />
 		<config default="30" name="MaxDeviationInMFCVerification" nameView="MFC verification允许的最大偏差值(%)" max="100000" min="0" paramter="" tag="" unit="%" visible="false" type="Double" />
 		<config default="150" name="WallHeaterSetPointLimit" nameView="Wall Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />

+ 6 - 2
Venus/Venus_RT/Modules/TM/MFPMPickRoutine.cs

@@ -22,6 +22,7 @@ namespace Venus_RT.Modules.TM
             PMPrepare,
             ArmExtend,
             DropDownWafer,
+            PickDelay,
             ArmRetract,
             NotifyDone,
         }
@@ -30,10 +31,11 @@ namespace Venus_RT.Modules.TM
         private readonly ITransferRobot _robot;
 
         private int _pickingTimeout = 120 * 1000;
+        private int _pickDelayTime = 0;
         private ModuleName _targetModule;
         private PMEntity  _pmModule;
-        int _targetSlot;
-        Hand _hand;
+        private int _targetSlot;
+        private Hand _hand;
 
         public MFPMPickRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
         {
@@ -81,6 +83,7 @@ namespace Venus_RT.Modules.TM
 
             Reset();
             _pickingTimeout = SC.GetValue<int>($"{Module}.PickTimeout") * 1000;
+            _pickDelayTime = SC.GetValue<int>($"{_targetModule}.PickDelayTime");
 
             return Runner.Start(Module, $"Pick from {_targetModule}");
         }
@@ -91,6 +94,7 @@ namespace Venus_RT.Modules.TM
                 .Run((int)PickStep.PMPrepare,       ModulePrepare,              IsModulePrepareReady)
                 .Run((int)PickStep.ArmExtend,       ArmExtend,                  WaitRobotExtendDone)
                 .Run((int)PickStep.DropDownWafer,   NotifyPMPickWafer,          WaitPMWaferDropDown)
+                .Delay((int)PickStep.PickDelay,     _pickDelayTime)
                 .Run((int)PickStep.ArmRetract,      ArmRetract,                 WaitRobotRetractDone)
                 .End((int)PickStep.NotifyDone,      NotifyPMDone,               _delay_50ms);
 

+ 6 - 2
Venus/Venus_RT/Modules/TM/MFPMPlaceRoutine.cs

@@ -22,6 +22,7 @@ namespace Venus_RT.Modules.TM
             PMPrepare,
             ArmExtend,
             LiftUpWafer,
+            PlaceDelay,
             ArmRetract,
             NotifyDone,
         }
@@ -30,10 +31,11 @@ namespace Venus_RT.Modules.TM
         private readonly ITransferRobot _robot;
 
         private int _placingTimeout = 120 * 1000;
+        private int _placeDelayTime = 0;
         private ModuleName _targetModule;
         private PMEntity _pmModule;
-        int _targetSlot;
-        Hand _hand;
+        private int _targetSlot;
+        private Hand _hand;
 
         public MFPMPlaceRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
         {
@@ -81,6 +83,7 @@ namespace Venus_RT.Modules.TM
 
             Reset();
             _placingTimeout = SC.GetValue<int>($"{Module}.PlaceTimeout") * 1000;
+            _placeDelayTime = SC.GetValue<int>($"{_targetModule}.PlaceDelayTime");
 
             return Runner.Start(Module, $"Place to {_targetModule}");
         }
@@ -91,6 +94,7 @@ namespace Venus_RT.Modules.TM
                 .Run((int)PlaceStep.PMPrepare,      ModulePrepare,          IsModulePrepareReady)
                 .Run((int)PlaceStep.ArmExtend,      ArmExtend,              WaitRobotExtendDone)
                 .Run((int)PlaceStep.LiftUpWafer,    NotifyPMPlaceWafer,     WaitPMWaferLiftUp)
+                .Delay((int)PlaceStep.PlaceDelay,   _placeDelayTime)
                 .Run((int)PlaceStep.ArmRetract,     ArmRetract,             WaitRobotRetractDone)
                 .End((int)PlaceStep.NotifyDone,     NotifyPMDone,           _delay_50ms);
 

+ 11 - 3
Venus/Venus_RT/Modules/TM/MFPMSwapRoutine.cs

@@ -22,10 +22,12 @@ namespace Venus_RT.Modules.TM
             PickPrepare,
             PickExtend,
             DropDownWafer,
+            PickDelay,
             PickRetract,
             PlacePrepare,
             PlaceExtend,
             LiftUpWafer,
+            PlaceDelay,
             PlaceRetract,
             NotifyDone,
         }
@@ -34,11 +36,13 @@ namespace Venus_RT.Modules.TM
         private readonly ITransferRobot _robot;
 
         private int _swapingTimeout = 120 * 1000;
+        private int _placeDelayTime = 0;
+        private int _pickDelayTime = 0;
         private ModuleName _targetModule;
         private PMEntity _pmModule;
-        int _targetSlot;
-        Hand _pickHand;
-        Hand _placeHand;
+        private int _targetSlot;
+        private Hand _pickHand;
+        private Hand _placeHand;
 
         public MFPMSwapRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TM)
         {
@@ -90,6 +94,8 @@ namespace Venus_RT.Modules.TM
 
             Reset();
             _swapingTimeout = SC.GetValue<int>($"{Module}.SwapTimeout") * 1000;
+            _pickDelayTime = SC.GetValue<int>($"{_targetModule}.PickDelayTime");
+            _placeDelayTime = SC.GetValue<int>($"{_targetModule}.PlaceDelayTime");
 
             return Runner.Start(Module, $"Swap with {_targetModule}");
         }
@@ -100,10 +106,12 @@ namespace Venus_RT.Modules.TM
                 .Run((int)SwapStep.PickPrepare,     PickPrepare,            IsModuleReadyForPick)
                 .Run((int)SwapStep.PickExtend,      PickExtend,             WaitRobotExtendDone)
                 .Run((int)SwapStep.DropDownWafer,   NotifyPMPickWafer,      WaitPMWaferDropDown)
+                .Delay((int)SwapStep.PickDelay,     _pickDelayTime)
                 .Run((int)SwapStep.PickRetract,     PickRetract,            WaitRobotRetractDone)
                 .Run((int)SwapStep.PlacePrepare,    PlacePrepare,           IsModuleReadyForPlace)
                 .Run((int)SwapStep.PlaceExtend,     PlaceExtend,            WaitRobotExtendDone)
                 .Run((int)SwapStep.LiftUpWafer,     NotifyLiftUpWafer,      WaitPMWaferLiftUp)
+                .Delay((int)SwapStep.PlaceDelay,    _placeDelayTime)
                 .Run((int)SwapStep.PlaceRetract,    PlaceRetract,           WaitRobotRetractDone)
                 .End((int)SwapStep.NotifyDone,      NotifyPMDone,           _delay_50ms);