|
@@ -72,7 +72,8 @@ namespace Venus_RT.Modules
|
|
|
CreateSEJob,
|
|
|
StartSEJob,
|
|
|
AbortSEJob,
|
|
|
- SEMoveWafer
|
|
|
+ SEMoveWafer,
|
|
|
+ SEReturnWafer
|
|
|
}
|
|
|
|
|
|
public PMEntity PMA { get; private set; }
|
|
@@ -159,6 +160,7 @@ namespace Venus_RT.Modules
|
|
|
private ReturnAllWafer _returnWafer;
|
|
|
private SETMCycle _seTMCycle;
|
|
|
private SEManualTransfer _setransfer;
|
|
|
+ private SEReturnWafer _sereturnWafer;
|
|
|
|
|
|
private bool _isWaitUnload;
|
|
|
private static int _isATMMode = -1;
|
|
@@ -280,7 +282,11 @@ namespace Venus_RT.Modules
|
|
|
|
|
|
OP.Subscribe("System.ReturnAllWafer", (string cmd, object[] args) =>
|
|
|
{
|
|
|
- return CheckToPostMessage((int)MSG.ReturnAllWafer, args[0], args[1], args[2], args[3]);
|
|
|
+
|
|
|
+ if (seTM != null && VCE != null)
|
|
|
+ return CheckToPostMessage((int)MSG.SEReturnWafer, args);
|
|
|
+ else
|
|
|
+ return CheckToPostMessage((int)MSG.ReturnAllWafer, args[0], args[1], args[2], args[3]);
|
|
|
});
|
|
|
OP.Subscribe("System.MoveWafer", (string cmd, object[] args) =>
|
|
|
{
|
|
@@ -306,8 +312,8 @@ namespace Venus_RT.Modules
|
|
|
return CheckToPostMessage((int)MSG.MoveWafer,
|
|
|
source, (int)args[1],
|
|
|
destination, (int)args[3],
|
|
|
- (bool)args[4], (int)args[5],
|
|
|
- (bool)args[6], (int)args[7], (string)args[8]);
|
|
|
+ args[4], args[5],
|
|
|
+ args[6], args[7], (string)args[8]);
|
|
|
});
|
|
|
|
|
|
OP.Subscribe("System.HomeAll", (string cmd, object[] args) =>
|
|
@@ -439,6 +445,7 @@ namespace Venus_RT.Modules
|
|
|
OP.Subscribe("System.SETMCycle", (cmd, args) => CheckToPostMessage((int)MSG.SETMCycle, args));
|
|
|
OP.Subscribe("System.CreateSEJob", (cmd, args) => CheckToPostMessage((int)MSG.CreateSEJob, args));
|
|
|
OP.Subscribe("System.StartSEJob",(cmd,args)=>CheckToPostMessage((int)MSG.StartSEJob,args));
|
|
|
+ OP.Subscribe("System.ReturnAllSEWafer", (cmd, args) => CheckToPostMessage((int)MSG.SEReturnWafer, args));
|
|
|
}
|
|
|
public bool CheckToPostMessage(int msg, params object[] args)
|
|
|
{
|
|
@@ -609,6 +616,7 @@ namespace Venus_RT.Modules
|
|
|
_returnWafer = new ReturnAllWafer(_manualTransfer);
|
|
|
_seTMCycle = new SETMCycle(ModuleName.SETM);
|
|
|
_setransfer = new SEManualTransfer();
|
|
|
+ _sereturnWafer = new SEReturnWafer(_setransfer);
|
|
|
|
|
|
|
|
|
BuildTransitionTable();
|
|
@@ -685,21 +693,23 @@ namespace Venus_RT.Modules
|
|
|
Transition(RtState.ReturnWafer, MSG.ABORT, FsmAbort, RtState.Idle);
|
|
|
|
|
|
// SETM Cycle
|
|
|
- Transition(RtState.Idle, MSG.SETMCycle, FsmStartSETMCycle, RtState.SETMCycle);
|
|
|
- Transition(RtState.SETMCycle, FSM_MSG.TIMER, FsmMonitorSETMCycle, RtState.Idle);
|
|
|
- Transition(RtState.SETMCycle, MSG.StopSECycle, FsmStopSETMCycle, RtState.Idle);
|
|
|
- // SETM CreateCycle
|
|
|
- Transition(RtState.Idle, MSG.CreateSEJob, FsmStartCreateSEJob, RtState.Idle);
|
|
|
- // SETM StartCycle
|
|
|
- Transition(RtState.Idle, MSG.StartSEJob, FsmStartSEJob, RtState.SERunning);
|
|
|
- Transition(RtState.SERunning, FSM_MSG.TIMER, FsmSEJobMonitor, RtState.Idle);
|
|
|
- Transition(RtState.SERunning, MSG.StopSECycle, FsmStopSETMCycle, RtState.Idle);
|
|
|
+ Transition(RtState.Idle, MSG.SETMCycle, FsmStartSETMCycle, RtState.SETMCycle);
|
|
|
+ Transition(RtState.SETMCycle, FSM_MSG.TIMER, FsmMonitorSETMCycle, RtState.Idle);
|
|
|
+ Transition(RtState.SETMCycle, MSG.StopSECycle, FsmStopSETMCycle, RtState.Idle);
|
|
|
+ // SETM CreateCycle
|
|
|
+ Transition(RtState.Idle, MSG.CreateSEJob, FsmStartCreateSEJob, RtState.Idle);
|
|
|
+ // SETM StartCycle
|
|
|
+ Transition(RtState.Idle, MSG.StartSEJob, FsmStartSEJob, RtState.SERunning);
|
|
|
+ Transition(RtState.SERunning, FSM_MSG.TIMER, FsmSEJobMonitor, RtState.Idle);
|
|
|
+ Transition(RtState.SERunning, MSG.StopSECycle, FsmStopSETMCycle, RtState.Idle);
|
|
|
// SE Transfer
|
|
|
- Transition(RtState.Idle, MSG.SEMoveWafer, FsmStartMoveWafer, RtState.SETransfer);
|
|
|
- Transition(RtState.SETransfer, FSM_MSG.TIMER, FsmMonitorMoveWafer, RtState.Idle);
|
|
|
- Transition(RtState.SETransfer, MSG.StopSECycle, FsmSEAbort, RtState.Idle);
|
|
|
+ Transition(RtState.Idle, MSG.SEMoveWafer, FsmStartSEMoveWafer, RtState.SETransfer);
|
|
|
+ Transition(RtState.SETransfer, FSM_MSG.TIMER, FsmMonitorSEMoveWafer, RtState.Idle);
|
|
|
+ Transition(RtState.SETransfer, MSG.StopSECycle, FsmSEAbort, RtState.Idle);
|
|
|
// SE ReturnWafer
|
|
|
-
|
|
|
+ Transition(RtState.Idle, MSG.SEReturnWafer, FsmStartSEReturnWafer, RtState.SEReturnWafer);
|
|
|
+ Transition(RtState.SEReturnWafer, FSM_MSG.TIMER, FsmMonitorSEReturnWafer, RtState.Idle);
|
|
|
+ Transition(RtState.SEReturnWafer, MSG.StopSECycle, FsmSEAbort, RtState.Idle);
|
|
|
}
|
|
|
|
|
|
private bool FsmMonitor(object[] objs)
|
|
@@ -1038,12 +1048,12 @@ namespace Venus_RT.Modules
|
|
|
return ret == RState.End;
|
|
|
}
|
|
|
|
|
|
- private bool FsmStartMoveWafer(object[] objs)
|
|
|
+ private bool FsmStartSEMoveWafer(object[] objs)
|
|
|
{
|
|
|
return _setransfer.Start(objs) == RState.Running;
|
|
|
}
|
|
|
|
|
|
- private bool FsmMonitorMoveWafer(object[] objs)
|
|
|
+ private bool FsmMonitorSEMoveWafer(object[] objs)
|
|
|
{
|
|
|
RState ret = _setransfer.Monitor();
|
|
|
if (ret == RState.Failed || ret == RState.Timeout)
|
|
@@ -1054,6 +1064,22 @@ namespace Venus_RT.Modules
|
|
|
return ret == RState.End;
|
|
|
}
|
|
|
|
|
|
+ private bool FsmStartSEReturnWafer(object[] objs)
|
|
|
+ {
|
|
|
+ return _sereturnWafer.Start(objs) == RState.Running;
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool FsmMonitorSEReturnWafer(object[] objs)
|
|
|
+ {
|
|
|
+ RState ret = _sereturnWafer.Monitor();
|
|
|
+ if (ret == RState.Failed || ret == RState.Timeout)
|
|
|
+ {
|
|
|
+ PostMsg(MSG.ERROR);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return ret == RState.End;
|
|
|
+ }
|
|
|
+
|
|
|
private bool FsmSEAbort(object[] objs)
|
|
|
{
|
|
|
_setransfer.Abort();
|