点检功能优化

main
wyj 3 months ago
parent db61e8feaf
commit 5c5b332711

@ -210,6 +210,9 @@ void CLaserPowCheckMgr::UpdatePowCheckDataList()
PowCheckValSum.m_LaserPathPow += PowCheckVal.m_LaserPathPow;
PowCheckValSum.m_SurfacePow += PowCheckVal.m_SurfacePow;
PowCheckValSum.m_PulseWidth += PowCheckVal.m_PulseWidth;
PowCheckValSum.m_Pk2pk += PowCheckVal.m_Pk2pk;
PowCheckValSum.m_Mean += PowCheckVal.m_Mean;
PowCheckValSum.m_Amplitude += PowCheckVal.m_Amplitude;
}
}
if(ValidValCnt>0)
@ -221,6 +224,9 @@ void CLaserPowCheckMgr::UpdatePowCheckDataList()
PowCheckValAvg.m_LaserPathPow = PowCheckValSum.m_LaserPathPow/ValidValCnt;
PowCheckValAvg.m_SurfacePow = PowCheckValSum.m_SurfacePow/ValidValCnt;
PowCheckValAvg.m_PulseWidth = PowCheckValSum.m_PulseWidth/ValidValCnt;
PowCheckValAvg.m_Pk2pk = PowCheckValSum.m_Pk2pk / ValidValCnt;
PowCheckValAvg.m_Mean = PowCheckValSum.m_Mean / ValidValCnt;
PowCheckValAvg.m_Amplitude = PowCheckValSum.m_Amplitude / ValidValCnt;
}
}
@ -264,8 +270,8 @@ void CLaserPowCheckMgr::UpdatePowCheckDataListExtExt(CListCtrl &List,bool bInser
//数据显示平均值
List.SetItemText(i,idx++,Db2CString(PowCheckValAvg.m_SurfacePow,2));
List.SetItemText(i,idx++,Db2CString(PowCheckValAvg.m_LaserPathPow,2));
List.SetItemText(i,idx++,Db2CString(PowCheckValAvg.m_LaserSourcePow2,2));
List.SetItemText(i,idx++,Db2CString(PowCheckValAvg.m_LaserSourcePow1,2));
List.SetItemText(i,idx++,Db2CString(PowCheckValAvg.m_LaserSourcePow2,2));
List.SetItemText(i,idx++,Db2CString(PowCheckValAvg.m_PulseWidth,2));
}
}
@ -512,6 +518,8 @@ bool CLaserPowCheckMgr::SaveCurPowCheckData(bool bRotatoDimmerMode)
FileMgr.CreatDir(FilePath);//创建年文件夹
CPowCheckData &CurPowCheckData = m_CurPowCheckData;
CurPowCheckData.m_bCheckDataValid = true;
CurPowCheckData.m_DateTime = WorkTime.GetCurMonth();//记录时间
CurPowCheckData.m_DateTime += "_";
CurPowCheckData.m_DateTime += WorkTime.GetCurDay();
@ -538,11 +546,11 @@ bool CLaserPowCheckMgr::SaveCurPowCheckData(bool bRotatoDimmerMode)
CheckPt.m_LaserFre = CurPowCheckData.m_LaserFre;
CheckPt.m_LaserType = CurPowCheckData.m_CheckType;
}
//保存到LaipuLaserData\\LaserPowerCheckData
SavePowCheckDataFlie(FilePath, CurPowCheckData, true);
//衰减器点检模式不要记录普通的点检数据
if(!bRotatoDimmerMode)
{
//保存到LaipuLaserData\\LaserPowerCheckData
SavePowCheckDataFlie(FilePath,CurPowCheckData,true);
//保存激光功率对应表(衰减器用)
SaveLaserFixedCurrentPowFile();
//记录最近一次的信息
@ -553,8 +561,8 @@ bool CLaserPowCheckMgr::SaveCurPowCheckData(bool bRotatoDimmerMode)
if(CurPowCheckData.m_CheckType == _LaserDeviceType_MainLaser2)
m_LastPow2CheckData = CurPowCheckData;
}
//记录Fre 对应的K和P0
gLaser->SetEnergyDensityPar(CurPowCheckData.m_CheckType,CurPowCheckData.m_LaserFre,CurPowCheckData.m_EnergyDensityK,CurPowCheckData.m_EnergyDensityPo);
//将当前的点检结果用作recipe 计算依据
gLaserPowCheckMgr->SaveCurPowCheckDataForRecipe();
}
//详细数据保存到LaipuLaserData\\MonitoringData\\CheckData
SaveMonitoringCheckData(CurPowCheckData,bRotatoDimmerMode);
@ -571,19 +579,55 @@ void CLaserPowCheckMgr::SaveMonitoringCheckData(CPowCheckData &PowCheckData,bool
CString DataPath = gAnnealMonitoringMgr->CreatCurCheckDataPath();
CFileMgr FileMgr;
//输出一个总的结果
if(!bRotatoDimmerMode)
{
CCsvData CsvData;
CsvData.AddData("点检类型",false);
CsvData.AddData(CheckType,true);
CsvData.AddData("时间",false);
CsvData.AddData(PowCheckData.m_DateTime,true);
CsvData.AddData("斜率K",false);
CsvData.AddData(Db2CString(PowCheckData.m_EnergyDensityK),true);
CsvData.AddData("截距Po",false);
CsvData.AddData(Db2CString(PowCheckData.m_EnergyDensityPo),true);
CsvData.AddData("脉冲频率Hz",false);
CsvData.AddData(Db2CString(PowCheckData.m_LaserFre),true);
if(!bRotatoDimmerMode)
{
CsvData.AddData("斜率K",false);
CsvData.AddData(Db2CString(PowCheckData.m_EnergyDensityK),true);
CsvData.AddData("截距Po",false);
CsvData.AddData(Db2CString(PowCheckData.m_EnergyDensityPo),true);
}
//输出所有平均数据
{
CsvData.AddData("电流A",false);
CsvData.AddData("衰减角度",false);
CsvData.AddData("出光口功率计1W",false);
CsvData.AddData("出光口功率计2W",false);
CsvData.AddData("光路功率计W",false);
CsvData.AddData("平台功率值W",false);
CsvData.AddData("脉冲宽度ns",false);
CsvData.AddData("脉冲峰峰值",false);
CsvData.AddData("脉冲平均值",false);
CsvData.AddData("脉冲幅度值",true);
vector<CPowCheckPt> &PowCheckPtVec = PowCheckData.m_PowCheckPtVec;
int PtCnt = PowCheckPtVec.size();
for(int k=0;k<PtCnt;k++)
{
CPowCheckPt &CheckPt = PowCheckPtVec[k];
CPowCheckVal &PowCheckValAvg = CheckPt.m_PowCheckValAvg;
CString SetCurrStr = Db2CString(CheckPt.m_SetCurr);
CString SetAngStr = Db2CString(CheckPt.m_RotatoDimmerAng);
CCsvData CsvData;
CsvData.AddData(SetCurrStr,false);
CsvData.AddData(SetAngStr,false);
CsvData.AddData(Db2CString(PowCheckValAvg.m_LaserSourcePow1),false);
CsvData.AddData(Db2CString(PowCheckValAvg.m_LaserSourcePow2),false);
CsvData.AddData(Db2CString(PowCheckValAvg.m_LaserPathPow),false);
CsvData.AddData(Db2CString(PowCheckValAvg.m_SurfacePow),false);
CsvData.AddData(Db2CString(PowCheckValAvg.m_PulseWidth),false);
CsvData.AddData(Db2CString(PowCheckValAvg.m_Pk2pk),false);
CsvData.AddData(Db2CString(PowCheckValAvg.m_Mean),false);
CsvData.AddData(Db2CString(PowCheckValAvg.m_Amplitude),true);
}
}
CString s = FileName+"Result";
FileMgr.WriteDataToExcel(DataPath,s,CsvData);
}
@ -666,6 +710,7 @@ void CLaserPowCheckMgr::SaveCurPowCheckDataForRecipe()
MsgBox.Show("需要先进行点检");
return;
}
#if 0
//先读取原来的
vector<CPowCheckPt> PowCheckPtPowCheckPVec;
ReadLaserFixedCurrentPowFile(PowCheckPtPowCheckPVec);
@ -683,6 +728,12 @@ void CLaserPowCheckMgr::SaveCurPowCheckDataForRecipe()
}
}
#endif
if (MsgBox.ConfirmOkCancel("是否应用当前的点检记录K和Po作为recipe计算依据?"))
{
//记录Fre 对应的K和P0 (Edi-->Current用)
gLaser->SetEnergyDensityPar(m_CurPowCheckData.m_CheckType, m_CurPowCheckData.m_LaserFre, m_CurPowCheckData.m_EnergyDensityK, m_CurPowCheckData.m_EnergyDensityPo);
}
}
//读取固定电流功率对应表
void CLaserPowCheckMgr::ReadLaserFixedCurrentPowFile(vector<CPowCheckPt> &PowCheckPtPowCheckPVec)
@ -867,16 +918,21 @@ void CLaserPowCheckMgr::ReadPowCheckDataFlie(CString Path,CPowCheckData &PowChec
for(int k=1;k<LineCnt;k++)
{
vector<CString> StrLine = StrVec[k];
if(StrLine.size()==6)
int Idx = 0;
if(StrLine.size()>=6)
{
CPowCheckPt CheckPt;
CPowCheckVal &PowCheckValAvg = CheckPt.m_PowCheckValAvg;
CheckPt.m_SetCurr = CStringToDouble(StrLine[0]);
PowCheckValAvg.m_LaserSourcePow1 = CStringToDouble(StrLine[1]);
PowCheckValAvg.m_LaserSourcePow2 = CStringToDouble(StrLine[2]);
PowCheckValAvg.m_LaserPathPow = CStringToDouble(StrLine[3]);
PowCheckValAvg.m_SurfacePow = CStringToDouble(StrLine[4]);
PowCheckValAvg.m_PulseWidth = CStringToDouble(StrLine[5]);
CheckPt.m_SetCurr = CStringToDouble(StrLine[Idx++]);
if(StrLine.size()>= 7)
CheckPt.m_RotatoDimmerAng = CStringToDouble(StrLine[Idx++]);
PowCheckValAvg.m_LaserSourcePow1 = CStringToDouble(StrLine[Idx++]);
PowCheckValAvg.m_LaserSourcePow2 = CStringToDouble(StrLine[Idx++]);
PowCheckValAvg.m_LaserPathPow = CStringToDouble(StrLine[Idx++]);
PowCheckValAvg.m_SurfacePow = CStringToDouble(StrLine[Idx++]);
PowCheckValAvg.m_PulseWidth = CStringToDouble(StrLine[Idx++]);
PowCheckData.m_PowCheckPtVec.push_back(CheckPt);
}
}
@ -898,6 +954,7 @@ void CLaserPowCheckMgr::SavePowCheckDataFlie(CString Path,CPowCheckData &PowChec
CPowCheckPt &CheckPt = PowCheckPtVec[k];
CPowCheckVal &PowCheckValAvg = CheckPt.m_PowCheckValAvg;
FileStream << CheckPt.m_SetCurr<<",";
FileStream << CheckPt.m_RotatoDimmerAng << ",";
FileStream<<PowCheckValAvg.m_LaserSourcePow1<<",";
FileStream<<PowCheckValAvg.m_LaserSourcePow2<<",";
FileStream<<PowCheckValAvg.m_LaserPathPow<<",";
@ -1012,6 +1069,8 @@ void CLaserPowCheckMgr::SaveSelCheckRecordToFile()
ar<<"斜率K : "<<K<<" 截距Po : "<<Po<<'\n'<<'\n';
ar<<"电流(A)";
ar<<TAB_STR;
ar << "衰减器角度";
ar << TAB_STR;
ar<<"出光口功率(W)";
ar<<TAB_STR;
ar<<"光路功率(W)";
@ -1032,6 +1091,8 @@ void CLaserPowCheckMgr::SaveSelCheckRecordToFile()
double CalPower = gLaser->CalPowerByDensityPar(Po,K,CheckPt.m_SetCurr);
ar<<Db2CString(CheckPt.m_SetCurr);
ar<<TAB_STR;
ar << Db2CString(CheckPt.m_RotatoDimmerAng);
ar << TAB_STR;
ar<<Db2CString(PowCheckValAvg.m_LaserSourcePow1,2);
ar<<TAB_STR;
ar<<Db2CString(PowCheckValAvg.m_LaserSourcePow2,2);

Loading…
Cancel
Save