123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- #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 Move(double x, double y, bool bSync = true);
- LONG MoveTo(double x,double y, bool bSync = true);
- LONG MoveTo(double x, double y,double z);
- LONG MoveTo(double x, double y, double z,double r);
- virtual void SetPickHTestIndex(int index) = 0;
- virtual void SetBondHTestIndex(int index) = 0;
- virtual LONG PickHighTest() = 0;//调用之前先SetIndex
- virtual LONG AllBondHighTest() = 0;
- virtual LONG BongHighTest() = 0;
- 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 MoveToGrabPos(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 MoveToBondPos(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 HighCameraCTDCalib() { return OK; }
- virtual LONG LowCameraPosCalib();
- virtual LONG LowCTDNozzlePosCalib();
- virtual LONG CalLowCTDResult();
- virtual LONG NozzleRotCenterCalib();
- virtual LONG LowCameraXYCalib();
- virtual LONG LookUpCameraXYCalib();
- //力控标定
- 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 = 0;
- int m_nBondHTestDieIndex = 0;
- bool m_bIsLocationAll = false; //用于固晶时补偿可选全部拍照补偿或者每个PCB只拍一次
- double m_dGivenForceZPos = 0; //拾取放置芯片时力控轴的反馈位置
- };
|