123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #pragma once
- #include "CModule.h"
- #include "CCameraBase.h"
- #include "CNozzleTable.h"
- #include "CWafflePackMatrix.h"
- #include "CXYCalib.h"
- #include "CRCalib.h"
- #include "CLookUpCalib.h"
- #include "CPRStrategy.h"
- #include "TipMatrix.h"
- //#include "CBondMatrix.h"
- class __declspec(dllexport) CWafflePackHead :
- public CModule
- {
- public:
- CWafflePackHead(MODULE_LIST ModuleType);
- ~CWafflePackHead();
- void SetCamera(CCameraBase* camera) { m_pCamera = camera; }
- 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;
- virtual void DataChangNotice(string strDbName, string strTableName) override; //回调触发处理函数
- void SetXAxis(CAxis* axis) { m_pXAxis = axis; }
- void SetYAxis(CAxis* axis) { m_pYAxis = axis; }
- void SetZAxis(CAxis* axis) { m_pZAxis = axis; }
- void SetNozzleTable(CNozzleTable* nozzleTable) { m_pNozzleTable = nozzleTable; }
- void SetCoord(CCoord* pCrd) { m_pCoord_XY = pCrd; }
- CXYCalib* GetCameraCalib() { return m_pXYCalib; }
- CCTDCalib* GetCTDCalib() { return m_pCTDCalib; }
- void SetVacDO(CIO* out) { m_pVacGpo = out; }
- //void SetFlowDo(CDigitOutput* out) { m_pFlowGpo = out; }
- void SetVacDi(CIO* input) { m_pVacGpi = input; }
- void SetFlowDi(CIO* input) { m_pFlowGpi = input; }
- //手动
- LONG ChangeNozzle(int nozzleIndex);
- LONG UnLoadNozzle();
- LONG LoadNozzle(int nozzleIndex);
- //标定
- LONG CameraCTDCalib();
- //自动:
- LONG CheckDieExistStatus(bool& bExist);
- LONG VacuumOn(); //真空开
- LONG VacuumOff(); //真空关
- LONG WaitZTrigXYToGrabPos();
- //传入的index是在绑定矩阵中的芯片序号
- LONG PickDie(int dieIndex, bool waitDone =true );
- //到达预取晶位置需判断中转台是否到位
- LONG MoveToPrePlacePos(bool waitDone);
- LONG SlowDownPlaceDie(int DieIndex, bool waitDone);//包括真空,等
- //返回相对于编程矩阵原点的位置,不是绝对世界坐标位置
- LONG GetCurPickPos(int dieIndex, XY_DOUBLE_STRUCT& point);
- LONG MoveToGrabPos(XY_DOUBLE_STRUCT relDiePos, bool waitDone);
- LONG PickGrab(int index, XY_DOUBLE_STRUCT posOffset);
- LONG MoveToPrePickPos(XY_DOUBLE_STRUCT relDiePos, bool waitDone);
- LONG ZSlowDownPick(int index, bool waitDone);
- LONG ZUpToInitPos(bool waitDone);//取放共用
- LONG WaitZTrigXYToPlacePos();
- LONG ZSlowDownPlace(int index, bool waitDone);//只有轴动
- private:
- CAxis* m_pXAxis = nullptr;
- CAxis* m_pYAxis = nullptr;
- CAxis* m_pZAxis = nullptr;
- CCameraBase* m_pCamera = nullptr;
- CIO* m_pVacGpo = nullptr;
- CIO* m_pVacGpi = nullptr;
- CIO* m_pFlowGpi = nullptr;
- CCoord* m_pCoord_XY = nullptr;
- PICK_PARAM m_stPickParam;
- CPRStrategy* m_pPR = nullptr;
- CNozzleTable* m_pNozzleTable = nullptr;
- CWafflePackMatrix* m_pPointMatrix = nullptr;
- CBondMatrix* m_pBondMatrix = nullptr;
- //标定对象
- CXYCalib* m_pXYCalib = nullptr;
- CCTDCalib* m_pCTDCalib = nullptr;
- TipMatrix* m_pTipMatrix = nullptr;
- //位置参数
- double m_dSafePosX = 0;//安全位置
- double m_dSafePosY = 0;
- double m_dSafePosZ = 0;
- double m_dInitPosR = 0;
- double m_dPickOriginPosX = 0; //华夫盒矩阵取晶位置,相机位置
- double m_dPickOriginPosY = 0;
- double m_dPlacePosX = 0;//放下芯片的位置
- double m_dPlacePosY = 0;//相机位置
- double m_dYTrigZToBond = 0;
- double m_dYTrigZToPick = 0;
- double m_dZTrigYToPick = 0;
- double m_dZTrigYToBond = 0;
- double m_dPreChangeNozzleDisY = 0;//预更换吸嘴偏差位置
- double m_dNozzlePosZ = 0; //吸嘴架位置Z
- double m_dNozzlePosY = 0;//吸嘴架位置Y
- int m_nCurNozzleIndex = 0; //当前吸嘴在吸嘴架上的编号
- //统计参数
- int m_nTipUsedNum = 0;
- int m_nTipUsedMaxNum = 0;
- double m_dPickSlowVel = 0;//软着陆拾取速度
- double m_dPlaceSlowVel = 0;//软着陆放晶速度
- //后续用全局坐标系转换
- double m_dNozzleTableOriginPosX = 0;
- double m_dNozzleTableOriginPosY = 0;
- };
|