红色软件Recipe详细参数介绍

main
wklyj 6 months ago
parent 8aa2d662e9
commit e1781eca52

1
.gitignore vendored

@ -12,3 +12,4 @@
/LaipuDrawing/hlp/LaiPuLaser.chm
/LaiPuLaser/LaiPuLaser/Debug
/LaiPuLaser/Debug
*.ipch

@ -67,6 +67,7 @@ BEGIN_MESSAGE_MAP(CDlgChildRecipe, CMyDlgView)
ON_BN_CLICKED(IDC_RCP_HISTORY_BTN, &CDlgChildRecipe::OnBnClickedRcpHistoryBtn)
ON_BN_CLICKED(IDC_RCP_OFFSET_TAB, &CDlgChildRecipe::OnBnClickedRcpOffsetTab)
ON_BN_CLICKED(NEW_UPDATE_RECIPE_BTN, &CDlgChildRecipe::OnBnClickedUpdateRecipeBtn)
ON_NOTIFY(NM_CLICK, NEW_EDIT_RECIPE_INFO_LIST, &CDlgChildRecipe::OnNMClickEditRecipeInfoList)
END_MESSAGE_MAP()
@ -575,6 +576,11 @@ void CDlgChildRecipe::OnNMClickEditRecipeList(NMHDR *pNMHDR, LRESULT *pResult)
}
}
}
//响应参数详细信息
{
CString Str = gRecipeMgr->GetShowParText(Row);
GetDlgItem(IDC_ShowSubRcpInfo)->SetWindowText(Str);
}
}
}
//Edit 离焦的时候更新为list 的值
@ -701,3 +707,21 @@ void CDlgChildRecipe::OnBnClickedUpdateRecipeBtn()
OnCbnSelchangeNewRecipeGroupCombo();
}
}
void CDlgChildRecipe::OnNMClickEditRecipeInfoList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
int Row = pNMListView->iItem;
if (Row >= 0)//行号
{
//响应参数详细信息
{
CString Str = gRecipeMgr->GetShowParText(Rcp_CalInfo_Start_Idx + Row);
GetDlgItem(IDC_ShowSubRcpInfo)->SetWindowText(Str);
}
}
}

@ -99,4 +99,5 @@ public:
afx_msg void OnBnClickedRcpHistoryBtn();
afx_msg void OnBnClickedRcpOffsetTab();
afx_msg void OnBnClickedUpdateRecipeBtn();
afx_msg void OnNMClickEditRecipeInfoList(NMHDR *pNMHDR, LRESULT *pResult);
};

Binary file not shown.

Binary file not shown.

@ -89,6 +89,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 1000;//默认值
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_FRE);
RecipePar.m_DetailInfo = "激光1频率一秒内激光脉冲个数";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -100,6 +101,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 1000;//默认值
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_FRE);
RecipePar.m_DetailInfo = "激光2频率一秒内激光脉冲个数";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -111,6 +113,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_PULSE_DELAY);
RecipePar.m_DetailInfo = "双脉冲延时:激光器脉冲延时时间";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -122,6 +125,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_CURR_1);
RecipePar.m_DetailInfo = "Laser1电流值:工艺设置电流值";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -133,6 +137,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_CURR_2);
RecipePar.m_DetailInfo = "Laser2电流值:工艺设置电流值";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -144,6 +149,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_EDI_1);
RecipePar.m_DetailInfo = "Laser1目标功率密度 最终的edi还要加上Laser Edi Offset和补偿表中的Laser Edi Offset值";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -155,6 +161,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_EDI_2);
RecipePar.m_DetailInfo = "Laser2目标功率密度 最终的edi还要加上Laser Edi Offset和补偿表中的Laser Edi Offset值";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -166,6 +173,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = -2;
RecipePar.m_DoubleMaxVal = 2;
RecipePar.m_DetailInfo = "Laser1目标功率密度补偿";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -177,6 +185,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = -2;
RecipePar.m_DoubleMaxVal = 2;
RecipePar.m_DetailInfo = "Laser2目标功率密度补偿";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -188,6 +197,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = 5;
RecipePar.m_DetailInfo = "功率密度复检卡控范围等于0表示不进行复检大于表示要进行复检且复检调整后的功率密度在这个误差范围之内";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -199,6 +209,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = 99;
RecipePar.m_DetailInfo = "X方向光斑重叠率会影响X方向扫描速度的计算值";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -210,6 +221,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = 99;
RecipePar.m_DetailInfo = "Y方向光斑重叠率会影响Y方向移动间隔";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -221,6 +233,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MIN_FOCUS_ADJUST);
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_FOCUS_ADJUST);
RecipePar.m_DetailInfo = "Z轴焦距微调值用于工艺前Z轴在目前设置的激光焦距点上下进行微调";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -232,6 +245,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MIN_SCAN_SPEED);
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_SCAN_SPEED);
RecipePar.m_DetailInfo = "固定扫描速度等于0时无效大于0时X方向光斑重叠率无效工艺过程中将使用这个速度值作为X方向的扫描速度";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -243,6 +257,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_FIX_SCAN_LINE_GAP);
RecipePar.m_DetailInfo = "固定扫描间隔等于0时无效大于0时Y方向光斑重叠率无效工艺过程中将使用这个值作为Y方向的扫描移动间隔";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -254,6 +269,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 0;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = 100000;
RecipePar.m_DetailInfo = "扫描线的起始索引值表示从第几根线开始扫描用于补打wafer";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -265,6 +281,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = 270;
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = 360;
RecipePar.m_DetailInfo = "wafer准直角度用于控制wafer放到stage上的notch方向多subrcp的情况第一个sub的值为有效值";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -284,6 +301,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParDoubleVal = m_MinVal;
RecipePar.m_DoubleMinVal = m_MinVal;
RecipePar.m_DoubleMaxVal = m_MaxVal;
RecipePar.m_DetailInfo = "MFC流量控制值MFC控制N2流量值";
m_RecipeParVec.push_back(RecipePar);
}
//下拉框参数------------------------------------------------
@ -292,6 +310,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParName = RECIPE_PAR_NAME_SCAN_AREA;
RecipePar.m_ParShowName = "Scan Area";
RecipePar.m_ParType = _RecipeParType_CString;//参数的类型
RecipePar.m_DetailInfo = "扫描区域文件名称:用于指定扫描区域的图形文件,确定扫描的范围";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -300,6 +319,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParShowName = "Area Idx";
RecipePar.m_ParType = _RecipeParType_Int;//参数的类型
RecipePar.m_ParIntVal = 1;
RecipePar.m_DetailInfo = "扫描区域编号扫描区域文件中包含多个扫描区域时每个sub rcp只能选择一个区域编号进行工艺";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -308,6 +328,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParShowName = "N2";
RecipePar.m_ParType = _RecipeParType_Bool;//参数的类型
RecipePar.m_ParBoolVal = true;
RecipePar.m_DetailInfo = "N2开关控制退火过程中是否自动打开N2";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -316,6 +337,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParShowName = "Use CurN2Val";
RecipePar.m_ParType = _RecipeParType_Bool;//参数的类型
RecipePar.m_ParBoolVal = false;
RecipePar.m_DetailInfo = "MFC控制开关是否使用recipe的MFC流量控制值";
m_RecipeParVec.push_back(RecipePar);
}
#ifdef __OFFSET_TABLE__
@ -325,6 +347,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParShowName = "Offset Table";
RecipePar.m_ParType = _RecipeParType_CString;//参数的类型
RecipePar.m_ParStrVal = RECIPE_OFFSET_TBL_NULL;
RecipePar.m_DetailInfo = "补偿表的名称用于link指定的补偿表可以补偿edi和激光电流值";
m_RecipeParVec.push_back(RecipePar);
}
#endif
@ -335,6 +358,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_ParShowName = "Run Times";
RecipePar.m_ParType = _RecipeParType_Int;//参数的类型
RecipePar.m_ParIntVal = 1;//默认值
RecipePar.m_DetailInfo = "工艺运行次数正常设置为1大于1时表示跑cycle多subrcp的情况第一个sub的值为有效值";
m_RecipeParVec.push_back(RecipePar);
}
@ -350,6 +374,8 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_POW_1);
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
//RecipePar.m_DetailInfo = "Laser1功率值1.Laser固定电流为0时根据edi自动计算 2.Laser固定电流大于0时在功率点检表中查找对应的功率值用于计算衰减角度";
RecipePar.m_DetailInfo = "Laser1功率值在功率点检表中查找对应的功率值用于计算衰减角度";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -362,6 +388,8 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_POW_2);
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
//RecipePar.m_DetailInfo = "Laser2功率值1.Laser固定电流为0时根据edi自动计算 2.Laser固定电流大于0时在功率点检表中查找对应的功率值用于计算衰减角度";
RecipePar.m_DetailInfo = "Laser2功率值在功率点检表中查找对应的功率值用于计算衰减角度";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -374,6 +402,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_DoubleMinVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MIN_SCAN_SPEED);
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_SCAN_SPEED);
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
RecipePar.m_DetailInfo = "X方向扫描速度固定扫描速度等于0时由X方向重叠率计算得出固定扫描速度大于0时等于固定扫描速度";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -386,6 +415,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_DIMMER_ANG_1);
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
RecipePar.m_DetailInfo = "Laser1衰减角度由edi频率功率计算得出的衰减器角度固定电流值大于0才会生效";
m_RecipeParVec.push_back(RecipePar);
}
{
@ -398,6 +428,7 @@ void CSubRecipe::IntiRecipeParVec()
RecipePar.m_DoubleMinVal = 0;
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_DIMMER_ANG_2);
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
RecipePar.m_DetailInfo = "Laser2衰减角度由edi频率功率计算得出的衰减器角度固定电流值大于0才会生效";
m_RecipeParVec.push_back(RecipePar);
}
#endif
@ -2467,4 +2498,17 @@ CString CRecipeMgr::GetOffsetTablePath(CString TabName)
}
#endif
CString CRecipeMgr::GetShowParText(int Row)
{
CString str = "";
vector<CSubRecipe> &SubRecipeVec = m_CurEditRecipe.GetSubRecipeVec();
int size = SubRecipeVec.size();
if (size <= 0)
{
str = "无有效Recipe";
}
str = SubRecipeVec[0].m_RecipeParVec[Row].m_DetailInfo;
return str;
}
#endif

@ -68,6 +68,7 @@ public:
m_ListItemWidht = 100;//列表宽度
m_bRcpInfoPar = false;//是否为计算参数(不能被编辑)
m_ParUnit = "/";//参数的单位,用于显示
m_DetailInfo = "未定义";
};
CString GetParStr();
void SetValByStr(CString s);
@ -90,6 +91,8 @@ public:
bool m_bRcpInfoPar;//是否为计算参数(不能被编辑)
CString m_ParUnit;//参数的单位,用于显示
CString m_DetailInfo;//详细参数信息
};
class CRecipeCtrlItem
@ -267,6 +270,7 @@ public:
void UpdateLaserFocusProp();
void UpdateRecipeGroupInfo();
CString GetOffsetTablePath(CString TabName);
CString GetShowParText(int Row);
private:
CString GetGroupDirPath(int GroupIdx);
CString GetRecipeNameListPath();

Binary file not shown.
Loading…
Cancel
Save