|
@@ -45,26 +45,11 @@ namespace Venus_RT.Modules.TM
|
|
|
private Hand _pickHand;
|
|
|
private Hand _placeHand;
|
|
|
|
|
|
- private Dictionary<ModuleName, ModuleName> _rotateModules = new Dictionary<ModuleName, ModuleName>();
|
|
|
-
|
|
|
public MFPMSwapRoutine(JetTM tm, ITransferRobot robot) : base(ModuleName.TMRobot)
|
|
|
{
|
|
|
_JetTM = tm;
|
|
|
_robot = robot;
|
|
|
Name = "Swap with PM";
|
|
|
-
|
|
|
- foreach (var mod in new List<ModuleName> { ModuleName.PMA, ModuleName.PMB, ModuleName.PMC, ModuleName.PMD })
|
|
|
- {
|
|
|
- string rotateModule = SC.GetStringValue($"TM.PreRotation.{mod}");
|
|
|
- if (rotateModule.Length == 3)
|
|
|
- {
|
|
|
- ModuleName rotModule = ModuleHelper.Converter(rotateModule);
|
|
|
- if (ModuleHelper.IsPm(rotModule) || ModuleHelper.IsLoadLock(rotModule))
|
|
|
- {
|
|
|
- _rotateModules.Add(mod, rotModule);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
public RState Start(params object[] objs)
|
|
|
{
|
|
@@ -118,19 +103,19 @@ namespace Venus_RT.Modules.TM
|
|
|
|
|
|
public RState Monitor()
|
|
|
{
|
|
|
- Runner.Wait(SwapStep.WaitPMReady, () => _pmModule.IsIdle, _delay_60s)
|
|
|
- .RunIf(SwapStep.PreRotation, _rotateModules.ContainsKey(_targetModule), RotateArm, WaitRotateDone)
|
|
|
- .Run(SwapStep.PickPrepare, PickPrepare, IsModuleReadyForPick)
|
|
|
- .Run(SwapStep.PickExtend, PickExtend, WaitRobotExtendDone)
|
|
|
- .Run(SwapStep.DropDownWafer, NotifyPMPickWafer, WaitPMWaferDropDown)
|
|
|
- .Delay(SwapStep.PickDelay, _pickDelayTime)
|
|
|
- .Run(SwapStep.PickRetract, PickRetract, WaitRobotRetractDone)
|
|
|
- .Run(SwapStep.PlacePrepare, PlacePrepare, IsModuleReadyForPlace)
|
|
|
- .Run(SwapStep.PlaceExtend, PlaceExtend, WaitRobotExtendDone)
|
|
|
- .Run(SwapStep.LiftUpWafer, NotifyLiftUpWafer, WaitPMWaferLiftUp)
|
|
|
- .Delay(SwapStep.PlaceDelay, _placeDelayTime)
|
|
|
- .Run(SwapStep.PlaceRetract, PlaceRetract, WaitRobotRetractDone)
|
|
|
- .End(SwapStep.NotifyDone, NotifyPMDone, _delay_50ms);
|
|
|
+ Runner.Wait(SwapStep.WaitPMReady, () => _pmModule.IsIdle, _delay_60s)
|
|
|
+ .RunIf(SwapStep.PreRotation, _JetTM.PreRotateModules.ContainsKey(_targetModule), RotateArm, WaitRotateDone)
|
|
|
+ .Run(SwapStep.PickPrepare, PickPrepare, IsModuleReadyForPick)
|
|
|
+ .Run(SwapStep.PickExtend, PickExtend, WaitRobotExtendDone)
|
|
|
+ .Run(SwapStep.DropDownWafer, NotifyPMPickWafer, WaitPMWaferDropDown)
|
|
|
+ .Delay(SwapStep.PickDelay, _pickDelayTime)
|
|
|
+ .Run(SwapStep.PickRetract, PickRetract, WaitRobotRetractDone)
|
|
|
+ .Run(SwapStep.PlacePrepare, PlacePrepare, IsModuleReadyForPlace)
|
|
|
+ .Run(SwapStep.PlaceExtend, PlaceExtend, WaitRobotExtendDone)
|
|
|
+ .Run(SwapStep.LiftUpWafer, NotifyLiftUpWafer, WaitPMWaferLiftUp)
|
|
|
+ .Delay(SwapStep.PlaceDelay, _placeDelayTime)
|
|
|
+ .Run(SwapStep.PlaceRetract, PlaceRetract, WaitRobotRetractDone)
|
|
|
+ .End(SwapStep.NotifyDone, NotifyPMDone, _delay_50ms);
|
|
|
|
|
|
return Runner.Status;
|
|
|
}
|
|
@@ -195,7 +180,7 @@ namespace Venus_RT.Modules.TM
|
|
|
private bool RotateArm()
|
|
|
{
|
|
|
_pmModule.PostMsg(PMEntity.MSG.PreparePick); // Notify PM to Serv pressure in advance for throughput enhancement
|
|
|
- return _robot.Goto(_rotateModules[_targetModule], 0, _placeHand);
|
|
|
+ return _robot.Goto(_JetTM.PreRotateModules[_targetModule], 0, _placeHand);
|
|
|
}
|
|
|
|
|
|
private bool WaitRotateDone()
|