同兴达双头-推治具
bestlqiang 4 years ago
parent eb70e2a64f
commit 453f3ba748

@ -453,6 +453,10 @@ Dbxy CCamera::CCDcoord2Platformcoord(Dbxy CCDpt)
LogStr.Format(_T("[CameraCoord.x] = [%0.3f] ,[CameraCoord.y] = [%0.3f]"),CameraCoord.x,CameraCoord.y);
gLogMgr->WriteDebugLog(LogStr);
Dbxy PlatformPt = gPlatformXY->GetCoord();
if (gLogMgr->IsDebuging())
{
PlatformPt=gLogMgr->LastTargetCoord;
}
LogStr.Format(_T("[PlatformCoord.x] = [%0.3f] ,[PlatformCoord.y] = [%0.3f]"),PlatformPt.x,PlatformPt.y);
gLogMgr->WriteDebugLog(LogStr);
CameraCoord.x = CameraCoord.x - PlatformPt.x;

@ -178,8 +178,6 @@ bool CCameraHawkvis::CatchPoint(Dbxy &pt)
m_HawkvisCtrl->ClearGraphicObject();
//ץȡһ֡
#ifdef __HAWKVIS_MINDVISION_CCD__
m_HawkvisCtrl->MV_GetOneFrame();
Sleep(100);
if (!m_HawkvisCtrl->MV_GetOneFrame())
#else
if (!m_HawkvisCtrl->HV_GetOneFrame())

@ -117,12 +117,24 @@ BOOL DlgHawkvisCamera::OnInitDialog()
m_HawkvisCtrl1.MV_SetCameraExpTime(gCameraHawkvis->m_nCam1Expore);
m_nExpore = gCameraHawkvis->m_nCam1Expore;
}
else
{
AfxMessageBox("相机1 MV_OpenCamera 失败!");
}
m_HawkvisCtrl1.SetCrossShow(1, 30, 30, -1, -1, TRUE);
if (m_HawkvisCtrl1.MV_GetOneFrame())
{
m_HawkvisCtrl1.ZoomFitWindow();
}
else
{
AfxMessageBox("相机1 MV_GetOneFrame 失败!");
}
}
/* else
{
gLogMgr->WriteDebugLog("*****未发现相机[1]!");
}*/
if (m_HawkvisCtrl2.MV_SelectAdapterByIdx(1))
{
@ -130,14 +142,25 @@ BOOL DlgHawkvisCamera::OnInitDialog()
{
m_pHawkvisCtrl = &m_HawkvisCtrl2;
m_HawkvisCtrl2.MV_SetCameraExpTime(gCameraHawkvis->m_nCam2Expore);
//m_nExpore = gCameraHawkvis->m_nCam2Expore;
}
else
{
AfxMessageBox("相机2 MV_OpenCamera 失败!");
}
m_HawkvisCtrl2.SetCrossShow(1, 30, 30, -1, -1, TRUE);
if (m_HawkvisCtrl2.MV_GetOneFrame())
{
m_HawkvisCtrl2.ZoomFitWindow();
}
else
{
AfxMessageBox("相机2 MV_GetOneFrame 失败!");
}
}
/*else
{
gLogMgr->WriteDebugLog("*****未发现相机[2]!");
}*/
}
catch (...)
{
@ -150,7 +173,7 @@ BOOL DlgHawkvisCamera::OnInitDialog()
void DlgHawkvisCamera::UpdateInfo()
{
//换文件时,自动换模板
if ( (!gLogMgr->IsDebuging()) && gCameraHawkvis->GetCurShapeModelID() != m_ShapeModelID)
if ((!gLogMgr->IsDebuging()) && gCameraHawkvis->GetCurShapeModelID() != m_ShapeModelID)
{
m_ShapeModelID = gCameraHawkvis->GetCurShapeModelID();
@ -169,8 +192,8 @@ void DlgHawkvisCamera::UpdateInfo()
if (gCameraHawkvis->GetCamIndex() == 0)
{
m_pHawkvisCtrl = &m_HawkvisCtrl1;
( (CButton*)GetDlgItem(IDC_RADIO1) )->SetCheck(FALSE);
( (CButton*)GetDlgItem(IDC_RADIO3) )->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);
((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(TRUE);
}
if (gCameraHawkvis->GetCamIndex() == 1)
{
@ -181,7 +204,7 @@ void DlgHawkvisCamera::UpdateInfo()
}
UpdateData(FALSE);
}
}
void DlgHawkvisCamera::Update()
{
SetTimer(WORK_TIMER1, WORK_TIME_DELAY1, NULL);//用timer来更新否则会报错
@ -209,7 +232,7 @@ void DlgHawkvisCamera::OnBnClickedOpenCam()
}
else
gLogMgr->WriteDebugLog("Hawkvis : Open Cam ---->ERR");
}
}
void DlgHawkvisCamera::OnBnClickedCloseCam()
{
#ifdef __HAWKVIS_MINDVISION_CCD__
@ -224,14 +247,14 @@ void DlgHawkvisCamera::OnBnClickedCloseCam()
#else
m_HawkvisCtrl.HV_CloseCamera();
#endif
}
void DlgHawkvisCamera::OnBnClickedFrameOne()
{
m_pHawkvisCtrl->SetCrossShow(1, 30, 30, -1, -1, ((CButton*)GetDlgItem(IDC_CROSS_CHECK))->GetCheck());
#ifdef __HAWKVIS_MINDVISION_CCD__
/*m_pHawkvisCtrl->MV_GetOneFrame();
Sleep(100);*/
/*m_pHawkvisCtrl->MV_GetOneFrame();
Sleep(100);*/
if (m_pHawkvisCtrl->MV_GetOneFrame())
#else
if (m_HawkvisCtrl.HV_GetOneFrame())
@ -475,7 +498,7 @@ void DlgHawkvisCamera::OnBnClickedToCam1()
{
if (m_pHawkvisCtrl->MV_OpenCamera())
{
OnBnClickedLoadCatchTemp();//读取模板
OnBnClickedLoadCatchTemp();//读取模板
m_pHawkvisCtrl->MV_SetCameraExpTime(gCameraHawkvis->m_nCam1Expore);
m_nExpore = gCameraHawkvis->m_nCam1Expore;
//UpdateData(FALSE);
@ -527,46 +550,46 @@ void DlgHawkvisCamera::OnBnClickedToCam2()
m_pHawkvisCtrl = &m_HawkvisCtrl2;
return;
/*
try
{
m_pHawkvisCtrl->MV_CloseCamera();
if (m_pHawkvisCtrl->MV_SelectAdapterByIdx(1))
/*
try
{
if (m_pHawkvisCtrl->MV_OpenCamera())
m_pHawkvisCtrl->MV_CloseCamera();
if (m_pHawkvisCtrl->MV_SelectAdapterByIdx(1))
{
OnBnClickedLoadCatchTemp();//读取模板
m_pHawkvisCtrl->MV_SetCameraExpTime(gCameraHawkvis->m_nCam2Expore);
m_nExpore = gCameraHawkvis->m_nCam2Expore;
//UpdateData(FALSE);
//OnBnClickedSetExpore();//设置曝光
}
m_pHawkvisCtrl->SetCrossShow(1, 30, 30, -1, -1, ((CButton*)GetDlgItem(IDC_CROSS_CHECK))->GetCheck());
if (m_pHawkvisCtrl->MV_GetOneFrame())
if (m_pHawkvisCtrl->MV_OpenCamera())
{
OnBnClickedLoadCatchTemp();//读取模板
m_pHawkvisCtrl->MV_SetCameraExpTime(gCameraHawkvis->m_nCam2Expore);
m_nExpore = gCameraHawkvis->m_nCam2Expore;
//UpdateData(FALSE);
//OnBnClickedSetExpore();//设置曝光
}
m_pHawkvisCtrl->SetCrossShow(1, 30, 30, -1, -1, ((CButton*)GetDlgItem(IDC_CROSS_CHECK))->GetCheck());
if (m_pHawkvisCtrl->MV_GetOneFrame())
{
m_pHawkvisCtrl->ZoomFitWindow();
}
}
else
{
m_pHawkvisCtrl->ZoomFitWindow();
static bool bfirst = true;
if (bfirst)
{
AfxMessageBox("打开相机2失败!");//报错一次
bfirst = false;
}
}
m_DlgCurCamIndex = 1;
gCameraHawkvis->SetCamIndex(1);
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(FALSE);
gLogMgr->WriteDebugLog("Switch To Cam2");
}
else
catch (...)
{
static bool bfirst = true;
if (bfirst)
{
AfxMessageBox("打开相机2失败!");//报错一次
bfirst = false;
}
}
m_DlgCurCamIndex = 1;
gCameraHawkvis->SetCamIndex(1);
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(FALSE);
gLogMgr->WriteDebugLog("Switch To Cam2");
}
catch (...)
{
AfxMessageBox("打开相机2 异常!");//报错一次
}*/
AfxMessageBox("打开相机2 异常!");//报错一次
}*/
}

@ -81,7 +81,7 @@ bool CEncryptionMgr::CheckLockState()
{
m_LeftDays = 0;//剩余的天数
}
else if(code>0 && code!=7)//其他错误(不要检查磁盘序列号)
else if((code>0) &&( code!=7)&&(!gLogMgr->IsDebuging())) //其他错误(不要检查磁盘序列号)
{
m_LeftDays = 0;//剩余的天数
CString s;

@ -8,7 +8,7 @@
#include "AuthorityMgr.h"
CLogMgr* gLogMgr = NULL;//日志管理对象
CLogMgr* gLogMgr = new CLogMgr;//日志管理对象
CLogMgr::CLogMgr(void)
{

@ -66,6 +66,8 @@ private:
bool m_bDebug;//是否正在调试
int m_DebugCmdDelay;//调试指令延时时间
public:
Dbxy LastTargetCoord;
};
extern CLogMgr* gLogMgr;

@ -47,7 +47,7 @@ CModuleDeviceMgr::~CModuleDeviceMgr(void)
void CModuleDeviceMgr::CreatAllModule()
{
//日志管理模块
gLogMgr = new CLogMgr;
//gLogMgr = new CLogMgr;
m_ModuleVec.push_back((CModule*)gLogMgr);
//权限管理
m_ModuleVec.push_back((CModule*)gAuthorityMgr);

@ -696,6 +696,10 @@ void MotionCard_PCI1245::ResetAllAsixCoord()
//从运动控制卡读取平台当前的坐标
Dbxy MotionCard_PCI1245::GetPlatformXYCoord()
{
if (gLogMgr->IsDebuging())
{
return gLogMgr->LastTargetCoord;
}
Dbxy Coord;
Dbxy OnePulseDis = gPlatformXY->GetMotorXYOnePulseDis();
//获取控制卡返回的脉冲位置
@ -781,6 +785,10 @@ Dbxy MotionCard_PCI1245::MovePlatformXY(Dbxy Coord)
gLogMgr->WriteDebugLog("Fuc---->MovePlatformXY 1245L");
CString strTemp;
strTemp.Format("Coord x : %f,Coord y : %f",Coord.y);
if (gLogMgr->IsDebuging())
{
gLogMgr->LastTargetCoord = Coord;
}
gLogMgr->WriteDebugLog(strTemp);
//从运动控制卡读取平台当前的坐标---------------
return GetPlatformXYCoord();

@ -1053,7 +1053,7 @@ bool CProgram_SZ_XL::IsbAutoWorking()
void CProgram_SZ_XL::StartAutoWork(ETrackType TrackType)
{
#ifdef _USE_LAIPU_SUPERDOG
if (gEncryptionMgr->CheckLockState() == false)
if (gEncryptionMgr->CheckLockState() == false&&(!gLogMgr->IsDebuging()))
{
return;
}
@ -1345,7 +1345,7 @@ void CProgram_SZ_XL::ReadLoadPlcMsgExt()
//分析收到上料机的PLC 消息
void CProgram_SZ_XL::AnalyzeRecvLoadMsg(CString &RecvStr)
{
CString LogStr1, LogStr2;
CString LogStr="未解析的指令!";
bool ret = false;
if (gTrackWorkFlow1.GetCurTrackWorkStep() == _ETrack_Step_Unload)//只有unload 中收到信号才算
@ -1364,27 +1364,27 @@ void CProgram_SZ_XL::AnalyzeRecvLoadMsg(CString &RecvStr)
{
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Unload_End);
}
LogStr1 = "轨道1 下料完成";
LogStr = "轨道1 下料完成";
}
if (RecvStr.Find("$(KL1E)#", 0) != -1)//轨道1 下料错误
{
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
LogStr1 = "轨道1 下料错误";
LogStr = "轨道1 下料错误";
}
if (RecvStr.Find("$(KL7D1)#", 0) != -1)//轨道1拉出载具完成
{
gTrackWorkFlow1.m_bPullJigOut = true;
LogStr1 = "轨道1载具拉出";
LogStr = "轨道1载具拉出";
}
if (RecvStr.Find("$(KL1D9)#", 0) != -1)//轨道1可推出
if (RecvStr.Find("$(KL9D1)#", 0) != -1)//轨道1可推出
{
gTrackWorkFlow1.m_bPushJigReady = true;
LogStr1 = "轨道1载具可推出";
LogStr = "轨道1载具可推出";
}
if (RecvStr.Find("$(KL9E)#", 0) != -1)//轨道1不可推出
{
gTrackWorkFlow1.m_bPushJigReady = false;
LogStr1 = "轨道1载具不可推出--from下料机";
LogStr = "轨道1载具不可推出--from下料机";
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
}
ret = true;
@ -1406,28 +1406,28 @@ void CProgram_SZ_XL::AnalyzeRecvLoadMsg(CString &RecvStr)
{
gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Unload_End);
}
LogStr1 = "轨道2 下料完成";
LogStr = "轨道2 下料完成";
}
if (RecvStr.Find("$(KL2E)#", 0) != -1)//轨道2 下料错误
{
gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
LogStr1 = "轨道2 下料错误";
LogStr = "轨道2 下料错误";
}
if (RecvStr.Find("$(KL8D1)#", 0) != -1)//轨道1拉出载具完成
{
//gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_PulledOut);
gTrackWorkFlow2.m_bPullJigOut = true;
LogStr1 = "轨道2载具拉出";
LogStr = "轨道2载具拉出";
}
if (RecvStr.Find("$(KL1D10)#", 0) != -1)//轨道1拉出载具完成
if (RecvStr.Find("$(KL10D1)#", 0) != -1)//轨道1拉出载具完成
{
gTrackWorkFlow2.m_bPushJigReady = true;
LogStr1 = "轨道2载具可推出";
LogStr = "轨道2载具可推出";
}
if (RecvStr.Find("$(KL10E)#", 0) != -1)//轨道1拉出载具完成
{
gTrackWorkFlow2.m_bPushJigReady = false;
LogStr1 = "轨道2载具不可推出--from下料机";
LogStr = "轨道2载具不可推出--from下料机";
gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
}
ret = true;
@ -1440,12 +1440,12 @@ void CProgram_SZ_XL::AnalyzeRecvLoadMsg(CString &RecvStr)
if (RecvStr.Find("$(KL3D1)#", 0) != -1)//轨道1 上料完成
{
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Load_End);
LogStr1 = "轨道1 上料完成";
LogStr = "轨道1 上料完成";
}
if (RecvStr.Find("$(KL3E)#", 0) != -1)//轨道1 上料错误
{
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Load_Err);
LogStr1 = "轨道1 上料错误";
LogStr = "轨道1 上料错误";
}
ret = true;
}
@ -1455,12 +1455,12 @@ void CProgram_SZ_XL::AnalyzeRecvLoadMsg(CString &RecvStr)
if (RecvStr.Find("$(KL4D1)#", 0) != -1)//轨道2 上料完成
{
gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Load_End);
LogStr1 = "轨道2 上料完成";
LogStr = "轨道2 上料完成";
}
if (RecvStr.Find("$(KL4E)#", 0) != -1)//轨道2 上料完成
{
gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Load_Err);
LogStr1 = "轨道2 上料错误";
LogStr = "轨道2 上料错误";
}
ret = true;
}
@ -1471,13 +1471,13 @@ void CProgram_SZ_XL::AnalyzeRecvLoadMsg(CString &RecvStr)
if (RecvStr.Find("$(KL5D1)#", 0) != -1)//轨道1 去边框完成(01000000)
{
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_End);
LogStr1 = "轨道1 去边框完成";
LogStr = "轨道1 去边框完成";
}
if (RecvStr.Find("$(KL5E)#", 0) != -1)//轨道1 去边框完成(01000000)
{
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_Err);
LogStr1 = "轨道1 去边框错误";
LogStr = "轨道1 去边框错误";
}
ret = true;
}
@ -1487,12 +1487,12 @@ void CProgram_SZ_XL::AnalyzeRecvLoadMsg(CString &RecvStr)
if (RecvStr.Find("$(KL6D1)#", 0) != -1)//轨道2 去边框完成(10000000)
{
gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_End);
LogStr1 = "轨道2 去边框完成";
LogStr = "轨道2 去边框完成";
}
if (RecvStr.Find("$(KL6E)#", 0) != -1)//轨道2 去边框完成(10000000)
{
gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Throw_Edge_Err);
LogStr1 = "轨道2 去边框错误";
LogStr = "轨道2 去边框错误";
}
ret = true;
}
@ -1545,18 +1545,17 @@ void CProgram_SZ_XL::AnalyzeRecvLoadMsg(CString &RecvStr)
ret = true;
}*/
if (ret)
//if (ret)
{
gLogMgr->WriteDebugLog(RecvStr);
if (LogStr1 != "")
{
gLogMgr->WriteDebugLog(LogStr1);
}
if (LogStr2 != "")
{
gLogMgr->WriteDebugLog(LogStr2);
}
//gLogMgr->WriteDebugLog("ReadLoadDeviceMsg: "+RecvStr);
CString str = "ReadLoadDeviceMsg: " + RecvStr+"==> ";
gLogMgr->WriteDebugLog(str+LogStr);
}
/*else
{
CString str = "ReadLoadDeviceMsg: " + RecvStr + "==> 未能解析的指令!";
gLogMgr->WriteDebugLog(str );
}*/
}
#include <mutex>
@ -1652,13 +1651,13 @@ bool CProgram_SZ_XL::GetLoadCmdStr(ETrackType TrackType, ETrackWorkStep WorkStep
if (_ETrackType_Track_1 == TrackType)
{
StrOn = "$(KL3)#";
StrOff = "@00WD0507000051*";
//StrOff = "@00WD0507000051*";
LogStr = "轨道1 上料请求";
}
else
{
StrOn = "$(KL4)#";
StrOff = "@00WD050800005E*";
//StrOff = "@00WD050800005E*";
LogStr = "轨道2 上料请求";
}
Ret = true;
@ -1668,13 +1667,13 @@ bool CProgram_SZ_XL::GetLoadCmdStr(ETrackType TrackType, ETrackWorkStep WorkStep
if (_ETrackType_Track_1 == TrackType)
{
StrOn = "$(KL5)#";
StrOff = "@00WD050900005F*";
//StrOff = "@00WD050900005F*";
LogStr = "轨道1去边框请求";
}
else
{
StrOn = "$(KL6)#";
StrOff = "@00WD0510000057*";
//StrOff = "@00WD0510000057*";
LogStr = "轨道2去边框请求";
}
Ret = true;
@ -1684,13 +1683,13 @@ bool CProgram_SZ_XL::GetLoadCmdStr(ETrackType TrackType, ETrackWorkStep WorkStep
if (_ETrackType_Track_1 == TrackType)
{
StrOn = "$(KL1)#";
StrOff = "@00WD050900005F*";
//StrOff = "@00WD050900005F*";
LogStr = "轨道1下料请求";
}
else
{
StrOn = "$(KL2)#";
StrOff = "@00WD0510000057*";
//StrOff = "@00WD0510000057*";
LogStr = "轨道2下料请求";
}
Ret = true;
@ -1700,21 +1699,38 @@ bool CProgram_SZ_XL::GetLoadCmdStr(ETrackType TrackType, ETrackWorkStep WorkStep
if (_ETrackType_Track_1 == TrackType)
{
StrOn = "$(KL7)#";
StrOff = "@00WD050900005F*";
//StrOff = "@00WD050900005F*";
LogStr = "轨道1可送回治具";
}
else
{
StrOn = "$(KL8)#";
StrOff = "@00WD0510000057*";
//StrOff = "@00WD0510000057*";
LogStr = "轨道2可送回治具";
}
Ret = true;
}
else if (WorkStep == _ETrack_Step_PushOut_Finished)//等待送回载具
{
if (_ETrackType_Track_1 == TrackType)
{
StrOn = "$(KL9)#";
//StrOff = "@00WD050900005F*";
LogStr = "通知下料机:轨道1推出治具完成";
}
else
{
StrOn = "$(KL10)#";
//StrOff = "@00WD0510000057*";
LogStr = "通知下料机:轨道2推出治具完成";
}
Ret = true;
}
if (Ret)
{
// gLogMgr->WriteDebugLog("Str1 = "+StrOn);
//gLogMgr->WriteDebugLog("Str2 = "+StrOff);
LogStr = "SendLoadDeviceMsg: " + StrOn + "==>" + LogStr;
gLogMgr->WriteDebugLog(LogStr);
}
return Ret;
@ -1754,7 +1770,7 @@ bool CProgram_SZ_XL::SendMsgToLoadDevice(ETrackType TrackType, ETrackWorkStep Wo
char Buf[BUF_LEN];
int len = CreatBuf(Buf, StrOn);
m_LoadDeviceCOM.WriteBuf(Buf, len);
gLogMgr->WriteDebugLog("SendMsgToLoadDevice: "+StrOn);
//gLogMgr->WriteDebugLog("SendMsgToLoadDevice: "+StrOn);
/* Sleep(100);
m_LoadDeviceCOM.WriteBuf(Buf,len);//再发一次
Sleep(m_LoadCmdDelay);//等待plc 检测到上升沿的时间
@ -1771,9 +1787,10 @@ bool CProgram_SZ_XL::SendMsgToLoadDevice(ETrackType TrackType, ETrackWorkStep Wo
return Ret;
}
//发送消息并检查反馈(发送SendMsg 并检查反馈信号是否为RevMsg)
/*
bool CProgram_SZ_XL::SendMsgToLoadPlc(CString &SendMsg, CString &RevMsg)
{
return true;
}
}*/
#endif

@ -62,7 +62,6 @@ private:
void AnalyzeRecvLoadMsg(CString &RecvStr);
bool CompareBuf(char *Buf,CString str);
int CreatBuf(char *Buf,CString str);
bool SendMsgToLoadPlc(CString &SendMsg,CString &RevMsg);
bool GetLoadCmdStr(ETrackType TrackType,ETrackWorkStep WorkStep,CString &StrOn,CString &StrOnRev,CString &StrOff,CString &StrOffRev);
public:
CString m_ServerIP="127.0.0.1";//¸±»úIP

@ -260,6 +260,11 @@ void CTrackWorkFlow::StopAutoWork()
SetCurTrackWorkStep(_ETrack_Step_Stop);
//取消下料请求
CancelUnloadRequest();
if ((!gTrackWorkFlow1.m_bAutoWorking)&&(!gTrackWorkFlow2.m_bAutoWorking))
{
SendMsgToPlc(_ETrack_PlcCmd_Auto_End, false);
}
}
#endif
@ -325,9 +330,9 @@ void CTrackWorkFlow::AnalyzeRecvPlcCmd(char *buf, int len)
if (buf[k] == '#')
{
IdxEnd = k;
CString s;
/*CString s;
s.Format(_T("Idx # = %d"), IdxEnd);
gLogMgr->WriteDebugLog(s);
gLogMgr->WriteDebugLog(s);*/
break;
}
}
@ -338,7 +343,7 @@ void CTrackWorkFlow::AnalyzeRecvPlcCmd(char *buf, int len)
buf[IdxEnd + 1] = '\0';
CString PlcMsg(buf);
gLogMgr->WriteDebugLog("ReadPlcMsg--->" + PlcMsg);
//gLogMgr->WriteDebugLog("ReadPlcMsg==>" + PlcMsg);
int IdxK = -1;//第一个K 的位置
for (int k = 0; k < IdxEnd; k++)
@ -351,63 +356,135 @@ void CTrackWorkFlow::AnalyzeRecvPlcCmd(char *buf, int len)
}
if (IdxK < 0)
return;
CString logstrH = "ReadPlcMsg:" + PlcMsg + " ==>";
CString logstrT = "未解析的指令!";
/*
if (PlcMsg.Find("$(KQ3D1)#") != -1 || PlcMsg.Find("$(KQ4D1)#") != -1)//下料完成
{
logstrT = "轨道下料完成!";
if (m_CurWorkStep == _ETrack_Step_Unload)//只有下料状态才响应下料完成信号
{
if (m_bCircleStop)//当前循环停止
{
m_bCircleStop = false;//只停止一次
GetFrame()->m_DlgSW_XL_Flow.ResetCircleStopCheck(m_TrackType);//自动恢复check 状态
CString Log = m_TrackName + " 停止自动运行!";
gLogMgr->WriteDebugLog(Log);
StopAutoWork();//停止自动运行
}
else
{
SetCurTrackWorkStep(_ETrack_Step_Unload_End);
}
}
}
if (PlcMsg.Find("$(KQ3D1)#") != -1 || PlcMsg.Find("$(KQ4D1)#") != -1)//下料完成
if (PlcMsg.Find("$(KQ3E)#") != -1 || PlcMsg.Find("$(KQ4E)#") != -1)//下料错误
{
logstrT = "轨道下料错误!";
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
gLogMgr->WriteDebugLog("ReadPlcMsg==>_ETrack_Step_Unload_Err");
}
*/
///-------------------------轨道1-------------------------------------///
if (gTrackWorkFlow1.m_CurWorkStep == _ETrack_Step_Unload)//只有下料状态才响应下料完成信号
{
gLogMgr->WriteDebugLog("ReadPlcMsg--->_ETrack_Step_Unload_End");
if (m_CurWorkStep == _ETrack_Step_Unload)//只有下料状态才响应下料完成信号
if (PlcMsg.Find("$(KQ3D1)#") != -1)//下料完成
{
if (m_bCircleStop)//当前循环停止
logstrT = "轨道1下料完成!";
if (gTrackWorkFlow1.m_bCircleStop)//当前循环停止
{
m_bCircleStop = false;//只停止一次
gTrackWorkFlow1.m_bCircleStop = false;//只停止一次
GetFrame()->m_DlgSW_XL_Flow.ResetCircleStopCheck(m_TrackType);//自动恢复check 状态
CString Log = m_TrackName + " Circle Stop";
CString Log = "轨道1 停止自动运行!";
gLogMgr->WriteDebugLog(Log);
StopAutoWork();//停止自动运行
gTrackWorkFlow1.StopAutoWork();//停止自动运行
}
else
{
SetCurTrackWorkStep(_ETrack_Step_Unload_End);
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Unload_End);
}
}
if (PlcMsg.Find("$(KQ3E)#") != -1)//下料错误
{
logstrT = "轨道1下料错误!";
gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
}
}
if (PlcMsg.Find("$(KQ3E)#") != -1 || PlcMsg.Find("$(KQ4E)#") != -1)//下料错误
{
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
gLogMgr->WriteDebugLog("ReadPlcMsg--->_ETrack_Step_Unload_Err");
}
///------------------------轨道1-------------------------------------
if (PlcMsg.Find("$(KQ5D1)#") != -1)//治具未到位
if (PlcMsg.Find("$(KQ5D1)#") != -1)//推出治具完成
{
gTrackWorkFlow1.m_bPushJigOut = true;
gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ5D1)#] --->轨道1推出治具完成");
logstrT = "轨道1推出治具完成!";
//gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ5D1)#] ==>轨道1推出治具完成");
}
if (PlcMsg.Find("$(KQ5E)#") != -1)//治具未到位
{
gTrackWorkFlow1.m_bJigOK = false;
gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ5E)#] --->轨道1治具未到位");
logstrT = "轨道1治具未到位!";
//gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ5E)#] ==>轨道1治具未到位");
}
if (PlcMsg.Find("$(KQ7D1)#") != -1)//治具到位
{
gTrackWorkFlow1.m_bJigOK = true;
gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ7D1)#]--->轨道1治具到位");
logstrT = "轨道1治具到位!";
//gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ7D1)#]==>轨道1治具到位");
}
///------------------------轨道2-------------------------------------///
if (gTrackWorkFlow2.m_CurWorkStep == _ETrack_Step_Unload)//只有下料状态才响应下料完成信号
{
if (PlcMsg.Find("$(KQ4D1)#") != -1)//下料完成
{
logstrT = "轨道2下料完成!";
if (gTrackWorkFlow2.m_bCircleStop)//当前循环停止
{
gTrackWorkFlow2.m_bCircleStop = false;//只停止一次
GetFrame()->m_DlgSW_XL_Flow.ResetCircleStopCheck(m_TrackType);//自动恢复check 状态
CString Log = "轨道2 停止自动运行!";
gLogMgr->WriteDebugLog(Log);
gTrackWorkFlow2.StopAutoWork();//停止自动运行
}
else
{
gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Unload_End);
}
}
if (PlcMsg.Find("$(KQ4E)#") != -1)//下料错误
{
logstrT = "轨道2下料错误!";
gTrackWorkFlow2.SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
}
}
///------------------------轨道2-------------------------------------
if (PlcMsg.Find("$(KQ6D1)#") != -1)//治具未到位
if (PlcMsg.Find("$(KQ6D1)#") != -1)//推出治具完成
{
gTrackWorkFlow2.m_bPushJigOut = true;
gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ6D1)#] --->轨道2推出治具完成");
logstrT = "轨道2推出治具完成!";
//gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ6D1)#] ==>轨道2推出治具完成");
}
if (PlcMsg.Find("$(KQ6E)#") != -1)//治具未到位
{
gTrackWorkFlow2.m_bJigOK = false;
gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ6E)#] --->轨道2治具未到位");
logstrT = "轨道2治具未到位!";
//gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ6E)#] ==>轨道2治具未到位");
}
if (PlcMsg.Find("$(KQ8D1)#") != -1)//治具到位
{
gTrackWorkFlow2.m_bJigOK = true;
gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ8D1)#]--->轨道2治具到位");
logstrT = "轨道2治具到位!";
//gLogMgr->WriteDebugLog("ReadPlcMsg [$(KQ8D1)#]==>轨道2治具到位");
}
gLogMgr->WriteDebugLog(logstrH + logstrT);
}
#endif
@ -422,12 +499,12 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
if (m_TrackType == _ETrackType_Track_1)
{
msg += "G";
log = "SendPlcMsg: Track_1 打开载盘";
log = "SendPlcMsg: $(KQG)# ==>轨道1 打开载盘";
}
else
{
msg += "I";
log = "SendPlcMsg: Track_2 打开载盘";
log = "SendPlcMsg: $(KQI)# ==>轨道2 打开载盘";
}
}
if (PlcCmd == _ETrack_PlcCmd_Close_Product)//夹紧载盘
@ -435,12 +512,12 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
if (m_TrackType == _ETrackType_Track_1)
{
msg += "F";
log = "SendPlcMsg: Track_1 夹紧载盘";
log = "SendPlcMsg: $(KQF)# ==> 轨道1 夹紧载盘";
}
else
{
msg += "H";
log = "SendPlcMsg: Track_2 夹紧载盘";
log = "SendPlcMsg: $(KQH)# ==>轨道2 夹紧载盘";
}
}
if (PlcCmd == _ETrack_PlcCmd_Vac_Sorb_On)//真空吸附开
@ -448,12 +525,12 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
if (m_TrackType == _ETrackType_Track_1)
{
msg += "9";
log = "SendPlcMsg: Track_1 真空吸附开";
log = "SendPlcMsg: $(KQ9)# ==>轨道1 真空吸附开";
}
else
{
msg += "B";
log = "SendPlcMsg: Track_2 真空吸附开";
log = "SendPlcMsg: $(KQB)# ==>轨道2 真空吸附开";
}
}
if (PlcCmd == _ETrack_PlcCmd_Vac_Sorb_Off)//真空吸附关
@ -461,35 +538,35 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
if (m_TrackType == _ETrackType_Track_1)
{
msg += "A";
log = "SendPlcMsg: Track_1 真空吸附关";
log = "SendPlcMsg: $(KQA)# ==>轨道1 真空吸附关";
}
else
{
msg += "C";
log = "SendPlcMsg: Track_2 真空吸附关";
log = "SendPlcMsg: $(KQC)# ==>轨道2 真空吸附关";
}
}
if (PlcCmd == _ETrack_PlcCmd_Auto_Start)//自动开始(绿灯)
{
msg += "5";
log = "SendPlcMsg: 自动开始";
log = "SendPlcMsg: $(KQ5)# ==>自动开始";
}
if (PlcCmd == _ETrack_PlcCmd_Auto_End)//自动结束(黄灯)
{
msg += "6";
log = "SendPlcMsg: 自动结束";
log = "SendPlcMsg: $(KQ6)# ==> 自动结束";
}
if (PlcCmd == _ETrack_PlcCmd_Unload)//下料
{
if (m_TrackType == _ETrackType_Track_1)
{
msg += "3";
log = "SendPlcMsg: Track_1 下料";
log = "SendPlcMsg: $(KQ3)# ==>轨道1 下料";
}
else
{
msg += "4";
log = "SendPlcMsg: Track_2 下料";
log = "SendPlcMsg: $(KQ4)# ==>轨道1 下料";
}
}
if (PlcCmd == _ETrack_PlcCmd_Push_Jig_Out)//推治具
@ -497,12 +574,12 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
if (m_TrackType == _ETrackType_Track_1)
{
msg += "J";
log = "SendPlcMsg: Track_1 推出治具";
log = "SendPlcMsg: $(KQJ)# ==>轨道1 推出治具";
}
else
{
msg += "K";
log = "SendPlcMsg: Track_2 推出治具";
log = "SendPlcMsg: $(KQK)# ==>轨道2 推出治具";
}
}
@ -511,12 +588,12 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
if (m_TrackType == _ETrackType_Track_1)
{
msg += "L";
log = "SendPlcMsg: Track_1 检测治具";
log = "SendPlcMsg: $(KQL)# ==>轨道1 检测治具";
}
else
{
msg += "M";
log = "SendPlcMsg: Track_2 检测治具";
log = "SendPlcMsg: $(KQM)# ==>轨道2 检测治具";
}
}
@ -525,23 +602,23 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
if (m_TrackType == _ETrackType_Track_1)
{
msg += "D";
log = "SendPlcMsg: Track_1 取消请求下料";
log = "SendPlcMsg: $(KQD)# ==>轨道1 取消请求下料";
}
else
{
msg += "E";
log = "SendPlcMsg: Track_2 取消请求下料";
log = "SendPlcMsg: $(KQE)# ==>轨道2 取消请求下料";
}
}
if (PlcCmd == _ETrack_PlcCmd_Red_Alam_On)//红灯蜂鸣器开
{
msg += "1";
log = "SendPlcMsg: 红灯蜂鸣器开";
log = "SendPlcMsg: $(KQ1)# ==>红灯蜂鸣器开";
}
if (PlcCmd == _ETrack_PlcCmd_Red_Alam_Off)//红灯蜂鸣器开
{
msg += "2";
log = "SendPlcMsg: 红灯蜂鸣器关";
log = "SendPlcMsg: $(KQ2)# ==>红灯蜂鸣器关";
}
gLogMgr->WriteDebugLog(log);
msg += ")#\r\n";
@ -562,7 +639,7 @@ bool CTrackWorkFlow::SendMsgToPlc(ETrackPlcCmd PlcCmd, bool bStopReadMsg)
char * buf = Msg.GetBuffer();
int len = Msg.GetLength();
m_TrackCOM.WriteBuf(buf, len);//发送
gLogMgr->WriteDebugLog("SendMsgToPlc--->" + Msg);
//gLogMgr->WriteDebugLog("SendMsgToPlc==>" + Msg);
}
else
{
@ -604,10 +681,10 @@ void CTrackWorkFlow::VacSorbOnOff(bool bOn)
}
bool CTrackWorkFlow::PushJigOut()
{
if (gLogMgr->IsDebuging())
/*if (gLogMgr->IsDebuging())
{
return true;
}
}*/
ETrackPlcCmd PlcCmd;
PlcCmd = _ETrack_PlcCmd_Push_Jig_Out;
SendMsgToPlc(PlcCmd, false);
@ -633,6 +710,7 @@ bool CTrackWorkFlow::IsJigOK()
{
return true;
}
return true;
ETrackPlcCmd PlcCmd;
PlcCmd = _ETrack_PlcCmd_Check_Jig_In;
@ -835,12 +913,12 @@ void CTrackWorkFlow::ChangePlatXYGroupIdx()
void CTrackWorkFlow::CatchMark()
{
/*if (!gObjComponentMgr->GetTwoMarkPt(Dbxy(), Dbxy()))//获取定位点
if (!gObjComponentMgr->GetTwoMarkPt(Dbxy(), Dbxy()))//获取定位点
{
CMsgBox MsgBox;
MsgBox.Show("没有加工图形!");
return ;
}*/
return;
}
//只有无锁定状态才能CatchMark
if (gCurLockTrackType != _ETrackType_NULL)
{
@ -1208,70 +1286,9 @@ void CTrackWorkFlow::UnLoad()
}
}
if (m_bAutoWorking)//自动运行中
auto FunctionUnload = [&]()
{
if (gProgram_SZ_XL->IsbAutoWorkMode())//自动模式
{
//通知下料机到下料 接载具位
m_bPushJigReady = false;
if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Unload, true) == false)
{
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
Log = m_TrackName + " unload Err";
gLogMgr->WriteDebugLog(Log);
return;
}
//等待下料机到可推出载具位
CString str = "轨道1";
if (m_TrackType == _ETrackType_Track_2)
str = "轨道2";
CString logstr;
logstr.Format("等待[下料机] 运动至[%s]下载具位.", str);
gLogMgr->WriteDebugLog(logstr);
int cnt = 0;
while ((!m_bPushJigReady) && cnt < 400)
{
Sleep(300);
cnt++;
}
if (cnt == 400)
{
Log = m_TrackName + " [下料机] 运动至下载具位 超时!";
gLogMgr->WriteDebugLog(Log);
gTrackWorkFlow1.RadAlamOnOff(true);
AfxMessageBox(m_TrackName + " [下料机] 运动至下载具位超时!请手动下料!");
gTrackWorkFlow1.RadAlamOnOff(false);
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
return;
}
if (!PushJigOut())//推出治具
{
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
return;
}
Sleep(3000);
//平台移动到 送回空治具的位置
MoveToPos(_ETrack_Step_WaitBack);
gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_WaitBack, true);//告诉下料机,我已到可回治具位
m_bLoadProduct = false;//轨道上是否load 了产品
}
else//手动模式直接跳过下料步骤
{
SetCurTrackWorkStep(_ETrack_Step_Unload_End);
}
}
else
{
if (AfxMessageBox("确认手动下料?", MB_YESNO) != IDYES)
{
SetCurTrackWorkStep(_ETrack_Step_NULL);
return;
}
//通知下料机下料
//通知下料机到下料 接载具位
m_bPushJigReady = false;
if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Unload, true) == false)
{
@ -1297,10 +1314,10 @@ void CTrackWorkFlow::UnLoad()
}
if (cnt == 400)
{
Log = m_TrackName + " [下料机] 运动至下载具位 超时!";
Log = m_TrackName + " [下料机] 运动至下载具位 超时!";
gLogMgr->WriteDebugLog(Log);
gTrackWorkFlow1.RadAlamOnOff(true);
AfxMessageBox(m_TrackName + "[下料机] 运动至下载具位超时!请手动下料!");
AfxMessageBox(m_TrackName + " [下料机] 运动至下载具位超时!请手动下料!");
gTrackWorkFlow1.RadAlamOnOff(false);
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
return;
@ -1311,12 +1328,41 @@ void CTrackWorkFlow::UnLoad()
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
return;
}
Sleep(3000);
Sleep(500);
if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_PushOut_Finished, true) == false)
{
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
Log = m_TrackName + " unload Err";
gLogMgr->WriteDebugLog(Log);
return;
}
Sleep(500);
//平台移动到 送回空治具的位置
MoveToPos(_ETrack_Step_WaitBack);
gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_WaitBack, true);//告诉下料机,我已到可回治具位
m_bLoadProduct = false;//轨道上是否load 了产品
};
if (m_bAutoWorking)//自动运行中
{
if (gProgram_SZ_XL->IsbAutoWorkMode())//自动模式
{
FunctionUnload();
}
else//手动模式直接跳过下料步骤
{
SetCurTrackWorkStep(_ETrack_Step_Unload_End);
}
}
else
{
if (AfxMessageBox("确认手动下料?", MB_YESNO) != IDYES)
{
SetCurTrackWorkStep(_ETrack_Step_NULL);
return;
}
FunctionUnload();
}
}
//移动Y 轴到安全区域

@ -27,6 +27,7 @@ enum ETrackWorkStep
_ETrack_Step_Unload,//下料中20
_ETrack_Step_PulledOut,//等待拉走治具
_ETrack_Step_WaitBack,//等待送回空治具
_ETrack_Step_PushOut_Finished,//된덤箇쀼왕撈야
_ETrack_Step_Unload_End,//下料完成21
_ETrack_Step_Unload_Err,//下料错误22
};

Loading…
Cancel
Save