|
|
|
@ -26,6 +26,7 @@
|
|
|
|
|
#include "SemiSecsCommMgr.h"
|
|
|
|
|
#include "DeviceStateMgr.h"
|
|
|
|
|
#include "WorkCmdInvoker.h"
|
|
|
|
|
#include "CommonFlowMgr.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define Max_ProcessJob_cnt 100 //最大的Pjob 数量
|
|
|
|
@ -2053,6 +2054,12 @@ bool CJobQueueMgr::CreatPJobDataExt()
|
|
|
|
|
//Recipe 保存到PJob (运行时使用PJob 中的recipe)
|
|
|
|
|
PJob.m_Recipe = Recipe;
|
|
|
|
|
|
|
|
|
|
//取rcp 层数
|
|
|
|
|
{
|
|
|
|
|
CRecipeParameter RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_CASSETTE_TIER_COUNT);
|
|
|
|
|
PJob.m_nCassetteTierCount = RecipePar.m_ParIntVal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//设置PJOB 的cyc 信息
|
|
|
|
|
CRecipeParameter RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_RUNTIMES);
|
|
|
|
|
int CycRunTimes = RecipePar.m_ParIntVal;
|
|
|
|
@ -2071,9 +2078,29 @@ bool CJobQueueMgr::CreatPJobDataExt()
|
|
|
|
|
}
|
|
|
|
|
CyclicModePar.m_CurCyclicTimes = abs(PJob.m_CurCyclicTimes);
|
|
|
|
|
CyclicModePar.m_CurCyclicWaferTimes = abs(PJob.m_CurCyclicWaferTimes);
|
|
|
|
|
//暂停重新开始Job,不设置cyc次数
|
|
|
|
|
if (gCommonFlowMgr->GetJobStopType() != _JobStopType_Pause) {
|
|
|
|
|
gTransferArmMgr->SetCyclicModePar(CyclicModePar);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
gCommonFlowMgr->SetJobStopType(_JobStopType_Null);
|
|
|
|
|
if ((_LoadPortType_Port1 == PJob.m_LoadPortType && PJob.m_nCassetteTierCount != gTransferArmMgr->GetCassetteTierCout(PJob.m_LoadPortType))
|
|
|
|
|
|| (_LoadPortType_Port2 == PJob.m_LoadPortType && PJob.m_nCassetteTierCount != gTransferArmMgr->GetCassetteTierCout(PJob.m_LoadPortType)))
|
|
|
|
|
{
|
|
|
|
|
m_JobCreatDataState = _CreatDataState_Err;
|
|
|
|
|
CString s("Rcp Cassette 和当前 Cassette 层数不匹配");
|
|
|
|
|
gLogMgr->InsertPromptList(s);
|
|
|
|
|
{
|
|
|
|
|
COperateAlarmPar OperateAlarmPar;
|
|
|
|
|
OperateAlarmPar.m_OperateAlarmType = _OperateAlarmType_SetAlarmOn;
|
|
|
|
|
OperateAlarmPar.m_AlarmType = _AlarmType_CreatJob_RcpCassettemismatch;
|
|
|
|
|
OperateAlarmPar.m_bThowException = false;
|
|
|
|
|
gWarningMgr->OperateAlarmState(OperateAlarmPar);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_JobCreatDataState = _CreatDataState_Ok;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2246,6 +2273,7 @@ void CJobQueueMgr::SetJobStopType(eJobStopType StopType)
|
|
|
|
|
//OperateJobPar.m_PjobStateSet.insert(_PJobState_PROCESSING_LAST_WAFER);
|
|
|
|
|
OperateJobPar.m_PjobChangeState = _PJobState_PAUSING;
|
|
|
|
|
OperateJob(OperateJobPar);
|
|
|
|
|
gCommonFlowMgr->SetJobStopType(_JobStopType_Pause);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case _JobStopType_Stop:
|
|
|
|
@ -2261,6 +2289,7 @@ void CJobQueueMgr::SetJobStopType(eJobStopType StopType)
|
|
|
|
|
OperateJobPar.m_PjobStateSet.insert(_PJobState_PROCESSING);
|
|
|
|
|
OperateJobPar.m_PjobChangeState = _PJobState_STOPPING;
|
|
|
|
|
OperateJob(OperateJobPar);
|
|
|
|
|
gCommonFlowMgr->SetJobStopType(_JobStopType_Stop);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case _JobStopType_Abort:
|
|
|
|
@ -2276,6 +2305,7 @@ void CJobQueueMgr::SetJobStopType(eJobStopType StopType)
|
|
|
|
|
OperateJobPar.m_PjobStateSet.insert(_PJobState_PROCESSING);
|
|
|
|
|
OperateJobPar.m_PjobChangeState = _PJobState_ABORTING;
|
|
|
|
|
OperateJob(OperateJobPar);
|
|
|
|
|
gCommonFlowMgr->SetJobStopType(_JobStopType_Abort);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|