|
|
@ -979,6 +979,113 @@ CString CSemiSecsCommMgr::GetEquipMDLN()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return m_SecsCommPar.m_EquipMDLN;
|
|
|
|
return m_SecsCommPar.m_EquipMDLN;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CSemiSecsCommMgr::UpDataCEIDRecipeRecord(CWafer * pWafer)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
CRecipe Recipe = pWafer->m_WaferRecipe;
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Recipe_Name = Recipe.m_RecipeName;
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Sub_Recipe_Name = Recipe.GetCurSubRecipeName();
|
|
|
|
|
|
|
|
CRecipeParameter RecipePar;
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_LASER_FRE);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Laser1Frequency = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_LASER2_FRE);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Laser2Frequency = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_PRF2_DELAY);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.TwoPulseDelay = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_LASER_CURR_1);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Laser1Current = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_LASER_CURR_2);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Laser2Current = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_LASER_EDI_1);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Laser1Edi = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_LASER_EDI_2);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Laser2Edi = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_EDI_CHECK_SCOPE);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.EdiCheckScope = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_OVERLAP_RATIO_X);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.OverlapX = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_OVERLAP_RATIO_Y);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.OverlapY = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_FOCUS_ADJUST_VAL);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.FoucsAdjustVal = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_FIX_SCAN_SPEED);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.FixScanSpeed = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_FIX_SCAN_LINE_GAP);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.FixScanLineGap = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_SCAN_AREA);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.ScanArea = RecipePar.m_ParStrVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_AREA_IDX);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.AreaIdx = Int2CString(RecipePar.m_ParIntVal);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_N2_STATE);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.N2 = RecipePar.m_ParBoolVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_LASER_EDI_OFFSET_1);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Laser1EdiOffset = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_LASER_EDI_OFFSET_2);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.Laser2EdiOffset = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_SCAN_LINE_START_IDX);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.StartScanLineIdx = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_ALIGNER_ANG);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.WaferAlignerAngle = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_OFFSET_TAB);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.OffsetTable = RecipePar.m_ParStrVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_RUNTIMES);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.RunTimes = RecipePar.m_ParIntVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_N2_VAL);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.N2VAL = RecipePar.m_ParDoubleVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_USE_CUR_N2VAL);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.USECURN2VAL = RecipePar.m_ParBoolVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RecipePar = Recipe.GetRecipePar(RECIPE_PAR_NAME_CASSETTE_TIER_COUNT);
|
|
|
|
|
|
|
|
m_CurCEIDRecipeRecord.CassetteTierCout = RecipePar.m_ParIntVal;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if 1
|
|
|
|
#if 1
|
|
|
|
//初始化变量svid
|
|
|
|
//初始化变量svid
|
|
|
@ -1735,6 +1842,36 @@ const char* CSemiSecsCommMgr::OnSecsGetVidVarValue(int varID)
|
|
|
|
result = gTransferArmMgr->IsCurCassetteLayer(_LoadPortType_Port2) ? ("13") : ("25");
|
|
|
|
result = gTransferArmMgr->IsCurCassetteLayer(_LoadPortType_Port2) ? ("13") : ("25");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//µ±Ç°¹¤ÒÕRecipe
|
|
|
|
|
|
|
|
case 50201:result = m_CurCEIDRecipeRecord.Recipe_Name; break;
|
|
|
|
|
|
|
|
case 50202:result = m_CurCEIDRecipeRecord.Sub_Recipe_Name; break;
|
|
|
|
|
|
|
|
case 50203:result = Db2CString(m_CurCEIDRecipeRecord.Laser1Frequency); break;
|
|
|
|
|
|
|
|
case 50204:result = Db2CString(m_CurCEIDRecipeRecord.Laser2Frequency); break;
|
|
|
|
|
|
|
|
case 50205:result = Db2CString(m_CurCEIDRecipeRecord.TwoPulseDelay); break;
|
|
|
|
|
|
|
|
case 50206:result = Db2CString(m_CurCEIDRecipeRecord.Laser1Current); break;
|
|
|
|
|
|
|
|
case 50207:result = Db2CString(m_CurCEIDRecipeRecord.Laser2Current); break;
|
|
|
|
|
|
|
|
case 50208:result = Db2CString(m_CurCEIDRecipeRecord.Laser1Edi); break;
|
|
|
|
|
|
|
|
case 50209:result = Db2CString(m_CurCEIDRecipeRecord.Laser2Edi); break;
|
|
|
|
|
|
|
|
case 50210:result = Db2CString(m_CurCEIDRecipeRecord.EdiCheckScope); break;
|
|
|
|
|
|
|
|
case 50211:result = Db2CString(m_CurCEIDRecipeRecord.OverlapX); break;
|
|
|
|
|
|
|
|
case 50212:result = Db2CString(m_CurCEIDRecipeRecord.OverlapY); break;
|
|
|
|
|
|
|
|
case 50213:result = Db2CString(m_CurCEIDRecipeRecord.FoucsAdjustVal); break;
|
|
|
|
|
|
|
|
case 50214:result = Db2CString(m_CurCEIDRecipeRecord.FixScanSpeed); break;
|
|
|
|
|
|
|
|
case 50215:result = Db2CString(m_CurCEIDRecipeRecord.FixScanLineGap); break;
|
|
|
|
|
|
|
|
case 50216:result = m_CurCEIDRecipeRecord.ScanArea; break;
|
|
|
|
|
|
|
|
case 50217:result = m_CurCEIDRecipeRecord.AreaIdx; break;
|
|
|
|
|
|
|
|
case 50218:result = Bool2CStringOnOff(m_CurCEIDRecipeRecord.N2); break;
|
|
|
|
|
|
|
|
case 50219:result = Db2CString(m_CurCEIDRecipeRecord.Laser1EdiOffset); break;
|
|
|
|
|
|
|
|
case 50220:result = Db2CString(m_CurCEIDRecipeRecord.Laser2EdiOffset); break;
|
|
|
|
|
|
|
|
case 50221:result = Int2CString(m_CurCEIDRecipeRecord.StartScanLineIdx); break;
|
|
|
|
|
|
|
|
case 50222:result = Db2CString(m_CurCEIDRecipeRecord.WaferAlignerAngle); break;
|
|
|
|
|
|
|
|
case 50223:result = m_CurCEIDRecipeRecord.OffsetTable; break;
|
|
|
|
|
|
|
|
case 50224:result = Int2CString(m_CurCEIDRecipeRecord.RunTimes); break;
|
|
|
|
|
|
|
|
case 50225:result = Db2CString(m_CurCEIDRecipeRecord.N2VAL); break;
|
|
|
|
|
|
|
|
case 50226:result = Bool2CStringOnOff(m_CurCEIDRecipeRecord.USECURN2VAL); break;
|
|
|
|
|
|
|
|
case 50227:result = Int2CString(m_CurCEIDRecipeRecord.CassetteTierCout); break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif//给Event Report 用的值------------END
|
|
|
|
#endif//给Event Report 用的值------------END
|
|
|
|
default:result.Format("error variable %d, please contact the engineer", varID);//未定义的id
|
|
|
|
default:result.Format("error variable %d, please contact the engineer", varID);//未定义的id
|
|
|
|
}
|
|
|
|
}
|
|
|
|