#pragma once #include "CModule.h" #include "CNozzleTable.h" #include "CBondMatrix.h" #include "CForceControl.h" #include "CRCalib.h" #include "CLookUpCalib.h" #include "CTransferTable.h" #include "CXYCalib.h" #include "TipMatrix.h" class __declspec(dllexport) CBondHead : public CModule { public: CBondHead(MODULE_LIST eModuleType); ~CBondHead(); virtual LONG AllocateAxis(vector<CAxis*> vecAxis); virtual LONG AllocateIo(vector<CIO*> vecIo); void SetXAxis(CAxis* axis) { m_pXAxis = axis; } CAxis* GetXAxis() { return m_pXAxis; } void SetYAxis(CAxis* axis) { m_pYAxis = axis; } CAxis* GetYAxis() { return m_pYAxis; } void SetZAxis(CAxis* axis) { m_pZAxis = axis; } CAxis* GetZAxis() { return m_pZAxis; } //void SetForceZAxis(CAxis* axis) { m_pForcerZ = axis; } //CAxis* GetForceZAxis() { return m_pForcerZ; } void SetRAxis(CAxis* axis) { m_pRAxis = axis; } CAxis* GetRAxis() { return m_pRAxis; } void SetCoord(CCoord* pCrd) { m_pCoord_XY = pCrd; } CCoord* GetCoord() { return m_pCoord_XY; } void SetVacDO(CIO* out) { m_pBDVacGpo = out; } void SetFlowDo(CIO* out) { m_pBDFlowGpo = out; } void SetVacDi(CIO* input) { m_pBDVacGpi = input; } void SetFlowDi(CIO* input) { m_pBDFlowGpi = input; } void SetNozzleTable(CNozzleTable* nozzleTable) { m_pNozzleTable = nozzleTable; } void SetLookUpCamera(CCameraBase* camera) { m_pLookUpCamera = camera; } void SetWaferTransferTable(CTransferTable* tt) { m_pWaferTransferTable = tt; } void SetWaffleTransferTable(CTransferTable* tt) { m_pWaffleTransferTable = tt; } //void SetForceControl(CForceControl* force) { m_pForceControl = force; } CForceControl* GetForceControl() { return m_pForceControl; } CXYCalib* GetLookUpCameraCalib() { return m_pLookUpXYCalib; } CRCalib* GetHeadRCalib() { return m_pRCalib; } bool GetIsLocationAll() { return m_bIsLocationAll; } virtual void SetHighCamera(CCameraBase* camera) {} virtual void SetLowCamera(CCameraBase* camera) { m_pLowCamera = camera; } virtual CXYCalib* GetLowCameraCalib() { return m_pLowXYCalib; } virtual CXYCalib* GetHighCameraCalib() { return nullptr; } virtual CCTDCalib* GetLowCTDCalib() { return m_pLowCTDCalib; } virtual LONG ToHome(); virtual LONG ToSafePosition(); LONG XYMove(double x, double y, bool bSync = true); LONG XYMoveTo(double x,double y, bool bSync = true); LONG XYZMoveTo(double x, double y,double z); LONG XYZRMoveTo(double x, double y, double z,double r); virtual void SetPickHTestIndex(int index) = 0; virtual void SetBondHTestIndex(int index) = 0; virtual LONG PickHightTest();//����֮ǰ��SetIndex virtual LONG AllBondHighTest() = 0; virtual LONG BondHighTest(); virtual LONG VacuumOn(long lDelay); //��տ�,�����ʱ��ms virtual LONG VacuumOff(long lDelay); //��չ�,������ʱ��ms virtual LONG StrongOn(); //ǿ���� virtual LONG StrongOff(); //ǿ���� virtual LONG UltraOn(int iUltraValue) { return OK; }; //������ virtual LONG UltraOff() { return OK; }; //������ virtual LONG ChangeNozzle(int nozzleIndex); virtual LONG UnLoadNozzle(); virtual LONG LoadNozzle(int nozzleIndex); virtual LONG CheckDieExistStatus(bool& bExist); virtual LONG MoveLowCameraToNozzle(); virtual LONG MoveNozzleToLowCamera(); //����ȡ�� virtual LONG MoveToPickGrabPos(bool waitDone = true); virtual LONG PickGrab(int index, X_Y_ANGLE_STRUCT& result);//��ת̨���գ��������ս�������ս��������ʰȡƫ�ƣ����洢 //virtual LONG MoveToPickPos();//�ƶ���ʰȡλ��δ���� virtual LONG PickDie(int index);//���գ�ȡ���������е���������λ����Ҫ�����Զ����� virtual LONG PickDieDown(int index, X_Y_ANGLE_STRUCT result);//�������ս������ʰȡ����ƫ�� virtual LONG PickUpToGrabPos(); virtual LONG PickDieUp(bool waitDone = true);//���е���ȫλ�� //�������� virtual LONG XYZToLookUpGrabPos(); virtual LONG LookUpGrab(int index,X_Y_ANGLE_STRUCT& result);//�ƶ�����������λ�����ս���ŵ��ṹ���� //����̾� virtual LONG PlaceDie(int index, X_Y_ANGLE_STRUCT lookUpOffsetPixel) = 0; virtual LONG MoveToBondGrabPos(int index) = 0; virtual LONG BondGrab(int index, X_Y_ANGLE_STRUCT& result) = 0; //���ص����ս��Ϊ������λ virtual LONG ToBondPos_AddOffset(int index, X_Y_ANGLE_STRUCT bondOffset, X_Y_ANGLE_STRUCT lookUpOffset, bool waitDone = true) = 0;//��������λ�� virtual LONG BondDieDown(int index) = 0;//��������λ�� virtual LONG BondDieUp(bool waitDone = true) = 0 ; virtual LONG FindForce(double force); //Ѱѹ��Ѱ�������ᷴ��λ�� virtual LONG UpdateForce(double dForce); //�л����Ĵ�С virtual LONG GetCurForceCurrentPercent(short& current); virtual LONG GetCurForce(double& force); virtual LONG Sync(); //virtual LONG PickHightTest(); //virtual LONG BondHighTest(); //�궨 virtual LONG HighCameraCTDCalib() { return OK; } virtual LONG LowCameraPosCalib(); virtual LONG LowCTDNozzlePosCalib(); virtual LONG CalLowCTDResult(); virtual LONG NozzleRotCenterCalib(); virtual LONG LowCameraXYCalib(); virtual LONG LookUpCameraXYCalib(); //��������ģ�� virtual LONG CreatePickTemp(int dieIndex); virtual LONG CreateLookUpTemp(int dieIndex); virtual LONG CreateBondTemp(int dieIndex); //���ر궨 virtual LONG SpringForceCalib(); virtual LONG CurrentForceCalib(); //�����궨ģ�� virtual LONG CreateLowCameraCalibTemp(); virtual LONG CreateLookUpCameraCalibTemp(); virtual LONG CreateRCalibTemp(); virtual LONG CreateCTDLookUpCameraTemp(); virtual LONG CreateCTDHeadCameraTemp(); virtual LONG CreateCTDTipTemp(); //�������λ���л� virtual LONG LowCameraToHead(); virtual LONG HeadToLowCamera(); virtual LONG HighCameraToHead(); virtual LONG HeadToHighCamera(); //��������ģ�� //virtual LONG CreatePickTemp(); //virtual LONG CreateLookUpTemp(); //virtual LONG CreateBondTemp(); protected: BOND_PARAM m_stBondParam; CBondMatrix* m_pBondMatrix = nullptr; CForceControl* m_pForceControl = nullptr; CTransferTable* m_pWaferTransferTable = nullptr; CTransferTable* m_pWaffleTransferTable = nullptr; CNozzleTable* m_pNozzleTable = nullptr; CCameraBase* m_pLowCamera = nullptr; CAxis* m_pXAxis = nullptr; CAxis* m_pYAxis = nullptr; CAxis* m_pZAxis = nullptr; CAxis* m_pRAxis = nullptr; //CAxis* m_pForcerZ = nullptr; CIO* m_pForcerDo = nullptr; CIO* m_pForcerAO = nullptr; CIO* m_pBDVacGpo = nullptr; CIO* m_pBDFlowGpo = nullptr; CIO* m_pBDVacGpi = nullptr; CIO* m_pBDFlowGpi = nullptr; CIO* m_pForceScale = nullptr; CCoord* m_pCoord_XY = nullptr; CCameraBase* m_pLookUpCamera = nullptr; CXYCalib* m_pLookUpXYCalib = nullptr;//�������XY�궨 CXYCalib* m_pLowXYCalib = nullptr; CRCalib* m_pRCalib = nullptr; CCTDCalib* m_pLowCTDCalib = nullptr; CPRStrategy* m_pPR = nullptr; TipMatrix* m_pTipMatrix = nullptr; //λ�ò��� double m_dSafePosX = 0;//��ȫλ�� double m_dSafePosY = 0; double m_dSafePosZ = 0; double m_dInitPosR = 0; double m_dPickGrabPosX = 0; //ȡ��λ�� double m_dPickGrabPosY = 0; double m_dPickGrabPosZ = 0; //ʰȡ����λ double m_dLookUpGrabPosX = 0; double m_dLookUpGrabPosY = 0; double m_dLookUpPosZ = 0; double m_dPreChangeNozzleDisY = 0;//Ԥ��������ƫ��λ�� double m_dNozzlePosZ = 0; //�����λ��Z //ͳ�Ʋ��� int m_nTipUsedNum = 0; int m_nTipUsedMaxNum = 0; int m_nCurNozzleIndex = 0; //��ǰ������������ϵı�� //int nCurrBondHeadIdByTable; //��ǰʹ�õ�����������̨�ϱ�� //XY_DOUBLE_STRUCT stCalibTableBondPosition; //У̨�̾�λ�� //double m_dPressDistance = 0; //ѹ�Ͼ���,��Ϊ����λ�� double m_dPickVel = 0; //���� double m_dSearchForce = 0; double m_dHoldForce = 0; //������ double m_dPickSearchPosZ = 0;//ʰȡ�߶Ȳ�������λ�� double m_dBondSearchPosZ = 0;//�̾��߶Ȳ�������λ�� //double m_dNozzlePosY = 0;//�����λ��Y double m_dNozzleTableOriginPosX = 0; double m_dNozzleTableOriginPosY = 0; int m_nPickHTestDieIndex = 1; int m_nBondHTestDieIndex = 1; bool m_bIsLocationAll = false; //���ڹ̾�ʱ������ѡȫ�����ղ�������ÿ��PCBֻ��һ�� double m_dGivenForceZPos = 0; //ʰȡ����оƬʱ������ķ���λ�� double m_dBondGrabPosZ = 0; //bondGrabPosZ };