|
|
|
@ -749,6 +749,10 @@ bool CTrackWorkFlow::PushJigOut()
|
|
|
|
|
|
|
|
|
|
bool CTrackWorkFlow::IsJigOK()
|
|
|
|
|
{
|
|
|
|
|
#ifdef CUSTOM_TXD_2_XL
|
|
|
|
|
return true;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (gLogMgr->IsDebuging())
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
@ -1515,17 +1519,167 @@ void CTrackWorkFlow::UnLoad()
|
|
|
|
|
//如果另外一个轴在unload ,要等待其unload 完成
|
|
|
|
|
if (gProgram_SZ_XL->IsbAutoWorkMode())
|
|
|
|
|
{
|
|
|
|
|
while (!gExitApp)
|
|
|
|
|
{
|
|
|
|
|
Sleep(200);
|
|
|
|
|
//获取另外一个轴的状态
|
|
|
|
|
ETrackWorkStep OtherTrackWorkStep = gProgram_SZ_XL->GetOtherTrackWorkStep(m_TrackType);
|
|
|
|
|
if (OtherTrackWorkStep != _ETrack_Step_Unload)
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (m_bAutoWorking)//自动运行中
|
|
|
|
|
{
|
|
|
|
|
if (gProgram_SZ_XL->IsbAutoWorkMode())//自动模式
|
|
|
|
|
{
|
|
|
|
|
//通知下料机下料
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
m_bPullJigOut = false;
|
|
|
|
|
int cnt = 0;
|
|
|
|
|
while (!m_bPullJigOut&&cnt < 400)
|
|
|
|
|
{
|
|
|
|
|
Sleep(300);
|
|
|
|
|
cnt++;
|
|
|
|
|
}
|
|
|
|
|
if (cnt == 400)
|
|
|
|
|
{
|
|
|
|
|
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
|
|
|
|
|
Log = m_TrackName + " 拉出治具 超时!";
|
|
|
|
|
gLogMgr->WriteDebugLog(Log);
|
|
|
|
|
AfxMessageBox("拉出治具超时!请手动下料!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Sleep(30000);
|
|
|
|
|
|
|
|
|
|
//平台移动到 送回空治具的位置
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
//通知下料机下料
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
m_bPullJigOut = false;
|
|
|
|
|
int cnt = 0;
|
|
|
|
|
while (!m_bPullJigOut&&cnt < 400)
|
|
|
|
|
{
|
|
|
|
|
Sleep(300);
|
|
|
|
|
cnt++;
|
|
|
|
|
}
|
|
|
|
|
if (cnt == 400)
|
|
|
|
|
{
|
|
|
|
|
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
|
|
|
|
|
Log = m_TrackName + " 拉出治具 超时!";
|
|
|
|
|
gLogMgr->WriteDebugLog(Log);
|
|
|
|
|
AfxMessageBox("拉出治具超时!请手动下料!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Sleep(30000);
|
|
|
|
|
//平台移动到 送回空治具的位置
|
|
|
|
|
MoveToPos(_ETrack_Step_WaitBack);
|
|
|
|
|
gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_WaitBack, true);//告诉下料机,我已到位
|
|
|
|
|
m_bLoadProduct = false;//轨道上是否load 了产品
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
//下料
|
|
|
|
|
void CTrackWorkFlow::UnLoad()
|
|
|
|
|
{
|
|
|
|
|
//设置当前步骤
|
|
|
|
|
SetCurTrackWorkStep(_ETrack_Step_Unload);
|
|
|
|
|
//检查下料机的状态
|
|
|
|
|
if (gProgram_SZ_XL->IsbCheckUnloadState())
|
|
|
|
|
{
|
|
|
|
|
//如果另外一个轨道没有在下料,下料机在轨道上的时候判断为unload错误
|
|
|
|
|
if (gMotionCard_PCI1245->CheckUnloadState() == false)
|
|
|
|
|
{
|
|
|
|
|
//获取另外一个轴的状态
|
|
|
|
|
ETrackWorkStep OtherTrackWorkStep = gProgram_SZ_XL->GetOtherTrackWorkStep(m_TrackType);
|
|
|
|
|
if (OtherTrackWorkStep != _ETrack_Step_Unload)
|
|
|
|
|
{
|
|
|
|
|
SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
|
|
|
|
|
CMsgBox MsgBox;
|
|
|
|
|
MsgBox.Show("下料机位置异常!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//平台移动到下料位置
|
|
|
|
|
MoveToPos(_ETrack_Step_Unload);
|
|
|
|
|
//自动打开载盘
|
|
|
|
|
ProductCarrierOpenClose(true);
|
|
|
|
|
|
|
|
|
|
//通知下料
|
|
|
|
|
CString Log = m_TrackName + " UnLoad";
|
|
|
|
|
gLogMgr->WriteDebugLog(Log);
|
|
|
|
|
|
|
|
|
|
if (gProgram_SZ_XL->IsbShieldUnLoad())//屏蔽下料
|
|
|
|
|
{
|
|
|
|
|
if (m_bAutoWorking)//自动运行中
|
|
|
|
|
SetCurTrackWorkStep(_ETrack_Step_Unload_End);
|
|
|
|
|
else
|
|
|
|
|
SetCurTrackWorkStep(_ETrack_Step_Stop);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//如果另外一个轴在unload ,要等待其unload 完成
|
|
|
|
|
if (gProgram_SZ_XL->IsbAutoWorkMode())
|
|
|
|
|
{
|
|
|
|
|
//int cnt = 0;
|
|
|
|
|
while (!gExitApp)
|
|
|
|
|
{
|
|
|
|
|
Sleep(500);
|
|
|
|
|
//获取另外一个轴的状态
|
|
|
|
|
ETrackWorkStep OtherTrackWorkStep = gProgram_SZ_XL->GetOtherTrackWorkStep(m_TrackType);
|
|
|
|
|
if ((OtherTrackWorkStep != _ETrack_Step_Unload)||cnt>10)
|
|
|
|
|
if ((OtherTrackWorkStep != _ETrack_Step_Unload))//||cnt>10)
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
cnt++;
|
|
|
|
|
//cnt++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1603,6 +1757,9 @@ void CTrackWorkFlow::UnLoad()
|
|
|
|
|
FunctionUnload();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//移动Y 轴到安全区域
|
|
|
|
|
void CTrackWorkFlow::MoveMotorYToSafePos()
|
|
|
|
|
{
|
|
|
|
|