合并代码

master
bestlqiang 4 years ago
commit 45b17460db

@ -1075,10 +1075,26 @@ void CCommonFlowMgr::MoveToFirstArea()
//大幅面拼接打标(平台移动,振镜拼接,数据为obj 对象) (bSel ==true 的时候为选择打标) //大幅面拼接打标(平台移动,振镜拼接,数据为obj 对象) (bSel ==true 的时候为选择打标)
bool CCommonFlowMgr::MultipleAreaMark(CProduct &Product, bool bSel) bool CCommonFlowMgr::MultipleAreaMark(CProduct &Product, bool bSel)
{ {
gLogMgr->WriteDebugLog("Fuc---->MultipleAreaMark : bSel = " + Bool2Str(bSel)); gLogMgr->WriteDebugLog("Fuc---->MultipleAreaMa/rk : bSel = " + Bool2Str(bSel));
//搜集加工数据(这里比较耗费时间) //搜集加工数据(这里比较耗费时间)
gMarkAreaMgr->CollectWorkData(bSel, Product);
try
{
gMarkAreaMgr->CollectWorkData(bSel, Product);
}
catch (CExceptionMsg msg)
{
AfxMessageBox(msg.GetMsgStr());
gServer->BroadCast("副机收集数据异常!Exception! ");
return false;
}
gServer->m_bLogicErr = false;
CString str = "READY";
gServer->BroadCast(str);
gLogMgr->WriteDebugLog(str);
if (!gMarkAreaMgr->HasWorkData()) if (!gMarkAreaMgr->HasWorkData())
return false; return false;

@ -119,6 +119,7 @@ private:
bool m_bUseLaser;//是否开关激光 bool m_bUseLaser;//是否开关激光
//振镜校准参数-------------------------------------------------------------- //振镜校准参数--------------------------------------------------------------
double m_CalibrationPointGap;//打点之间的间隔mm double m_CalibrationPointGap;//打点之间的间隔mm
public:
double m_CalibrationRange;//振镜校准范围mm double m_CalibrationRange;//振镜校准范围mm
}; };

@ -474,10 +474,10 @@ void CDlgSW_XL_Flow::UpdateCutPar()
m_MarkAreaCutCount = gCommonFlowMgr->GetAreaCycleCnt();//循环次数 m_MarkAreaCutCount = gCommonFlowMgr->GetAreaCycleCnt();//循环次数
m_Jig2PrtOft_x = gCommonFlowMgr->m_Jig2PrtOft.x;//针对产品的切割偏移 m_Jig2PrtOft_x = gCommonFlowMgr->m_Jig2PrtOft.x;//针对产品的切割偏移
m_Jig2PrtOft_x = gCommonFlowMgr->m_Jig2PrtOft.x;//针对产品的切割偏移 m_Jig2PrtOft_y = gCommonFlowMgr->m_Jig2PrtOft.y;//针对产品的切割偏移
m_Jig2PrtOft_x = gCommonFlowMgr->m_Jig4PrtOft.x;//针对产品的切割偏移 m_Jig4PrtOft_x = gCommonFlowMgr->m_Jig4PrtOft.x;//针对产品的切割偏移
m_Jig2PrtOft_x = gCommonFlowMgr->m_Jig4PrtOft.x;//针对产品的切割偏移 m_Jig4PrtOft_y = gCommonFlowMgr->m_Jig4PrtOft.y;//针对产品的切割偏移
{ {
CString path; CString path;
@ -489,10 +489,10 @@ void CDlgSW_XL_Flow::UpdateCutPar()
ar + m_Jig4PrtOft_y; ar + m_Jig4PrtOft_y;
gCommonFlowMgr->m_Jig2PrtOft.x= m_Jig2PrtOft_x;//针对产品的切割偏移 gCommonFlowMgr->m_Jig2PrtOft.x= m_Jig2PrtOft_x;//针对产品的切割偏移
gCommonFlowMgr->m_Jig2PrtOft.x = m_Jig2PrtOft_y;//针对产品的切割偏移 gCommonFlowMgr->m_Jig2PrtOft.y = m_Jig2PrtOft_y;//针对产品的切割偏移
gCommonFlowMgr->m_Jig4PrtOft.x = m_Jig4PrtOft_x;//针对产品的切割偏移 gCommonFlowMgr->m_Jig4PrtOft.x = m_Jig4PrtOft_x;//针对产品的切割偏移
gCommonFlowMgr->m_Jig4PrtOft.x = m_Jig4PrtOft_y;//针对产品的切割偏移 gCommonFlowMgr->m_Jig4PrtOft.y = m_Jig4PrtOft_y;//针对产品的切割偏移
} }

@ -382,6 +382,7 @@ bool CDxfReadMgr::OpenDxfFileDlg(double Angle)
if (!fp) if (!fp)
{ {
gLogMgr->WriteDebugLog("Func : ReadDxfFile ---->Dxf File Open Error!"); gLogMgr->WriteDebugLog("Func : ReadDxfFile ---->Dxf File Open Error!");
//"D:\紫外切割机\同兴达双头-推治具\LaiPuLaser\Debug\TempMarkData\D287.dxf"
return false; return false;
} }
m_LINE.Empty(); m_LINE.Empty();

@ -1008,18 +1008,16 @@ void CObjComponentMgr::CreatObjByLayerObj()
//从obj 中分析出两个定位mark 的位置 //从obj 中分析出两个定位mark 的位置
void CObjComponentMgr::AnalyseMarkPt() void CObjComponentMgr::AnalyseMarkPt()
{ {
return; //return;
//vector<CObjComponent*> MarkVec; //vector<CObjComponent*> MarkVec;
//先找出圆形对象 //先找出圆形对象
{ {
vector<CObjComponent>::iterator iter = m_ComponentVec.begin(); vector<CObjComponent>::iterator iter = m_ComponentVec.begin();
vector<CObjComponent>::iterator iter_end = m_ComponentVec.end(); vector<CObjComponent>::iterator iter_end = m_ComponentVec.end();
for(;iter!=iter_end;) for(;iter!=iter_end;iter++)
{ {
if ((*iter).IsCircle()) if ((*iter).IsCircle())
m_ComponentVec.erase(iter); iter->SetbMarkObj(true);
else
iter++;
} }
} }
/* /*

@ -470,7 +470,16 @@ void CProduct::TheoryDataToRealData(vector<Dbxy> &vec, Dbxy &AreaCenter, Dbxy Cu
(*iter).y += CutAdjust.y; (*iter).y += CutAdjust.y;
} }
auto DataRange = gCommonFlowMgr->m_CalibrationRange / 2;
if (abs(iter->x)>DataRange||abs(iter->y)>DataRange)
{
CExceptionMsg msg;
CString str;
str.Format("x=%.4f y=%.4f \r\n其中偏移调整: dx=%.4f,dy=%.4f", iter->x, iter->y,CutAdjust.x,CutAdjust.y);
msg.SetMsg(CString("标刻数据异常,超出校准范围!\r\n")+str);
throw msg;
}
} }
} }

@ -146,7 +146,9 @@ void CTrackWorkFlow::ExecuteCurStep()
CatchMark();//抓取定位 CatchMark();//抓取定位
break;*/ break;*/
case _ETrack_Step_Catch_mark_End://等待加工 case _ETrack_Step_Catch_mark_End://等待加工
{
MarkProcess();//计算,收集加工数据(服务端) MarkProcess();//计算,收集加工数据(服务端)
}
break; break;
/*case _ETrack_Step_Mark_End://加工完成 /*case _ETrack_Step_Mark_End://加工完成
ThrowEdge();//去边框 ThrowEdge();//去边框
@ -811,15 +813,12 @@ void CTrackWorkFlow::MarkProcess()
gWorkTime.StartRecordTime();//计时开始 gWorkTime.StartRecordTime();//计时开始
//设置当前的工作步骤 //设置当前的工作步骤
SetCurTrackWorkStep(_ETrack_Step_Marking); //SetCurTrackWorkStep(_ETrack_Step_Marking);
//XY 组切换 //XY 组切换
MarkProcessExt(); MarkProcessExt();
CString str = "READY";
gServer->BroadCast(str);
gLogMgr->WriteDebugLog(str);
//设置当前的工作步骤 //设置当前的工作步骤
SetCurTrackWorkStep(_ETrack_Step_Marking); //SetCurTrackWorkStep(_ETrack_Step_Marking);
//数据移动回默认的位置 //数据移动回默认的位置
/* gProgramCutMgr->MoveObjData(Dbxy(0, 0)); /* gProgramCutMgr->MoveObjData(Dbxy(0, 0));
gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0));*/ gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0));*/

@ -87,8 +87,9 @@ private:
void MoveToWaitPos(); void MoveToWaitPos();
void MoveToPos(ETrackWorkStep WorkStep); void MoveToPos(ETrackWorkStep WorkStep);
void MarkProcess(); void MarkProcess();
public:
bool MarkProcessExt(); bool MarkProcessExt();
private:
void ReadPlcMsgExt(); void ReadPlcMsgExt();
void AnalyzeRecvCmd(char *buf,int len); void AnalyzeRecvCmd(char *buf,int len);
void ThrowEdge(); void ThrowEdge();

@ -202,18 +202,32 @@ void CServerMgr::OnReceive(int nErrorCode)
gServer->m_RcvProduct.m_p11 = dvec[4]; gServer->m_RcvProduct.m_p11 = dvec[4];
gServer->m_RcvProduct.m_p12 = dvec[5]; gServer->m_RcvProduct.m_p12 = dvec[5];
//gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Catch_mark_End);
gTrackWorkFlow1.MarkProcessExt();
if (!m_bLogicErr )
{
CString str = "EXECMD_OK;";
Send(str, str.GetLength());
gLogMgr->WriteDebugLog("Send: " + str);
}
return CSocket::OnReceive(nErrorCode);
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Catch_mark_End);
} }
if (RcvStr.Find(ACTION_COLLECT) != -1) //ÊÕ¼¯Êý¾Ý. if (RcvStr.Find(ACTION_COLLECT) != -1) //ÊÕ¼¯Êý¾Ý.
{ {
gServer->m_bLogicErr = true;
gMarkAreaMgr->CollectOrgWorkData(gProgram_SZ_XL->IsbSelMarkMode(), gServer->m_RcvProduct); gMarkAreaMgr->CollectOrgWorkData(gProgram_SZ_XL->IsbSelMarkMode(), gServer->m_RcvProduct);
gLogMgr->WriteDebugLog(ACTION_COLLECT + "OK"); gLogMgr->WriteDebugLog(ACTION_COLLECT + "OK");
} }
if (RcvStr.Find(ACTION_STARTWORK) != -1) //Æô¶¯¼Ó¹¤ if (RcvStr.Find(ACTION_STARTWORK) != -1) //Æô¶¯¼Ó¹¤
{ {
if (m_bLogicErr)
return CSocket::OnReceive(nErrorCode);
int sPos = RcvStr.ReverseFind(';'); int sPos = RcvStr.ReverseFind(';');
int ePos = RcvStr.GetLength(); int ePos = RcvStr.GetLength();
CString Index = RcvStr.Mid(sPos + 1, ePos - sPos - 1); CString Index = RcvStr.Mid(sPos + 1, ePos - sPos - 1);
@ -259,7 +273,7 @@ void CServerMgr::OnReceive(int nErrorCode)
if (rcvcnt!= arryCnt*(sizeof(int))) if (rcvcnt!= arryCnt*(sizeof(int)))
{ {
gLogMgr->WriteDebugLog("接收已选中Obj索引数组错误"); gLogMgr->WriteDebugLog("接收已选中Obj索引数组错误.");
} }
int idx; int idx;

@ -87,6 +87,7 @@ public:
int m_RcvCurTrackIndex; //接收到的当前加工轨道 int m_RcvCurTrackIndex; //接收到的当前加工轨道
int m_curAreaDataCnt = 0; //当前加工区域数据量. int m_curAreaDataCnt = 0; //当前加工区域数据量.
static vector<CServerMgr*> ServerVec;//服务员的容器 static vector<CServerMgr*> ServerVec;//服务员的容器
bool m_bLogicErr = true;
private: private:
virtual void OnAccept(int nErrorCode); virtual void OnAccept(int nErrorCode);
virtual void OnClose(int nErrorCode); virtual void OnClose(int nErrorCode);

Binary file not shown.
Loading…
Cancel
Save