#pragma once #include "CModule.h" #include "CRCalib.h" #include "CNozzleTable.h" #include "CEjector.h" #include "CTransferTable.h" #include "CForceControl.h" #include "CMatrixCommon.h" /* 1��Waferȡ��ͷû��������ж��� 2�������Ӿ���ֻ���ض�λ��ȡ���ͷž� */ class __declspec(dllexport) CWaferHead : public CModule { public: CWaferHead(MODULE_LIST eModuleType); ~CWaferHead(); virtual void SetDataChangFunction() override; virtual LONG SetParam() override;//�������ò��� virtual LONG GetParam() override;//�������ò��� virtual LONG ToHome() override; virtual LONG Sync() override; virtual LONG ToSafePosition() override; virtual LONG InitResource() override; //�����ᡢIO���궨����Դ virtual void DataChangNotice(string strDbName, string strTableName) override; //�ص������������� virtual LONG AllocateAxis(vector<CAxis*> vecAxis) override; virtual LONG AllocateIo(vector<CIO*> vecIo) override; ULONG GetCurrentBondIndex() {return m_iCurrentBondIndex;} void SetCurrentBondIndex(ULONG index) { m_iCurrentBondIndex = index; } void SetZEPZCoord(CCoord* crd) { m_pZEPZCoord = crd; } void SetXYCoord(CCoord* crd) { m_pXYCrd = crd; } void SetNozzleTable(CNozzleTable* nozzleTable) { m_pNozzleTable = nozzleTable; } void SetEjector(CEjector* ej) { m_pEjector = ej; } void SetTransferTable(CTransferTable* tt) { m_pTransferTable = tt; } void SetForceControl(CForceControl* force) { m_pForceControl = force; } //�ֶ��� //�������� LONG ChangeNozzle(int nozzleIndex); LONG UnLoadNozzle(); LONG LoadNozzle(int nozzleIndex); //�Զ��� LONG CheckDieExistStatus(bool& bExist); LONG VacuumOn(LONG lDelay); //��տ� LONG VacuumOff(LONG lDelay); //��չ� LONG UpdateForce(double dForce); //�л����Ĵ�С LONG FindForce(double dForce); //LONG UpdatePickParam(int dieIndex); //LONG WaitZTrigYToPick(int index); //�ֶ����̵��� LONG PickDie(int dieIndex, bool bSync); LONG XYZToPrePickPos(int dieIndex, bool bSync); LONG ZSlowToPickPos(int dieIndex, bool bSync); LONG PlaceDie(int dieIndex, bool bSync); LONG XYZToPrePlacePos(int dieIndex, bool bSync); //�Զ����̵��� LONG ZSlowToPlacePos(int dieIndex, bool bSync); //�Զ����̵��� LONG PickDie(bool bSync) { return PickDie(m_iCurrentBondIndex, bSync); }; LONG XYZToPrePickPos(bool bSync) { return XYZToPrePickPos(m_iCurrentBondIndex, bSync); }; LONG ZSlowToPickPos(bool bSync) { return ZSlowToPickPos(m_iCurrentBondIndex, bSync); }; LONG PlaceDie(bool bSync) { return PlaceDie(m_iCurrentBondIndex, bSync); }; LONG XYZToPrePlacePos(bool bSync) { return XYZToPrePlacePos(m_iCurrentBondIndex, bSync); }; LONG ZSlowToPlacePos(bool bSync) { return ZSlowToPlacePos(m_iCurrentBondIndex, bSync); }; //LONG ZEPZSyncUp(bool waitDone);//Z�Ͷ���Zͬ���岹����,���ȴ���ɴ����� LONG ZUpToInitPos(bool waitDone); /*LONG WaitYDone(); LONG WaitZDone();*/ //LONG WaitZTrigYToPlace(int index); //LONG SlowDownPlaceDie(bool waitDone); //�Զ����̵��� private: //��ǰ�̾���Id UINT m_iCurrentBondIndex = NONE_POINT_INDEX; //��Ƭ��ǰλ��״̬ PICK_STATUS m_ePickDieStatus = PICK_STATUS::NO_PICK; //CAxis* m_pXAxis = nullptr; CAxis* m_pYAxis = nullptr; CAxis* m_pZAxis = nullptr; CIO* m_pForcerDO = nullptr; CIO* m_pForcerAO = nullptr; //CAxis* m_pForceAxis = nullptr; CCoord* m_pZEPZCoord = nullptr; CCoord* m_pXYCrd = nullptr; CIO* m_pVacGpo = nullptr; CIO* m_pFlowGpo = nullptr; CIO* m_pVacGpi = nullptr; CIO* m_pFlowGpi = nullptr; CPRStrategy* m_pPR = nullptr; CNozzleTable* m_pNozzleTable = nullptr; CEjector* m_pEjector = nullptr; CTransferTable* m_pTransferTable = nullptr; CForceControl* m_pForceControl = nullptr; CBondMatrix* m_pBondMatrix = nullptr; //PICK_PARAM m_stPickParam; //λ�ò��� double m_dSafePosX = 0;//��ȫλ�� double m_dSafePosY = 0; double m_dSafePosZ = 0; double m_dInitPosR = 0; double m_dPickPosX = 0; //ȡ��λ�� double m_dPickPosY = 0; double m_dPlacePosX = 0;//����оƬ��λ�� double m_dPlacePosY = 0;// double m_dEjHightPos = 0; double m_dEjContactPos = 0;//����Ӵ�λ double m_dYTrigZToBond = 0; double m_dYTrigZToPick = 0; double m_dZTrigYToPick = 0; double m_dZTrigYToBond = 0; double m_dPreChangeNozzleDisY = 0;//Ԥ��������ƫ��λ�� double m_dNozzlePosX = 0; double m_dNozzlePosY = 0; double m_dNozzlePosZ = 0; //�����λ��Z //ͳ�Ʋ��� int m_nTipUsedNum = 0; int m_nTipUsedMaxNum = 0; int m_nCurNozzleIndex; //��ǰ������������ϵı�� //�ٶȡ���ʱ������ double m_dPickSlowVel = 0;//����½ʰȡ�ٶ� double m_dPlaceSlowVel = 0;//����½�ž��ٶ� double m_dSearchForce = 0; double m_dHoldForce = 0;//������ int m_nEjUpDelay = 0;//�����λ��ʱ ms double m_dGivenForceZPos = 0; double m_dNozzleTableOriginPosX = 0; double m_dNozzleTableOriginPosY = 0; };