| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -54,6 +54,7 @@ UINT ReadPlcMsgThread(LPVOID pParam)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//执行一个步骤的线程(执行一次)
 | 
					 | 
					 | 
					 | 
					//执行一个步骤的线程(执行一次)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					UINT ExecuteStepThread(LPVOID pParam)
 | 
					 | 
					 | 
					 | 
					UINT ExecuteStepThread(LPVOID pParam)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						AfxSocketInit();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CTrackWorkFlow *WorkFlow = (CTrackWorkFlow *)pParam;
 | 
					 | 
					 | 
					 | 
						CTrackWorkFlow *WorkFlow = (CTrackWorkFlow *)pParam;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						WorkFlow->ExecuteCurStep();
 | 
					 | 
					 | 
					 | 
						WorkFlow->ExecuteCurStep();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return 0;
 | 
					 | 
					 | 
					 | 
						return 0;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -120,9 +121,17 @@ void CTrackWorkFlow::WorkFlowCtrl()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (gExitApp)
 | 
					 | 
					 | 
					 | 
							if (gExitApp)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return;
 | 
					 | 
					 | 
					 | 
								return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Sleep(100);
 | 
					 | 
					 | 
					 | 
							Sleep(200);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_CurWorkStep == m_OldWorkStep)//无变化
 | 
					 | 
					 | 
					 | 
							if (m_CurWorkStep == m_OldWorkStep)//无变化
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								continue;
 | 
					 | 
					 | 
					 | 
								continue;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							/*//进入下料函数,设置 步骤为_ETrack_Step_Unload时,不执行
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (m_OldWorkStep == _ETrack_Step_Throw_Edge_End&&m_CurWorkStep == _ETrack_Step_Unload)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								m_OldWorkStep = m_CurWorkStep;//记录当前步骤
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								continue;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}*/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_OldWorkStep == _ETrack_Step_Unload)//unload 结束步骤时
 | 
					 | 
					 | 
					 | 
							if (m_OldWorkStep == _ETrack_Step_Unload)//unload 结束步骤时
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								//取消下料请求
 | 
					 | 
					 | 
					 | 
								//取消下料请求
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -131,7 +140,12 @@ void CTrackWorkFlow::WorkFlowCtrl()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							m_OldWorkStep = m_CurWorkStep;//记录当前步骤
 | 
					 | 
					 | 
					 | 
							m_OldWorkStep = m_CurWorkStep;//记录当前步骤
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							//在新线程中执行
 | 
					 | 
					 | 
					 | 
							//在新线程中执行
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							AfxBeginThread(ExecuteStepThread, this);
 | 
					 | 
					 | 
					 | 
							if (m_CurWorkStep== _ETrack_Step_Throw_Edge_End)		
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								m_pthread = AfxBeginThread(ExecuteStepThread, this);		 //m_pthread只记录下料
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							else		
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								AfxBeginThread(ExecuteStepThread, this);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//执行当前步骤
 | 
					 | 
					 | 
					 | 
					//执行当前步骤
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -145,7 +159,7 @@ void CTrackWorkFlow::ExecuteCurStep()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							MoveToWaitPos();//移动到等待位置
 | 
					 | 
					 | 
					 | 
							MoveToWaitPos();//移动到等待位置
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							break;
 | 
					 | 
					 | 
					 | 
							break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						case _ETrack_Step_Mark_Waiting://等待加工
 | 
					 | 
					 | 
					 | 
						case _ETrack_Step_Mark_Waiting://等待加工
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							CatchMark();//抓取定位
 | 
					 | 
					 | 
					 | 
							CatchMarkNewly();//抓取定位
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							break;
 | 
					 | 
					 | 
					 | 
							break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						case _ETrack_Step_Catch_mark_End://等待加工
 | 
					 | 
					 | 
					 | 
						case _ETrack_Step_Catch_mark_End://等待加工
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							MarkProcess();//尝试启动加工
 | 
					 | 
					 | 
					 | 
							MarkProcess();//尝试启动加工
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -160,6 +174,20 @@ void CTrackWorkFlow::ExecuteCurStep()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Load();//上料
 | 
					 | 
					 | 
					 | 
							Load();//上料
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							break;
 | 
					 | 
					 | 
					 | 
							break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						case _ETrack_Step_Load_Err://下料错误
 | 
					 | 
					 | 
					 | 
						case _ETrack_Step_Load_Err://下料错误
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							auto fErr = [&] {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gTrackWorkFlow1.RadAlamOnOff(true);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								AfxMessageBox("下料错误,请检查治具!");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gTrackWorkFlow1.RadAlamOnOff(false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							};
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							thread t1(fErr);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							t1.detach();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//解除锁定
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (m_TrackType == gCurLockTrackType)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gCurLockTrackType = _ETrackType_NULL;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//退出自动状态
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							StopAutoWork();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						case _ETrack_Step_Catch_mark_Err://抓取定位错误
 | 
					 | 
					 | 
					 | 
						case _ETrack_Step_Catch_mark_Err://抓取定位错误
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						case _ETrack_Step_Mark_Err://切割过程错误
 | 
					 | 
					 | 
					 | 
						case _ETrack_Step_Mark_Err://切割过程错误
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						case _ETrack_Step_Unload_Err://下料错误
 | 
					 | 
					 | 
					 | 
						case _ETrack_Step_Unload_Err://下料错误
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -260,6 +288,11 @@ void CTrackWorkFlow::StopAutoWork()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						SetCurTrackWorkStep(_ETrack_Step_Stop);
 | 
					 | 
					 | 
					 | 
						SetCurTrackWorkStep(_ETrack_Step_Stop);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						//取消下料请求
 | 
					 | 
					 | 
					 | 
						//取消下料请求
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CancelUnloadRequest();
 | 
					 | 
					 | 
					 | 
						CancelUnloadRequest();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if ((!gTrackWorkFlow1.m_bAutoWorking)&&(!gTrackWorkFlow2.m_bAutoWorking))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							SendMsgToPlc(_ETrack_PlcCmd_Auto_End, false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -325,9 +358,9 @@ void CTrackWorkFlow::AnalyzeRecvPlcCmd(char *buf, int len)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (buf[k] == '#')
 | 
					 | 
					 | 
					 | 
							if (buf[k] == '#')
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								IdxEnd = k;
 | 
					 | 
					 | 
					 | 
								IdxEnd = k;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								CString s;
 | 
					 | 
					 | 
					 | 
								/*CString s;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								s.Format(_T("Idx # = %d"), IdxEnd);
 | 
					 | 
					 | 
					 | 
								s.Format(_T("Idx # = %d"), IdxEnd);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								gLogMgr->WriteDebugLog(s);
 | 
					 | 
					 | 
					 | 
								gLogMgr->WriteDebugLog(s);*/
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								break;
 | 
					 | 
					 | 
					 | 
								break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -338,7 +371,7 @@ void CTrackWorkFlow::AnalyzeRecvPlcCmd(char *buf, int len)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							buf[IdxEnd + 1] = '\0';
 | 
					 | 
					 | 
					 | 
							buf[IdxEnd + 1] = '\0';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CString PlcMsg(buf);
 | 
					 | 
					 | 
					 | 
						CString PlcMsg(buf);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gLogMgr->WriteDebugLog("ReadPlcMsg--->" + PlcMsg);
 | 
					 | 
					 | 
					 | 
						//gLogMgr->WriteDebugLog("ReadPlcMsg==>" + PlcMsg);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int IdxK = -1;//第一个K 的位置
 | 
					 | 
					 | 
					 | 
						int IdxK = -1;//第一个K 的位置
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						for (int k = 0; k < IdxEnd; k++)
 | 
					 | 
					 | 
					 | 
						for (int k = 0; k < IdxEnd; k++)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -351,63 +384,138 @@ void CTrackWorkFlow::AnalyzeRecvPlcCmd(char *buf, int len)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (IdxK < 0)
 | 
					 | 
					 | 
					 | 
						if (IdxK < 0)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return;
 | 
					 | 
					 | 
					 | 
							return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						CString logstrH = "ReadPlcMsg:" + PlcMsg + " ==>";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						CString logstrT = "未解析的指令!";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ3D1)#") != -1 || PlcMsg.Find("$(KQ4D1)#") != -1)//下料完成
 | 
					 | 
					 | 
					 | 
						/*
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							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("$(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 (PlcMsg.Find("$(KQ3D1)#") != -1)//下料完成
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_CurWorkStep == _ETrack_Step_Unload)//只有下料状态才响应下料完成信号
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								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 状态
 | 
					 | 
					 | 
					 | 
									GetFrame()->m_DlgSW_XL_Flow.ResetCircleStopCheck(m_TrackType);//自动恢复check 状态
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									CString Log = m_TrackName + " Circle Stop";
 | 
					 | 
					 | 
					 | 
									CString Log = "轨道1 停止自动运行!";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									gLogMgr->WriteDebugLog(Log);
 | 
					 | 
					 | 
					 | 
									gLogMgr->WriteDebugLog(Log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									StopAutoWork();//停止自动运行
 | 
					 | 
					 | 
					 | 
									gTrackWorkFlow1.StopAutoWork();//停止自动运行
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								else
 | 
					 | 
					 | 
					 | 
								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)//下料错误
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ5D1)#") != -1)//推出治具完成
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog("ReadPlcMsg--->_ETrack_Step_Unload_Err");
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						///------------------------轨道1-------------------------------------
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ5D1)#") != -1)//治具未到位
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gTrackWorkFlow1.m_bPushJigOut = true;
 | 
					 | 
					 | 
					 | 
							gTrackWorkFlow1.m_bPushJigOut = true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ5D1)#] --->轨道1推出治具完成");
 | 
					 | 
					 | 
					 | 
							logstrT = "轨道1推出治具完成!";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gLogMgr->WritePlcTimeLog(logstrH + logstrT);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ5D1)#] ==>轨道1推出治具完成");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ5E)#") != -1)//治具未到位
 | 
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ5E)#") != -1)//治具未到位
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gTrackWorkFlow1.m_bJigOK = false;
 | 
					 | 
					 | 
					 | 
							gTrackWorkFlow1.m_bJigOK = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ5E)#] --->轨道1治具未到位");
 | 
					 | 
					 | 
					 | 
							logstrT = "轨道1治具未到位!";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ5E)#] ==>轨道1治具未到位");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ7D1)#") != -1)//治具到位
 | 
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ7D1)#") != -1)//治具到位
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gTrackWorkFlow1.m_bJigOK = true;
 | 
					 | 
					 | 
					 | 
							gTrackWorkFlow1.m_bJigOK = true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ7D1)#]--->轨道1治具到位");
 | 
					 | 
					 | 
					 | 
							logstrT = "轨道1治具到位!";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ7D1)#]==>轨道1治具到位");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						///------------------------轨道2-------------------------------------
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ6D1)#") != -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);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ6D1)#") != -1)//推出治具完成
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gTrackWorkFlow2.m_bPushJigOut = true;
 | 
					 | 
					 | 
					 | 
							gTrackWorkFlow2.m_bPushJigOut = true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ6D1)#] --->轨道2推出治具完成");
 | 
					 | 
					 | 
					 | 
							logstrT = "轨道2推出治具完成!";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gLogMgr->WritePlcTimeLog(logstrH + logstrT);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ6D1)#] ==>轨道2推出治具完成");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ6E)#") != -1)//治具未到位
 | 
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ6E)#") != -1)//治具未到位
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gTrackWorkFlow2.m_bJigOK = false;
 | 
					 | 
					 | 
					 | 
							gTrackWorkFlow2.m_bJigOK = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ6E)#] --->轨道2治具未到位");
 | 
					 | 
					 | 
					 | 
							logstrT = "轨道2治具未到位!";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ6E)#] ==>轨道2治具未到位");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ8D1)#") != -1)//治具到位
 | 
					 | 
					 | 
					 | 
						if (PlcMsg.Find("$(KQ8D1)#") != -1)//治具到位
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gTrackWorkFlow2.m_bJigOK = true;
 | 
					 | 
					 | 
					 | 
							gTrackWorkFlow2.m_bJigOK = true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ8D1)#]--->轨道2治具到位");
 | 
					 | 
					 | 
					 | 
							logstrT = "轨道2治具到位!";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//gLogMgr->WriteDebugLog("ReadPlcMsg	[$(KQ8D1)#]==>轨道2治具到位");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gLogMgr->WriteDebugLog(logstrH + logstrT);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -422,12 +530,12 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "G";
 | 
					 | 
					 | 
					 | 
								msg += "G";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_1 打开载盘";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQG)# ==>轨道1 打开载盘";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else
 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "I";
 | 
					 | 
					 | 
					 | 
								msg += "I";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_2 打开载盘";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQI)# ==>轨道2 打开载盘";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Close_Product)//夹紧载盘
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Close_Product)//夹紧载盘
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -435,12 +543,12 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "F";
 | 
					 | 
					 | 
					 | 
								msg += "F";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_1 夹紧载盘";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQF)# ==> 轨道1 夹紧载盘";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else
 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "H";
 | 
					 | 
					 | 
					 | 
								msg += "H";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_2 夹紧载盘";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQH)# ==>轨道2 夹紧载盘";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Vac_Sorb_On)//真空吸附开
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Vac_Sorb_On)//真空吸附开
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -448,12 +556,12 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "9";
 | 
					 | 
					 | 
					 | 
								msg += "9";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_1 真空吸附开";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQ9)# ==>轨道1 真空吸附开";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else
 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "B";
 | 
					 | 
					 | 
					 | 
								msg += "B";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_2 真空吸附开";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQB)# ==>轨道2 真空吸附开";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Vac_Sorb_Off)//真空吸附关
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Vac_Sorb_Off)//真空吸附关
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -461,35 +569,35 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "A";
 | 
					 | 
					 | 
					 | 
								msg += "A";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_1 真空吸附关";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQA)# ==>轨道1 真空吸附关";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else
 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "C";
 | 
					 | 
					 | 
					 | 
								msg += "C";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_2 真空吸附关";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQC)# ==>轨道2 真空吸附关";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Auto_Start)//自动开始(绿灯)
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Auto_Start)//自动开始(绿灯)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							msg += "5";
 | 
					 | 
					 | 
					 | 
							msg += "5";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							log = "SendPlcMsg: 自动开始";
 | 
					 | 
					 | 
					 | 
							log = "SendPlcMsg: $(KQ5)# ==>自动开始";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Auto_End)//自动结束(黄灯)
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Auto_End)//自动结束(黄灯)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							msg += "6";
 | 
					 | 
					 | 
					 | 
							msg += "6";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							log = "SendPlcMsg: 自动结束";
 | 
					 | 
					 | 
					 | 
							log = "SendPlcMsg: $(KQ6)# ==> 自动结束";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Unload)//下料
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Unload)//下料
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "3";
 | 
					 | 
					 | 
					 | 
								msg += "3";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_1 下料";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQ3)# ==>轨道1 下料";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else
 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "4";
 | 
					 | 
					 | 
					 | 
								msg += "4";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_2 下料";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQ4)# ==>轨道1 下料";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Push_Jig_Out)//推治具
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Push_Jig_Out)//推治具
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -497,13 +605,14 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "J";
 | 
					 | 
					 | 
					 | 
								msg += "J";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_1  推出治具";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQJ)# ==>轨道1  推出治具";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else
 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "K";
 | 
					 | 
					 | 
					 | 
								msg += "K";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_2 推出治具";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQK)# ==>轨道2 推出治具";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gLogMgr->WritePlcTimeLog(log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Check_Jig_In)//检测轨道治具
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Check_Jig_In)//检测轨道治具
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -511,12 +620,12 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "L";
 | 
					 | 
					 | 
					 | 
								msg += "L";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_1  检测治具";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQL)# ==>轨道1  检测治具";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else
 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "M";
 | 
					 | 
					 | 
					 | 
								msg += "M";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_2 检测治具";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQM)# ==>轨道2 检测治具";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -525,25 +634,26 @@ CString CTrackWorkFlow::GetSendPlcMsgStr(ETrackPlcCmd PlcCmd)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "D";
 | 
					 | 
					 | 
					 | 
								msg += "D";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_1 取消请求下料";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQD)# ==>轨道1 取消请求下料";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else
 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								msg += "E";
 | 
					 | 
					 | 
					 | 
								msg += "E";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								log = "SendPlcMsg: Track_2 取消请求下料";
 | 
					 | 
					 | 
					 | 
								log = "SendPlcMsg: $(KQE)# ==>轨道2 取消请求下料";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Red_Alam_On)//红灯蜂鸣器开
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Red_Alam_On)//红灯蜂鸣器开
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							msg += "1";
 | 
					 | 
					 | 
					 | 
							msg += "1";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							log = "SendPlcMsg: 红灯蜂鸣器开";
 | 
					 | 
					 | 
					 | 
							log = "SendPlcMsg: $(KQ1)# ==>红灯蜂鸣器开";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Red_Alam_Off)//红灯蜂鸣器开
 | 
					 | 
					 | 
					 | 
						if (PlcCmd == _ETrack_PlcCmd_Red_Alam_Off)//红灯蜂鸣器开
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							msg += "2";
 | 
					 | 
					 | 
					 | 
							msg += "2";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							log = "SendPlcMsg: 红灯蜂鸣器关";
 | 
					 | 
					 | 
					 | 
							log = "SendPlcMsg: $(KQ2)# ==>红灯蜂鸣器关";
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gLogMgr->WriteDebugLog(log);
 | 
					 | 
					 | 
					 | 
						gLogMgr->WriteDebugLog(log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						msg += ")#\r\n";
 | 
					 | 
					 | 
					 | 
						msg += ")#\r\n";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return msg;
 | 
					 | 
					 | 
					 | 
						return msg;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -554,15 +664,17 @@ bool CTrackWorkFlow::SendMsgToPlc(ETrackPlcCmd PlcCmd, bool bStopReadMsg)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (bStopReadMsg)
 | 
					 | 
					 | 
					 | 
						if (bStopReadMsg)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							m_bStopReadMsg = true;//暂停读取
 | 
					 | 
					 | 
					 | 
							m_bStopReadMsg = true;//暂停读取
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Sleep(300);
 | 
					 | 
					 | 
					 | 
							Sleep(100);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CString Msg = GetSendPlcMsgStr(PlcCmd);
 | 
					 | 
					 | 
					 | 
						CString Msg = GetSendPlcMsgStr(PlcCmd);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (m_TrackCOM.IsOpen())
 | 
					 | 
					 | 
					 | 
						if (m_TrackCOM.IsOpen())
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							char * buf = Msg.GetBuffer();
 | 
					 | 
					 | 
					 | 
							char * buf = Msg.GetBuffer();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							int len = Msg.GetLength();
 | 
					 | 
					 | 
					 | 
							int len = Msg.GetLength();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_TrackCOM.ClearCache();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							m_TrackCOM.WriteBuf(buf, len);//发送
 | 
					 | 
					 | 
					 | 
							m_TrackCOM.WriteBuf(buf, len);//发送
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog("SendMsgToPlc--->" + Msg);
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//gLogMgr->WriteDebugLog("SendMsgToPlc==>" + Msg);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						else
 | 
					 | 
					 | 
					 | 
						else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -604,21 +716,28 @@ void CTrackWorkFlow::VacSorbOnOff(bool bOn)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					bool CTrackWorkFlow::PushJigOut()
 | 
					 | 
					 | 
					 | 
					bool CTrackWorkFlow::PushJigOut()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (gLogMgr->IsDebuging())
 | 
					 | 
					 | 
					 | 
						/*if (gLogMgr->IsDebuging())
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return true;
 | 
					 | 
					 | 
					 | 
							return true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}*/
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ETrackPlcCmd PlcCmd;
 | 
					 | 
					 | 
					 | 
						ETrackPlcCmd PlcCmd;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						PlcCmd = _ETrack_PlcCmd_Push_Jig_Out;
 | 
					 | 
					 | 
					 | 
						PlcCmd = _ETrack_PlcCmd_Push_Jig_Out;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						SendMsgToPlc(PlcCmd, false);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						m_bPushJigOut = false;
 | 
					 | 
					 | 
					 | 
						m_bPushJigOut = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						SendMsgToPlc(PlcCmd, false);	
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						/*//强制等待10秒再检测是否推出完成
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						Sleep(10000);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					*/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						int MaxCheckTimes = 150;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int cnt = 0;
 | 
					 | 
					 | 
					 | 
						int cnt = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						while (cnt < 200 && (!m_bPushJigOut))
 | 
					 | 
					 | 
					 | 
						while ((!m_bPushJigOut) && (cnt < MaxCheckTimes));
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Sleep(300);
 | 
					 | 
					 | 
					 | 
							Sleep(200);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							cnt++;
 | 
					 | 
					 | 
					 | 
							cnt++;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} 
 | 
					 | 
					 | 
					 | 
						} 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (cnt == 200)
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (cnt == MaxCheckTimes)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gTrackWorkFlow1.RadAlamOnOff(true);
 | 
					 | 
					 | 
					 | 
							gTrackWorkFlow1.RadAlamOnOff(true);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							AfxMessageBox("推出治具超时!");
 | 
					 | 
					 | 
					 | 
							AfxMessageBox("推出治具超时!");
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -627,24 +746,34 @@ bool CTrackWorkFlow::PushJigOut()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return true;
 | 
					 | 
					 | 
					 | 
						return true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					bool CTrackWorkFlow::IsJigOK()
 | 
					 | 
					 | 
					 | 
					bool CTrackWorkFlow::IsJigOK()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#ifdef CUSTOM_TXD_2_XL
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (gLogMgr->IsDebuging())
 | 
					 | 
					 | 
					 | 
						if (gLogMgr->IsDebuging())
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return true;
 | 
					 | 
					 | 
					 | 
							return true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (!gCommonFlowMgr->m_bCheckJig)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							return true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						//return true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ETrackPlcCmd PlcCmd;
 | 
					 | 
					 | 
					 | 
						ETrackPlcCmd PlcCmd;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						PlcCmd = _ETrack_PlcCmd_Check_Jig_In;
 | 
					 | 
					 | 
					 | 
						PlcCmd = _ETrack_PlcCmd_Check_Jig_In;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						m_bJigOK = false;
 | 
					 | 
					 | 
					 | 
						m_bJigOK = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						SendMsgToPlc(PlcCmd, false);
 | 
					 | 
					 | 
					 | 
						SendMsgToPlc(PlcCmd, false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int cnt = 0;
 | 
					 | 
					 | 
					 | 
						int cnt = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						while (cnt < 10 && (!m_bJigOK))
 | 
					 | 
					 | 
					 | 
						while (cnt < 20 && (!m_bJigOK))
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Sleep(300);
 | 
					 | 
					 | 
					 | 
							Sleep(100);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							cnt++;
 | 
					 | 
					 | 
					 | 
							cnt++;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (cnt == 10)
 | 
					 | 
					 | 
					 | 
						if (cnt == 20)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gTrackWorkFlow1.RadAlamOnOff(true);
 | 
					 | 
					 | 
					 | 
							gTrackWorkFlow1.RadAlamOnOff(true);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							AfxMessageBox(m_TrackName + " 治具未到位!");
 | 
					 | 
					 | 
					 | 
							AfxMessageBox(m_TrackName + " 治具未到位!");
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -731,6 +860,17 @@ void CTrackWorkFlow::MoveToPos(ETrackWorkStep WorkStep)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						Motor.NotifyObservers();
 | 
					 | 
					 | 
					 | 
						Motor.NotifyObservers();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					bool CTrackWorkFlow::IsTrackIdle()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return (m_CurWorkStep != _ETrack_Step_Catch_mark)&&(m_CurWorkStep != _ETrack_Step_Marking);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void CTrackWorkFlow::KillCurWorkThread()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (m_pthread)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							TerminateThread(m_pthread->m_hThread, 0);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//上料
 | 
					 | 
					 | 
					 | 
					//上料
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void CTrackWorkFlow::Load()
 | 
					 | 
					 | 
					 | 
					void CTrackWorkFlow::Load()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -835,27 +975,28 @@ void CTrackWorkFlow::ChangePlatXYGroupIdx()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void CTrackWorkFlow::CatchMark()
 | 
					 | 
					 | 
					 | 
					void CTrackWorkFlow::CatchMark()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						/*if (!gObjComponentMgr->GetTwoMarkPt(Dbxy(), Dbxy()))//获取定位点
 | 
					 | 
					 | 
					 | 
						if (!gObjComponentMgr->GetTwoMarkPt(Dbxy(), Dbxy()))//获取定位点
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							CMsgBox MsgBox;
 | 
					 | 
					 | 
					 | 
							CMsgBox MsgBox;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							MsgBox.Show("没有加工图形!");
 | 
					 | 
					 | 
					 | 
							MsgBox.Show("没有加工图形!");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return ;
 | 
					 | 
					 | 
					 | 
							return;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}*/
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						//只有无锁定状态才能CatchMark
 | 
					 | 
					 | 
					 | 
						//只有无锁定状态才能CatchMark
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (gCurLockTrackType != _ETrackType_NULL)
 | 
					 | 
					 | 
					 | 
						if (gCurLockTrackType != _ETrackType_NULL)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							m_OldWorkStep = _ETrack_Step_NULL;//强制改变之前的状态
 | 
					 | 
					 | 
					 | 
							m_OldWorkStep = _ETrack_Step_NULL;//强制改变之前的状态
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return;
 | 
					 | 
					 | 
					 | 
							return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gCurLockTrackType = m_TrackType;//锁定当前轨道
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						SetCurTrackWorkStep(_ETrack_Step_Catch_mark);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gCurLockTrackType = m_TrackType;//锁定当前轨道
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						//收集未移动前的数据
 | 
					 | 
					 | 
					 | 
						//收集未移动前的数据
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gClientMgr->SendCmd_CollectData();
 | 
					 | 
					 | 
					 | 
						gClientMgr->SendCmd_CollectData();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						//gMarkAreaMgr->CollectOrgWorkData(gProgram_SZ_XL->IsbSelMarkMode());
 | 
					 | 
					 | 
					 | 
						//gMarkAreaMgr->CollectOrgWorkData(gProgram_SZ_XL->IsbSelMarkMode());
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						thread t1(&CMarkAreaMgr::CollectOrgWorkData, gMarkAreaMgr, gProgram_SZ_XL->IsbSelMarkMode());
 | 
					 | 
					 | 
					 | 
						thread t1(&CMarkAreaMgr::CollectOrgWorkData, gMarkAreaMgr, gProgram_SZ_XL->IsbSelMarkMode());
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						t1.detach();
 | 
					 | 
					 | 
					 | 
						t1.detach();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						SetCurTrackWorkStep(_ETrack_Step_Catch_mark);
 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CString Log = m_TrackName + " CatchMark";
 | 
					 | 
					 | 
					 | 
						CString Log = m_TrackName + " CatchMark";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gLogMgr->WriteDebugLog(Log);
 | 
					 | 
					 | 
					 | 
						gLogMgr->WriteDebugLog(Log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1004,6 +1145,188 @@ void CTrackWorkFlow::CatchMark()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						//恢复报警状态
 | 
					 | 
					 | 
					 | 
						//恢复报警状态
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gTrackWorkFlow1.RadAlamOnOff(false);
 | 
					 | 
					 | 
					 | 
						gTrackWorkFlow1.RadAlamOnOff(false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void CTrackWorkFlow::CatchMarkNewly()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (!gObjComponentMgr->GetTwoMarkPt(Dbxy(), Dbxy()))//获取定位点
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							CMsgBox MsgBox;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							MsgBox.Show("没有加工图形!");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						//只有无锁定状态才能CatchMark
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (gCurLockTrackType != _ETrackType_NULL)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_OldWorkStep = _ETrack_Step_NULL;//强制改变之前的状态
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gCurLockTrackType = m_TrackType;//锁定当前轨道
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						//收集未移动前的数据
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gClientMgr->SendCmd_CollectData();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						//gMarkAreaMgr->CollectOrgWorkData(gProgram_SZ_XL->IsbSelMarkMode());
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						thread t1(&CMarkAreaMgr::CollectOrgWorkData, gMarkAreaMgr, gProgram_SZ_XL->IsbSelMarkMode());
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						t1.detach();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						SetCurTrackWorkStep(_ETrack_Step_Catch_mark);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						CString Log = m_TrackName + " CatchMark";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gLogMgr->WriteDebugLog(Log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						//真空吸附
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						ProductCarrierOpenClose(false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						VacSorbOnOff(true);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						bool Ret = true;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						Ret = IsJigOK();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (gProgram_SZ_XL->IsbShieldMarking() == false)//屏蔽加工过程
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//切换平台XY 组编号
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							ChangePlatXYGroupIdx();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							CProduct &Product = gProductMgr->GetProduct(m_ProductIdx);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gObjComponentMgr->GetTwoMarkPt(Product.o_TheoryMarkPt1, Product.o_TheoryMarkPt2);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gObjComponentMgr->GetMark3Pt(Product.o_TheoryMarkPt3);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//start----------料片2复制料片1信息------------start
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							CProduct  Product2 = Product;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Product2.SetbNewAddProduct(true);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//end----------料片2复制料片1信息并偏移----------------end
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							///--------------------抓取治具1上料片的定位点--------------------///
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//将数据移动到当前product 的基准点上
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Dbxy BasePt(0,0);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//Product.SetBasePt(BasePt);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//轨道2 要偏移基准点
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_2)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Dbxy Track2Offset = gProgram_SZ_XL->GetTrack2Offset();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								BasePt.x = Track2Offset.x;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								BasePt.y = Track2Offset.y;			
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Product.SetBasePt(BasePt);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						/*	//移动obj
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gProgramCutMgr->MoveObjData(BasePt);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//移动area
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//计算所有obj 的中心点
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gObjComponentMgr->CalAllObjCenterPt();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Dbxy AllObjCenterPt = gObjComponentMgr->GetAllObjCenterPt();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gMarkAreaMgr->MoveAllAreaToTargetPt(AllObjCenterPt);*/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Product.ResetRealMarkPt();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//识别定位点1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (Ret)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gCommonFlowMgr->CameraCatchTwoMark(Product);//只抓取一个点
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (!Product.IsSetRealMarkPt1())
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Ret = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//识别定位点3
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Dbxy MarkPt3;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (Ret&&gObjComponentMgr->GetMark3Pt(MarkPt3))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Ret = gCommonFlowMgr->CameraCatchMark3(Product);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//识别定位点2
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (Ret)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gCommonFlowMgr->CameraCatchTwoMark(Product);//只抓取一个点
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (!Product.IsMarkReady())//mark 识别错误 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Ret = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							///Start--------------------抓取治具2上料片的定位点--------------------///		
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Dbxy JigOft = gCommonFlowMgr->GetNPOffset();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Product2.SetBasePt(JigOft + BasePt);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Dbxy Product2MarkPt3;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (gClientMgr->IsbDisableServer())//屏蔽副机,则不抓取
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								goto CatchProduct2Finished;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Product2.ResetRealMarkPt();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//识别定位点1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (Ret)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gCommonFlowMgr->CameraCatchTwoMark(Product2);//只抓取一个点
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								if (!Product2.IsSetRealMarkPt1())
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									Ret = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//识别定位点3
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (gObjComponentMgr->GetMark3Pt(Product2MarkPt3) && Ret)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Ret = gCommonFlowMgr->CameraCatchMark3(Product2);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//识别定位点2
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (Ret)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gCommonFlowMgr->CameraCatchTwoMark(Product2);//只抓取一个点
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (!Product2.IsMarkReady())//mark 识别错误 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Ret = false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gClientMgr->SendCmd_ProductInfo(Product2);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							///End--------------------抓取治具2上料片的定位点--------------------End///
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						CatchProduct2Finished:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//抓取失败时/非自动状态时
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (Ret == false || m_bAutoWorking == false)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								VacSorbOnOff(false);//真空放开
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								//解除锁定
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gCurLockTrackType = _ETrackType_NULL;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (m_bAutoWorking)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (Ret == false)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								SetCurTrackWorkStep(_ETrack_Step_Catch_mark_Err);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								SetCurTrackWorkStep(_ETrack_Step_Catch_mark_End);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//数据移动回默认的位置(防止area 移位)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gProgramCutMgr->MoveObjData(Dbxy(0, 0));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							SetCurTrackWorkStep(_ETrack_Step_Stop);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//解除锁定
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (m_TrackType == gCurLockTrackType)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gCurLockTrackType = _ETrackType_NULL;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (m_CurWorkStep != _ETrack_Step_Catch_mark_End)//异常停止时
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//数据移动回默认的位置(防止area 移位)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gProgramCutMgr->MoveObjData(Dbxy(0, 0));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						//恢复报警状态
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gTrackWorkFlow1.RadAlamOnOff(false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//加工过程
 | 
					 | 
					 | 
					 | 
					//加工过程
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void CTrackWorkFlow::MarkProcess()
 | 
					 | 
					 | 
					 | 
					void CTrackWorkFlow::MarkProcess()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1022,6 +1345,8 @@ void CTrackWorkFlow::MarkProcess()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gCurLockTrackType = m_TrackType;//锁定
 | 
					 | 
					 | 
					 | 
						gCurLockTrackType = m_TrackType;//锁定
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CString Log = m_TrackName + " MarkProcess";
 | 
					 | 
					 | 
					 | 
						CString Log = m_TrackName + " MarkProcess";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gLogMgr->WriteDebugLog(Log);
 | 
					 | 
					 | 
					 | 
						gLogMgr->WriteDebugLog(Log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1050,8 +1375,6 @@ void CTrackWorkFlow::MarkProcess()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							//XY 组切换
 | 
					 | 
					 | 
					 | 
							//XY 组切换
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							MarkProcessExt();
 | 
					 | 
					 | 
					 | 
							MarkProcessExt();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							//设置当前的工作步骤
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							SetCurTrackWorkStep(_ETrack_Step_Marking);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							//数据移动回默认的位置
 | 
					 | 
					 | 
					 | 
							//数据移动回默认的位置
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gProgramCutMgr->MoveObjData(Dbxy(0, 0));
 | 
					 | 
					 | 
					 | 
							gProgramCutMgr->MoveObjData(Dbxy(0, 0));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0));
 | 
					 | 
					 | 
					 | 
							gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0));
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1212,8 +1535,7 @@ void CTrackWorkFlow::UnLoad()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (gProgram_SZ_XL->IsbAutoWorkMode())//自动模式
 | 
					 | 
					 | 
					 | 
							if (gProgram_SZ_XL->IsbAutoWorkMode())//自动模式
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								//通知下料机到下料 接载具位
 | 
					 | 
					 | 
					 | 
								//通知下料机下料
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								m_bPushJigReady = false;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Unload, true) == false)
 | 
					 | 
					 | 
					 | 
								if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Unload, true) == false)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								{
 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
					 | 
					 | 
					 | 
									SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1221,42 +1543,35 @@ void CTrackWorkFlow::UnLoad()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									gLogMgr->WriteDebugLog(Log);
 | 
					 | 
					 | 
					 | 
									gLogMgr->WriteDebugLog(Log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									return;
 | 
					 | 
					 | 
					 | 
									return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								//等待下料机到可推出载具位
 | 
					 | 
					 | 
					 | 
								//等待拉走载具
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								CString str = "轨道1";
 | 
					 | 
					 | 
					 | 
								CString str = "轨道1";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (m_TrackType == _ETrackType_Track_2)
 | 
					 | 
					 | 
					 | 
								if (m_TrackType == _ETrackType_Track_2)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									str = "轨道2";
 | 
					 | 
					 | 
					 | 
									str = "轨道2";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								CString logstr;
 | 
					 | 
					 | 
					 | 
								CString logstr;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								logstr.Format("等待[下料机] 运动至[%s]下载具位.", str);
 | 
					 | 
					 | 
					 | 
								logstr.Format("等待[%s]拉走载具.", str);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								gLogMgr->WriteDebugLog(logstr);
 | 
					 | 
					 | 
					 | 
								gLogMgr->WriteDebugLog(logstr);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
								m_bPullJigOut = false;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								int cnt = 0;
 | 
					 | 
					 | 
					 | 
								int cnt = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								while ((!m_bPushJigReady) && cnt < 400)
 | 
					 | 
					 | 
					 | 
								while (!m_bPullJigOut&&cnt < 400)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								{
 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									Sleep(300);
 | 
					 | 
					 | 
					 | 
									Sleep(300);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									cnt++;
 | 
					 | 
					 | 
					 | 
									cnt++;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (cnt == 400)
 | 
					 | 
					 | 
					 | 
								if (cnt == 400)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								{
 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									Log = m_TrackName + " [下料机] 运动至下载具位 超时!";
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									gLogMgr->WriteDebugLog(Log);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									gTrackWorkFlow1.RadAlamOnOff(true);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									AfxMessageBox(m_TrackName + " [下料机] 运动至下载具位超时!请手动下料!");
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									gTrackWorkFlow1.RadAlamOnOff(false);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
					 | 
					 | 
					 | 
									SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									Log = m_TrackName + " 拉出治具 超时!";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									gLogMgr->WriteDebugLog(Log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									AfxMessageBox("拉出治具超时!请手动下料!");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									return;
 | 
					 | 
					 | 
					 | 
									return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (!PushJigOut())//推出治具
 | 
					 | 
					 | 
					 | 
								Sleep(30000);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								{
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									return;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Sleep(3000);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								//平台移动到 送回空治具的位置
 | 
					 | 
					 | 
					 | 
								//平台移动到 送回空治具的位置
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								MoveToPos(_ETrack_Step_WaitBack);
 | 
					 | 
					 | 
					 | 
								MoveToPos(_ETrack_Step_WaitBack);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_WaitBack, true);//告诉下料机,我已到可回治具位
 | 
					 | 
					 | 
					 | 
								gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_WaitBack, true);//告诉下料机,我已到位
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								m_bLoadProduct = false;//轨道上是否load 了产品
 | 
					 | 
					 | 
					 | 
								m_bLoadProduct = false;//轨道上是否load 了产品
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else//手动模式直接跳过下料步骤
 | 
					 | 
					 | 
					 | 
							else//手动模式直接跳过下料步骤
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1272,7 +1587,6 @@ void CTrackWorkFlow::UnLoad()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return;
 | 
					 | 
					 | 
					 | 
								return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							//通知下料机下料
 | 
					 | 
					 | 
					 | 
							//通知下料机下料
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							m_bPushJigReady = false;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Unload, true) == false)
 | 
					 | 
					 | 
					 | 
							if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_Unload, true) == false)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
					 | 
					 | 
					 | 
								SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1280,45 +1594,172 @@ void CTrackWorkFlow::UnLoad()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								gLogMgr->WriteDebugLog(Log);
 | 
					 | 
					 | 
					 | 
								gLogMgr->WriteDebugLog(Log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return;
 | 
					 | 
					 | 
					 | 
								return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							//等待下料机到可推出载具位
 | 
					 | 
					 | 
					 | 
							//等待拉走载具
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							CString str = "轨道1";
 | 
					 | 
					 | 
					 | 
							CString str = "轨道1";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_2)
 | 
					 | 
					 | 
					 | 
							if (m_TrackType == _ETrackType_Track_2)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								str = "轨道2";
 | 
					 | 
					 | 
					 | 
								str = "轨道2";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							CString logstr;
 | 
					 | 
					 | 
					 | 
							CString logstr;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							logstr.Format("等待[下料机] 运动至[%s]下载具位.", str);
 | 
					 | 
					 | 
					 | 
							logstr.Format("等待[%s]拉走载具.", str);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog(logstr);
 | 
					 | 
					 | 
					 | 
							gLogMgr->WriteDebugLog(logstr);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
							m_bPullJigOut = false;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							int cnt = 0;
 | 
					 | 
					 | 
					 | 
							int cnt = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							while ((!m_bPushJigReady) && cnt < 400)
 | 
					 | 
					 | 
					 | 
							while (!m_bPullJigOut&&cnt < 400)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Sleep(300);
 | 
					 | 
					 | 
					 | 
								Sleep(300);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								cnt++;
 | 
					 | 
					 | 
					 | 
								cnt++;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (cnt == 400)
 | 
					 | 
					 | 
					 | 
							if (cnt == 400)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Log = m_TrackName + "  [下料机] 运动至下载具位 超时!";
 | 
					 | 
					 | 
					 | 
								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)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								//cnt++;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						auto FunctionUnload = [&]() 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//通知下料机到下料 接载具位
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							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);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							while ((!m_bPushJigReady) )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Sleep(300);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							/ *if (cnt == 400)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Log = m_TrackName + " [下料机] 运动至下载具位 超时!";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								gLogMgr->WriteDebugLog(Log);
 | 
					 | 
					 | 
					 | 
								gLogMgr->WriteDebugLog(Log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								gTrackWorkFlow1.RadAlamOnOff(true);
 | 
					 | 
					 | 
					 | 
								gTrackWorkFlow1.RadAlamOnOff(true);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								AfxMessageBox(m_TrackName + "[下料机] 运动至下载具位超时!请手动下料!");
 | 
					 | 
					 | 
					 | 
								AfxMessageBox(m_TrackName + " [下料机] 运动至下载具位超时!请手动下料!");
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								gTrackWorkFlow1.RadAlamOnOff(false);
 | 
					 | 
					 | 
					 | 
								gTrackWorkFlow1.RadAlamOnOff(false);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
					 | 
					 | 
					 | 
								SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return;
 | 
					 | 
					 | 
					 | 
								return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}* /
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (!PushJigOut())//推出治具
 | 
					 | 
					 | 
					 | 
							if (!PushJigOut())//推出治具
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
					 | 
					 | 
					 | 
								SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return;
 | 
					 | 
					 | 
					 | 
								return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}		
 | 
					 | 
					 | 
					 | 
							}		
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
							if (gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_PushOut_Finished, true) == false)
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Sleep(3000);
 | 
					 | 
					 | 
					 | 
							{
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								SetCurTrackWorkStep(_ETrack_Step_Unload_Err);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Log = m_TrackName + " unload Err";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								gLogMgr->WriteDebugLog(Log);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							//平台移动到 送回空治具的位置
 | 
					 | 
					 | 
					 | 
							//平台移动到 送回空治具的位置
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							MoveToPos(_ETrack_Step_WaitBack);
 | 
					 | 
					 | 
					 | 
							MoveToPos(_ETrack_Step_WaitBack);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_WaitBack, true);//告诉下料机,我已到可回治具位
 | 
					 | 
					 | 
					 | 
							gProgram_SZ_XL->SendMsgToLoadDevice(m_TrackType, _ETrack_Step_WaitBack, true);//告诉下料机,我已到可回治具位
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							m_bLoadProduct = false;//轨道上是否load 了产品
 | 
					 | 
					 | 
					 | 
							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 轴到安全区域
 | 
					 | 
					 | 
					 | 
					//移动Y 轴到安全区域
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void CTrackWorkFlow::MoveMotorYToSafePos()
 | 
					 | 
					 | 
					 | 
					void CTrackWorkFlow::MoveMotorYToSafePos()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |