|
@@ -161,7 +161,7 @@ namespace Venus_RT.Modules
|
|
|
public SequenceLLInOutPath LLInOutPath => _AutoCycle.LLInOutPath;
|
|
|
|
|
|
private TMCycle _TMCycle;
|
|
|
- private AutoCycle _AutoCycle;
|
|
|
+ private ICycle _AutoCycle;
|
|
|
private ManualTransfer _manualTransfer;
|
|
|
private ReturnAllWafer _returnWafer;
|
|
|
private SETMCycle _seTMCycle;
|
|
@@ -455,6 +455,7 @@ namespace Venus_RT.Modules
|
|
|
OP.Subscribe("System.ReturnAllSEWafer", (cmd, args) => CheckToPostMessage((int)MSG.SEReturnWafer, args));
|
|
|
OP.Subscribe("System.SEAbort", (cmd, args) => CheckToPostMessage((int)MSG.SEAbort, args));
|
|
|
}
|
|
|
+
|
|
|
public bool CheckToPostMessage(int msg, params object[] args)
|
|
|
{
|
|
|
if (!fsm.FindTransition(fsm.State, msg))
|
|
@@ -469,6 +470,11 @@ namespace Venus_RT.Modules
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ public bool InvokeAbort(object[] args)
|
|
|
+ {
|
|
|
+ return CheckToPostMessage((int)MSG.ABORT, args);
|
|
|
+ }
|
|
|
+
|
|
|
private bool InvokeCreateWafer(string arg1, object[] args)
|
|
|
{
|
|
|
ModuleName chamber = ModuleHelper.Converter(args[0].ToString());
|
|
@@ -617,14 +623,11 @@ namespace Venus_RT.Modules
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
public TMEntity GetTM()
|
|
|
{
|
|
|
return TM;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
protected override bool Init()
|
|
|
{
|
|
|
PMA?.Initialize();
|
|
@@ -641,6 +644,7 @@ namespace Venus_RT.Modules
|
|
|
|
|
|
_TMCycle = new TMCycle();
|
|
|
_AutoCycle = new AutoCycle();
|
|
|
+ //_AutoCycle = new SystemDispatcher();
|
|
|
_manualTransfer = new ManualTransfer();
|
|
|
_returnWafer = new ReturnAllWafer(_manualTransfer);
|
|
|
_seTMCycle = new SETMCycle(ModuleName.SETM);
|
|
@@ -749,49 +753,62 @@ namespace Venus_RT.Modules
|
|
|
|
|
|
private bool FsmStartHome(object[] objs)
|
|
|
{
|
|
|
- PMA?.Invoke("Home");
|
|
|
- PMB?.Invoke("Home");
|
|
|
- PMC?.Invoke("Home");
|
|
|
- PMD?.Invoke("Home");
|
|
|
TM?.Invoke("Home");
|
|
|
- LLA?.Invoke("Home");
|
|
|
- LLB?.Invoke("Home");
|
|
|
EFEM?.Invoke("Home");
|
|
|
seTM?.Invoke("Home");
|
|
|
VCE?.Invoke("Home");
|
|
|
|
|
|
+ foreach(var mod in ModuleHelper.InstalledModules)
|
|
|
+ {
|
|
|
+ if(ModuleHelper.IsPm(mod))
|
|
|
+ {
|
|
|
+ if(GetPM(mod).IsInclude)
|
|
|
+ {
|
|
|
+ GetPM(mod).Invoke("Home");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (ModuleHelper.IsLoadLock(mod))
|
|
|
+ {
|
|
|
+ if(GetLL(mod).IsInclude)
|
|
|
+ {
|
|
|
+ GetLL(mod).Invoke("Home");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
private bool FsmMonitorHome(object[] objs)
|
|
|
{
|
|
|
- bool CheckHomed(string name, bool bValid, bool bDone)
|
|
|
+ ModuleName notReadyModule = ModuleName.System;
|
|
|
+ foreach(var mod in ModuleHelper.InstalledModules)
|
|
|
{
|
|
|
- if (bValid && !bDone)
|
|
|
+ if ((ModuleHelper.IsPm(mod)&& GetPM(mod).IsInclude && !GetPM(mod).IsIdle) ||
|
|
|
+ (ModuleHelper.IsLoadLock(mod) && GetLL(mod).IsInclude && !GetLL(mod).IsIdle) ||
|
|
|
+ (ModuleHelper.IsTM(mod) && !GetTM().IsIdle) ||
|
|
|
+ (ModuleHelper.IsVCE(mod) && !GetVCE(mod).IsIdle) ||
|
|
|
+ (ModuleHelper.IsEFEM(mod) && !EFEM.IsIdle) ||
|
|
|
+ (ModuleHelper.isSETM(mod) && !seTM.IsIdle))
|
|
|
{
|
|
|
- if (fsm.ElapsedTime > 100 * 1000)
|
|
|
- {
|
|
|
- LOG.Write(eEvent.ERR_ROUTER, ModuleName.System, $"{name} home timeout");
|
|
|
- PostMsg(MSG.ERROR);
|
|
|
- return true;
|
|
|
- }
|
|
|
- else
|
|
|
- return false;
|
|
|
+ notReadyModule = mod;
|
|
|
+ break;
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- return true;
|
|
|
+ if(notReadyModule != ModuleName.System)
|
|
|
+ {
|
|
|
+ if (fsm.ElapsedTime > 100 * 1000)
|
|
|
+ {
|
|
|
+ LOG.Write(eEvent.ERR_ROUTER, ModuleName.System, $"{notReadyModule} home timeout");
|
|
|
+ PostMsg(MSG.ERROR);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
- return CheckHomed("PMA", ModuleHelper.IsInstalled(ModuleName.PMA) && PMA != null, ModuleHelper.IsInstalled(ModuleName.PMA) && PMA != null&&PMA.IsIdle) &&
|
|
|
- CheckHomed("PMB", ModuleHelper.IsInstalled(ModuleName.PMB) && PMB != null, ModuleHelper.IsInstalled(ModuleName.PMB) && PMB != null&&PMB.IsIdle) &&
|
|
|
- CheckHomed("PMC", ModuleHelper.IsInstalled(ModuleName.PMC) && PMC != null, ModuleHelper.IsInstalled(ModuleName.PMC) && PMC != null&&PMC.IsIdle) &&
|
|
|
- CheckHomed("PMD", ModuleHelper.IsInstalled(ModuleName.PMD) && PMD != null, ModuleHelper.IsInstalled(ModuleName.PMD) && PMD != null&&PMD.IsIdle) &&
|
|
|
- CheckHomed("LLA", ModuleHelper.IsInstalled(ModuleName.LLA) && LLA != null, ModuleHelper.IsInstalled(ModuleName.LLA) && LLA != null&&LLA.IsIdle) &&
|
|
|
- CheckHomed("LLB", ModuleHelper.IsInstalled(ModuleName.LLB) && LLB != null, ModuleHelper.IsInstalled(ModuleName.LLB) && LLB != null&&LLB.IsIdle) &&
|
|
|
- CheckHomed("TM", ModuleHelper.IsInstalled(ModuleName.TM) && TM != null, ModuleHelper.IsInstalled(ModuleName.TM) && TM != null&&TM.IsIdle) &&
|
|
|
- CheckHomed("EFEM", ModuleHelper.IsInstalled(ModuleName.EFEM) && EFEM != null, ModuleHelper.IsInstalled(ModuleName.EFEM) && EFEM != null && EFEM.IsIdle) &&
|
|
|
- CheckHomed("SETM", ModuleHelper.IsInstalled(ModuleName.SETM) && seTM != null, ModuleHelper.IsInstalled(ModuleName.SETM) && seTM != null && seTM.IsIdle) &&
|
|
|
- CheckHomed("VCE1", ModuleHelper.IsInstalled(ModuleName.VCE1) && VCE != null, ModuleHelper.IsInstalled(ModuleName.VCE1) && VCE != null && VCE.IsIdle);
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
|