123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #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;
- };
|