副机切割时报数据异常.

master
bestlqiang 4 years ago
parent fc90849764
commit 4017478e3a

@ -1078,6 +1078,7 @@ bool CCommonFlowMgr::MultipleAreaMark(CProduct &Product, bool bSel)
gLogMgr->WriteDebugLog("Fuc---->MultipleAreaMa/rk : bSel = " + Bool2Str(bSel)); gLogMgr->WriteDebugLog("Fuc---->MultipleAreaMa/rk : bSel = " + Bool2Str(bSel));
//搜集加工数据(这里比较耗费时间) //搜集加工数据(这里比较耗费时间)
try try
{ {
gMarkAreaMgr->CollectWorkData(bSel, Product); gMarkAreaMgr->CollectWorkData(bSel, Product);
@ -1088,7 +1089,12 @@ bool CCommonFlowMgr::MultipleAreaMark(CProduct &Product, bool bSel)
gServer->BroadCast("副机收集数据异常!Exception! "); gServer->BroadCast("副机收集数据异常!Exception! ");
return false; 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;

@ -474,7 +474,10 @@ void CProduct::TheoryDataToRealData(vector<Dbxy> &vec, Dbxy &AreaCenter, Dbxy Cu
if (abs(iter->x)>DataRange||abs(iter->y)>DataRange) if (abs(iter->x)>DataRange||abs(iter->y)>DataRange)
{ {
CExceptionMsg msg; CExceptionMsg msg;
msg.SetMsg(CString("标刻数据异常,超出校准范围!")); 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; 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();
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Catch_mark_End); if (!m_bLogicErr )
{
CString str = "EXECMD_OK;";
Send(str, str.GetLength());
gLogMgr->WriteDebugLog("Send: " + str);
}
return CSocket::OnReceive(nErrorCode);
} }
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);

@ -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);

Loading…
Cancel
Save