自动生产任务结束后恢复JOB停止状态为NULL,JOB连续传片下一pjob传片前读取Recipe的准直角度

main
admin 3 months ago
parent 32e96e62e8
commit 7554c180e2

@ -2833,12 +2833,13 @@ bool CAnnealMonitoringMgr::CheckbExcuteStop()
LogInfo.m_FuncName = "CheckbExcuteStop";
//执行停止
if(gStopAllWrokCmd
||gJobQueueMgr->GetCurJobStopType()==_JobStopType_Pause
||gJobQueueMgr->GetCurJobStopType()==_JobStopType_Stop
||gJobQueueMgr->GetCurJobStopType()==_JobStopType_Abort
|| _JobStopType_Pause==gJobQueueMgr->GetCurJobStopType()
|| _JobStopType_Stop==gJobQueueMgr->GetCurJobStopType()
|| _JobStopType_Abort==gJobQueueMgr->GetCurJobStopType()
)
{
LogInfo.m_LogMsg = "Excute Stop";
CString str = Bool2CString(gStopAllWrokCmd) + ";" + Int2CString(gJobQueueMgr->GetCurJobStopType());
LogInfo.m_LogMsg = str+"Excute Stop";
gLogMgr->WriteLogInfo(LogInfo);
return true;
}

@ -2237,7 +2237,7 @@ void CJobQueueMgr::OnAutoRunStop()
break;
}
//恢复为无操作
//SetJobStopType(_JobStopType_Null);
SetJobStopType(_JobStopType_Null);
//改变EAP 流程状态(Statr 或者Stop)
gSemiSecsCommMgr->ChangeEapFlowStepState(_LoadPortType_Port1);
@ -2591,11 +2591,46 @@ void CJobQueueMgr::CheckNextPjobFirstWafer()
if(pWafer && (pWafer->m_WaferState)<=_WaferState_CassetteWating)
{
gCmdInvoker_WaferTransfer.BindingNextPjobFirstWafer(pWafer);
double Val = -1.00;
Val = GetRecipeContTransAlignerAngle(NextQueuedPJob);
gTransferArmMgr->SetContTransAlignerAngle(Val);
}
}
}
}
double CJobQueueMgr::GetRecipeContTransAlignerAngle(CProcessJob pJob)
{
double Ret = -1.00;
CLogInfo LogInfo;
LogInfo.m_ClassName = "CJobQueueMgr";
LogInfo.m_FuncName = "GetRecipeContTransAlignerAngle";
CRecipe Recipe;
LogInfo.m_LogMsg = "ReadRecipeFromFile : " + pJob.m_RecipeName;
gLogMgr->WriteLogInfo(LogInfo);
//¸ù¾ÝPJob.m_RecipeName ¶ÁÈ¡xml Îļþµ½recipe
if (!gRecipeMgr->ReadRecipeFromFile(Recipe, pJob.m_RecipeName))
{
CString s("Recipe Open Failed:");
s += pJob.m_RecipeName;
gLogMgr->InsertPromptList(s);
//Alarm
{
COperateAlarmPar OperateAlarmPar;
OperateAlarmPar.m_OperateAlarmType = _OperateAlarmType_SetAlarmOn;
OperateAlarmPar.m_AlarmType = _AlarmType_Recipe_ReadXmlErr;
OperateAlarmPar.m_AlarmAddInfo = s;
OperateAlarmPar.m_bThowException = false;
gWarningMgr->OperateAlarmState(OperateAlarmPar);
}
return Ret;
}
CRecipeParameter RecipePar;
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_ALIGNER_ANG);
Ret = RecipePar.m_ParDoubleVal;
return Ret;
}
//设置Pjob 的完成状态
//NeedPJobState需要的job 状态
//_PJobState_PROCESSING或者_PJobState_PROCESSING_LAST_WAFER

@ -278,6 +278,7 @@ public:
bool HasNoCompletePJob();
void SetPjobCompleteState(int NeedPJobState);
void CheckNextPjobFirstWafer();
double GetRecipeContTransAlignerAngle(CProcessJob pJob);
CString AddPJobHistory(COperateJobPar &OperateJobPar);
void SetbCancelQueueJob(bool b){m_bCancelQueueJob = b;};
bool IsbCancelQueueJob(){return m_bCancelQueueJob;};

@ -1153,9 +1153,10 @@ int CMotionCtrl_Acs::AsixXYMultiPointMove(bool LaserBufCtrl,CString HistoryDataP
}
//结束点才能停止
//手动操作界面或者job 的停止状态为Abort
if(gCmdInvoker_WaferAneal.IsbExcutingStop()||(gJobQueueMgr->GetCurJobStopType()==_JobStopType_Abort))
if(gCmdInvoker_WaferAneal.IsbExcutingStop()||(_JobStopType_Abort==gJobQueueMgr->GetCurJobStopType()))
{
LogInfo.m_LogMsg = "Abort";
CString str = Bool2CString(gCmdInvoker_WaferAneal.IsbExcutingStop()) + ";" + Int2CString(gJobQueueMgr->GetCurJobStopType());
LogInfo.m_LogMsg = str+ "Abort";
gLogMgr->WriteLogInfo(LogInfo);
break;
}

@ -1455,13 +1455,20 @@ void CTransferArmMgr::WaferTransfer_Arm1PosToAligner(CWafer &Wafer,bool bLoad)
if(bLoad)//上料的时候使用wafer recipe 第一个区域的准直角度
{
AlignerAngle = Wafer.GetAlignerAngle();
if (m_bTwoJobContinuousTrans&&m_ContTransAlignerAngle>=0)
{
AlignerAngle = m_ContTransAlignerAngle;
m_ContTransAlignerAngle = -1.00;//清除使用连续传片准直角度标志
}
//记录wafer 的准直角度(写入记录用)
Wafer.m_AlignerAngle = Db2CString(AlignerAngle);
gLogMgr->WriteDebugLog("WaferTransfer_Arm1PosToAligner:AlignerAngle:"+Wafer.m_AlignerAngle);
}
else//退料的时候使用指定的准直角度
{
AlignerAngle = gAlignerDyhMgr->GetBackAlignerAngle(Wafer.GetLoadPortType());
}
//设置当前的准直角度
gAlignerDyhMgr->SetCurAlignerAngle(AlignerAngle);

@ -526,6 +526,7 @@ public:
void SetCurMoveToWaferSlot(int Slot){m_CurMoveToWaferSlot = Slot;};
void GetPortWaferSlotVec(eWaferLoadPortType LoadPortType,bool bInvertSelection,ePortWaferState WaferStateStart,ePortWaferState WaferStateEnd,vector<int> &WaferSlotVec);
void SetbLoadOrUnload(bool b){m_bLoadOrUnload = b;};
void SetContTransAlignerAngle(double Val) { m_ContTransAlignerAngle = Val; };
CRobotCoord GetCurRobotCoord(){return m_CurRobotCoord;};
void ClearWaferTimes(eWaferTimesType TimesType);
void RobotSevon();
@ -673,6 +674,8 @@ private:
bool m_VacOnBeforeThimbleDown;//顶针下降前先开真空
CRobotCoord m_CurRobotCoord;//机械手的坐标
double m_ContTransAlignerAngle = -1.00;//Á¬ÐøPJOB´«Æ¬×¼Ö±½Ç¶ÈÉèÖÃ
eAlarmType m_CurRobotAlarmType;//当前的报警类型
eRobotCmdType m_CurRobotCmdType;//当前执行的cmd

Loading…
Cancel
Save