|
|
|
@ -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 轴到安全区域
|
|
|
|
|