You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
TwoLaserHead-PushJig/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h

140 lines
5.3 KiB
C

#pragma once
#include "CommPortMgr.h"
#include <atomic>
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum ETrackWorkStep
{
_ETrack_Step_NULL = 0,
_ETrack_Step_Stop,//ֹͣ״̬1
_ETrack_Step_Reset_Load_Request,//<2F><>λ<EFBFBD><CEBB><EFBFBD>ϻ<EFBFBD><CFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>2
_ETrack_Step_Load,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3
_ETrack_Step_Load_End,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4
_ETrack_Step_Load_Stop,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ֹͣ5
_ETrack_Step_Load_Err,//<2F><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>6
_ETrack_Step_To_Wait_Pos,//<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>ȴ<EFBFBD>λ<EFBFBD><CEBB>7
_ETrack_Step_Mark_Waiting,//<2F>ȴ<EFBFBD><C8B4>ӹ<EFBFBD><D3B9><EFBFBD>8
_ETrack_Step_Catch_mark,//ץȡ<D7A5><C8A1>λ9
_ETrack_Step_Catch_mark_End,//ץȡ<D7A5><C8A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>10
_ETrack_Step_Catch_mark_Err,//ץȡ<D7A5><C8A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>11
_ETrack_Step_Marking,//<2F>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>12
_ETrack_Step_Mark_Stop,//<2F>ӹ<EFBFBD>ֹͣ13
_ETrack_Step_Mark_Err,//<2F>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD>14
_ETrack_Step_Mark_End,//<2F>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD>15
_ETrack_Step_Throw_Edge,//ȥ<>߿<EFBFBD>16
_ETrack_Step_Throw_Edge_End,//ȥ<>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD>17
_ETrack_Step_Throw_Edge_Stop,//ȥ<>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ֹͣ18
_ETrack_Step_Throw_Edge_Err,//ȥ<>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD>19
_ETrack_Step_Unload,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>20
_ETrack_Step_PulledOut,//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD>
_ETrack_Step_WaitBack,//<2F>ȴ<EFBFBD><C8B4>ͻؿ<CDBB><D8BF>ξ<EFBFBD>
4 years ago
_ETrack_Step_PushOut_Finished,//<2F>ȴ<EFBFBD><C8B4>ͻؿ<CDBB><D8BF>ξ<EFBFBD>
_ETrack_Step_Unload_End,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>21
_ETrack_Step_Unload_Err,//<2F><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>22
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum ETrackType
{
_ETrackType_NULL=0,//
_ETrackType_Track_1,//<2F><><EFBFBD><EFBFBD>1
_ETrackType_Track_2,//<2F><><EFBFBD><EFBFBD>2
};
//<2F><><EFBFBD>͸<EFBFBD>plc ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum ETrackPlcCmd
{
_ETrack_PlcCmd_Auto_Start = 0,//<2F>Զ<EFBFBD><D4B6><EFBFBD>ʼ
_ETrack_PlcCmd_Auto_End,//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Load,//<2F><><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Unload,//<2F><><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Open_Product,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Close_Product,//<2F>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Cancel_Unload,//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Vac_Sorb_On,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Vac_Sorb_Off,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Red_Alam_On,//<2F><><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Red_Alam_Off,//<2F><><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ETrack_PlcCmd_Push_Jig_Out,//<2F>Ƴ<EFBFBD><C6B3>ξ<EFBFBD>
_ETrack_PlcCmd_Check_Jig_In,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξߵ<CEBE>λ
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CTrackWorkFlow
{
public:
CTrackWorkFlow(CString Name);
~CTrackWorkFlow(void);
void SetComPar(int Port,int BaudRate);
void WorkFlowStart(bool bOpenCom=true);
void WorkFlowCtrl();
void ExecuteCurStep();
bool StartAutoWork();
void StopAutoWork();
void ReadPlcMsg();
void ManualOperation(ETrackWorkStep TrackWorkStep);
bool IsbAutoWorking(){return m_bAutoWorking;};
void SetCurTrackWorkStep(ETrackWorkStep Step);
ETrackWorkStep GetCurTrackWorkStep(){return m_CurWorkStep;};
int GetCurTrackWorkStepInt(){return (int)m_CurWorkStep;};
void SendAutoStartFlg(bool bStart);
void ProductCarrierOpenClose(bool bOpen);
void VacSorbOnOff(bool bOn);
bool PushJigOut();
bool IsJigOK();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξߵ<CEBE>λ
void RadAlamOnOff(bool bOn);
int GetCutProductCnt(){return m_CutProductCnt;};
void ReadRecordTimesFromFile();
void ResetRecordTimes();
bool SendMsgToPlc(ETrackPlcCmd PlcCmd,bool bStopReadMsg);
void MoveMotorYToSafePos();
void CancelUnloadRequest();
void SetbCircleStop(bool b){m_bCircleStop = b;};
bool GetbCircleStop() { return m_bCircleStop ; };
BOOL m_bCarrierOpen = true;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɿ<EFBFBD>
bool IsTrackIdle();//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void KillCurWorkThread();
private:
void Load();
void MoveToWaitPos();
void MoveToPos(ETrackWorkStep WorkStep);
void MarkProcess();
bool MarkProcessExt();
void ReadPlcMsgExt();
void AnalyzeRecvPlcCmd(char *buf,int len);
void ThrowEdge();
void UnLoad();
void CatchMark();
void CatchMarkNewly();
void ChangePlatXYGroupIdx();
CString GetSendPlcMsgStr(ETrackPlcCmd PlcCmd);
void WriteRecordTimesToFile();
CString GetRecordFilePath();
public:
static CCommPortMgr m_TrackCOM;//ͨ<><CDA8><EFBFBD>õĴ<C3B5><C4B4>ڹ<EFBFBD><DAB9><EFBFBD>
private:
int m_ComPort;//ͨ<><CDA8><EFBFBD>ô<EFBFBD><C3B4>ں<EFBFBD>
int m_ComBaudRate;//ͨ<><CDA8><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
bool m_bStopReadMsg;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ͣ<EFBFBD><CDA3>ȡplc <20><>Ϣ
int m_ReadMsgDelay;//<2F><>ȡplc <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ʱms
ETrackType m_TrackType;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ETrackWorkStep m_CurWorkStep;//<2F><>ǰ<EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ETrackWorkStep m_OldWorkStep;//֮ǰ<D6AE>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>仯)
CString m_TrackName;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool m_bAutoWorking;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ӹ<EFBFBD>
int m_ProductIdx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>Ʒ<EFBFBD><C6B7>λ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
bool m_bLoadProduct;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>load <20>˲<EFBFBD>Ʒ
int m_CutProductCnt;//<2F>и<EFBFBD><D0B8><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool m_bCircleStop;//<2F><>ǰѭ<C7B0><D1AD><EFBFBD><EFBFBD>ֹͣ
CWinThread * m_pthread=NULL;
public:
atomic_bool m_bPushJigOut = false;//<2F>Ƴ<EFBFBD>ָ<EFBFBD><EFBFBD><EEB7A2><EFBFBD><EFBFBD>,<2C>Ƿ<EFBFBD><C7B7>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>ؾ<EFBFBD>
atomic_bool m_bPullJigOut = false;//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEB7A2><EFBFBD><EFBFBD>,<2C>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD>
atomic_bool m_bPushJigReady = false;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>,<2C>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3>ξ<EFBFBD>
atomic_bool m_bJigOK = false;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>,<2C>ξ<EFBFBD><CEBE>Ƿ<EFBFBD><C7B7><EFBFBD>λ
};
extern CTrackWorkFlow gTrackWorkFlow1;//<2F><><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>
extern CTrackWorkFlow gTrackWorkFlow2;//<2F><><EFBFBD><EFBFBD>2 <20><><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>
extern ETrackType gCurLockTrackType;