|
@@ -21,6 +21,7 @@ namespace Venus_RT.Modules.TM
|
|
|
{
|
|
|
WaitPMReady,
|
|
|
PreRotation,
|
|
|
+ OpenSlitDoor,
|
|
|
PickPrepare,
|
|
|
PickExtend,
|
|
|
DropDownWafer,
|
|
@@ -31,6 +32,7 @@ namespace Venus_RT.Modules.TM
|
|
|
LiftUpWafer,
|
|
|
PlaceDelay,
|
|
|
PlaceRetract,
|
|
|
+ CloseSlitDoor,
|
|
|
NotifyDone,
|
|
|
}
|
|
|
private enum SwapWithHeaterStep
|
|
@@ -144,6 +146,8 @@ namespace Venus_RT.Modules.TM
|
|
|
|
|
|
Runner.Wait(SwapStep.WaitPMReady, () => _pmModule.IsIdle, _delay_60s)
|
|
|
.RunIf(SwapStep.PreRotation, _JetTM.PreRotateModules.ContainsKey(_targetModule), RotateArm, WaitRotateDone)
|
|
|
+ .Run(SwapStep.OpenSlitDoor, OpenPMSlitDoor, OpenPMSlitDoorIsOK)
|
|
|
+
|
|
|
.Run(SwapStep.PickPrepare, PickPrepare, IsModuleReadyForPick)
|
|
|
.Run(SwapStep.PickExtend, PickExtend, WaitRobotExtendDone)
|
|
|
.Run(SwapStep.DropDownWafer, NotifyPMPickWafer, WaitPMWaferDropDown)
|
|
@@ -154,21 +158,23 @@ namespace Venus_RT.Modules.TM
|
|
|
.Run(SwapStep.LiftUpWafer, NotifyLiftUpWafer, WaitPMWaferLiftUp)
|
|
|
.Delay(SwapStep.PlaceDelay, _placeDelayTime)
|
|
|
.Run(SwapStep.PlaceRetract, PlaceRetract, WaitRobotRetractDone)
|
|
|
+ .Run(SwapStep.CloseSlitDoor, ClosePMSlitDoor, ClosePMSlitDoorIsOK)
|
|
|
+
|
|
|
.End(SwapStep.NotifyDone, NotifyPMDone, _delay_50ms);
|
|
|
break;
|
|
|
|
|
|
case JetChamber.Kepler2200A:
|
|
|
case JetChamber.Kepler2200B:
|
|
|
|
|
|
- Runner.Wait(SwapWithHeaterStep.WaitPMReady, () => _pmModule.IsIdle, _delay_60s)
|
|
|
- .RunIf(SwapWithHeaterStep.PreRotation, _JetTM.PreRotateModules.ContainsKey(_targetModule), RotateArm, WaitRotateDone)
|
|
|
- .Run(SwapWithHeaterStep.OpenSlitDoor, OpenPMSlitDoor, OpenPMSlitDoorIsOK)
|
|
|
- .Run(SwapWithHeaterStep.PickPrepare, PickPrepare, IsModuleReadyForPick)
|
|
|
- .Run(SwapWithHeaterStep.Picking, Picking, WaitPickDone)
|
|
|
- .Run(SwapWithHeaterStep.PlacePrepare, PlacePrepare, IsModuleReadyForPlace)
|
|
|
- .Run(SwapWithHeaterStep.Placing, Placing, WaitPlaceDone)
|
|
|
- .Run(SwapWithHeaterStep.CloseSlitDoor, ClosePMSlitDoor, ClosePMSlitDoorIsOK)
|
|
|
- .End(SwapStep.NotifyDone, NotifyPMDone, _delay_50ms);
|
|
|
+ Runner.Wait(SwapWithHeaterStep.WaitPMReady, () => _pmModule.IsIdle, _delay_60s)
|
|
|
+ .RunIf(SwapWithHeaterStep.PreRotation, _JetTM.PreRotateModules.ContainsKey(_targetModule), RotateArm, WaitRotateDone)
|
|
|
+ .Run(SwapWithHeaterStep.OpenSlitDoor, OpenPMSlitDoor, OpenPMSlitDoorIsOK)
|
|
|
+ .Run(SwapWithHeaterStep.PickPrepare, PickPrepare, IsModuleReadyForPick)
|
|
|
+ .Run(SwapWithHeaterStep.Picking, Picking, WaitPickDone)
|
|
|
+ .Run(SwapWithHeaterStep.PlacePrepare, PlacePrepare, IsModuleReadyForPlace)
|
|
|
+ .Run(SwapWithHeaterStep.Placing, Placing, WaitPlaceDone)
|
|
|
+ .Run(SwapWithHeaterStep.CloseSlitDoor, ClosePMSlitDoor, ClosePMSlitDoorIsOK)
|
|
|
+ .End(SwapStep.NotifyDone, NotifyPMDone, _delay_50ms);
|
|
|
break;
|
|
|
}
|
|
|
return Runner.Status;
|