diff --git a/LaiPuLaser/DlgSW_XL_Flow.cpp b/LaiPuLaser/DlgSW_XL_Flow.cpp index 3e45fb8..2ac951c 100644 --- a/LaiPuLaser/DlgSW_XL_Flow.cpp +++ b/LaiPuLaser/DlgSW_XL_Flow.cpp @@ -431,10 +431,15 @@ void CDlgSW_XL_Flow::OnBnClickedThrowEdgeBtn2() } void CDlgSW_XL_Flow::OnBnClickedUnloadBtn1() { + if (gTrackWorkFlow1.GetCurTrackWorkStep()==_ETrack_Step_Unload) + gTrackWorkFlow1.KillCurWorkThread(); + gProgram_SZ_XL->ManualOperation(_ETrackType_Track_1,_ETrack_Step_Throw_Edge_End); } void CDlgSW_XL_Flow::OnBnClickedUnloadBtn2() { + if (gTrackWorkFlow2.GetCurTrackWorkStep() == _ETrack_Step_Unload) + gTrackWorkFlow2.KillCurWorkThread(); gProgram_SZ_XL->ManualOperation(_ETrackType_Track_2,_ETrack_Step_Throw_Edge_End); } void CDlgSW_XL_Flow::OnBnClickedTrack1ProductCarrierOpenClose() diff --git a/LaiPuLaser/Program_SZ_XL.cpp b/LaiPuLaser/Program_SZ_XL.cpp index c4c97bb..7b6db58 100644 --- a/LaiPuLaser/Program_SZ_XL.cpp +++ b/LaiPuLaser/Program_SZ_XL.cpp @@ -1725,6 +1725,7 @@ bool CProgram_SZ_XL::GetLoadCmdStr(ETrackType TrackType, ETrackWorkStep WorkStep LogStr = "通知下料机:轨道2推出治具完成"; } Ret = true; + gLogMgr->WritePlcTimeLog(LogStr); } if (Ret) { diff --git a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp index c3a835d..fa29bf8 100644 --- a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp +++ b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp @@ -124,6 +124,14 @@ void CTrackWorkFlow::WorkFlowCtrl() Sleep(200); if (m_CurWorkStep == m_OldWorkStep)//无变化 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 结束步骤时 { //取消下料请求 @@ -132,7 +140,7 @@ void CTrackWorkFlow::WorkFlowCtrl() } m_OldWorkStep = m_CurWorkStep;//记录当前步骤 //在新线程中执行 - AfxBeginThread(ExecuteStepThread, this); + m_pthread=AfxBeginThread(ExecuteStepThread, this); } } //执行当前步骤 @@ -711,10 +719,12 @@ bool CTrackWorkFlow::PushJigOut() PlcCmd = _ETrack_PlcCmd_Push_Jig_Out; m_bPushJigOut = false; SendMsgToPlc(PlcCmd, false); - //强制等待10秒再检测是否推出完成 + + /*//强制等待10秒再检测是否推出完成 Sleep(10000); +*/ - int MaxCheckTimes = 300; + int MaxCheckTimes = 150; int cnt = 0; while ((!m_bPushJigOut) && (cnt < MaxCheckTimes)); { @@ -845,6 +855,13 @@ 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() { diff --git a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h index 8340c74..4d17f37 100644 --- a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h +++ b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h @@ -91,6 +91,7 @@ public: bool GetbCircleStop() { return m_bCircleStop ; }; BOOL m_bCarrierOpen = true;//当前气缸是否松开 bool IsTrackIdle();//是否轨道空闲中 + void KillCurWorkThread(); private: void Load(); void MoveToWaitPos(); @@ -125,7 +126,7 @@ private: bool m_bLoadProduct;//轨道上是否load 了产品 int m_CutProductCnt;//切割产品的数量 bool m_bCircleStop;//当前循环后停止 - + CWinThread * m_pthread=NULL; public: atomic_bool m_bPushJigOut = false;//推出指令发出后,是否推出了载具 atomic_bool m_bPullJigOut = false;//下料指令发出后,是否拉走了载具