123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #pragma once
- #include "CModule.h"
- #include "CCameraBase.h"
- #include "CRCalib.h"
- #include "CXYCalib.h"
- #include "HorizMeasure.h"
- enum SOFTLIMITTYPE { SL_NONE = 0, SL_CIRCLE, SL_RECT };
- enum SEARCH_DIRECTION { WAF_LEFT = 0, WAF_DOWN, WAF_RIGHT, WAF_UP, WAF_MAX };
- enum FIND_DIE { U_L = 0, U_C, U_R, C_L, C_C, C_R, D_L, D_C, D_R, MAX };
- typedef struct
- {
- X_Y_R_STRUCT stCurPickPosn;
- DOUBLE dDistanceX;
- DOUBLE dDistanceY;
- SEARCH_DIRECTION enDirMain;
- SEARCH_DIRECTION enDirMinor;
- }WAFER_SEARCHDIE;
- typedef struct _SAVE_FIND_DIE
- {
- bool bUse;
- X_Y_R_STRUCT stPosition;
- _SAVE_FIND_DIE()
- {
- bUse = false;
- stPosition = { 0.0,0.0,0.0 };
- }
- }SAVE_FIND_DIE;
- class __declspec(dllexport) CWaferTable : public CModule
- {
- #define SAVE_DIE_POSITION_CONUT 3
- typedef struct
- {
- bool UseMatrix;
- MATRIX_SEARCH_DIR SearchMatrixDir;
- UINT TemplateId;
- UINT DelayTakePicture;
- UINT LoseDieCount;
- UINT PickDieAgainNum;
- UINT ForecastCount;
- X_Y_Z_R_STRUCT SafePosition;
- X_Y_Z_R_STRUCT DownRingPosition;
- XY_DOUBLE_STRUCT stWorkRangeCenter;
- DOUBLE dSoftLimitRadius;
- SOFTLIMITTYPE enSoftLimitType;
- } WAFERTABLE_CONFIG_STRUCT;
- public:
- CWaferTable(MODULE_LIST eModuleType);
- ~CWaferTable(){}
- void SetCamera(CCameraBase* camera) { m_pCamera = camera; }
- virtual LONG AllocateAxis(vector<CAxis*> vecAxis) override;
- virtual LONG AllocateIo(vector<CIO*> vecIo) override;
- void SetCoord(CCoord* pCrd) { m_pCoord = pCrd; }
- CXYCalib* GetWaferXYCalib() { return m_pXYCalib; }
- CRCalib* GetWaferRCalib() { return m_pRCalib; }
- virtual LONG ToHome() override;
- virtual LONG Sync() override;
- virtual LONG ToSafePosition() override;
- virtual LONG InitResource() override;
-
- LONG ToFirstDie();
-
- LONG ToPreDie();
-
- LONG ToNextDie();
-
- LONG ToIndexDie(UINT nIndex);
-
- LONG ToDieCenter();
-
- LONG SearchDie();
-
- LONG ToChangeRingPosition();
-
- LONG ChangeRingDone();
-
- LONG SetSoftLimitRadius(SOFTLIMITTYPE nSoftLimitType, XY_LONG_STRUCT stPosn1, XY_LONG_STRUCT stPosn2, XY_LONG_STRUCT stPosn3);
- LONG CreateTemplate(SEARCH_OUT eResultSelect, UINT& iTemplateId);
- LONG CreatePrStrategy(vector<UINT> vecTemplateId);
- private:
- CAxis* m_pXAxis = nullptr;
- CAxis* m_pYAxis = nullptr;
- CAxis* m_pZAxis = nullptr;
- CAxis* m_pRAxis = nullptr;
- CIO* m_pRingDone = nullptr;
- CCameraBase* m_pCamera = nullptr;
- CCoord* m_pCoord = nullptr;
- CXYCalib* m_pXYCalib = nullptr;
- CRCalib* m_pRCalib = nullptr;
- CHorizMeasure* m_pHorizMeasure = nullptr;
- CPRStrategy* m_pPR = nullptr;
- CProduct* m_pCProduct = nullptr;
- CWaferMatrix* m_pWaferMatrix = nullptr;
-
- WAFERTABLE_CONFIG_STRUCT m_stConfig;
- WAFER_SEARCHDIE m_stSearchDie;
- private:
- void DataChangNotice(string strDbName, string strTableName);
- virtual void SetDataChangFunction() override;
- virtual LONG SetParam() override;
- virtual LONG GetParam() override;
-
- LONG AxisZ_Up();
-
- LONG AxisZ_Down();
-
- bool AxisZIsDown();
- LONG MoveTo(double x, double y, bool bSync = true);
- LONG MoveTo(double dX,double dY,double dR, bool bSync = true);
- LONG Move(double dX, double dY, double dR, bool bSync = true);
- bool bChangDirMain;
-
- SAVE_FIND_DIE m_SaveDiePosition[SAVE_DIE_POSITION_CONUT];
- void ChangeCurrentPickPosition();
- void ChangeDirMain();
-
- FIND_DIE SelectNextDiePos(FIND_OUTPUT_STRUCT arrayDie[]);
- void CalcSearchDiePosition(X_Y_R_STRUCT stCurrentPosition, FIND_OUTPUT_STRUCT DiePosition, SAVE_FIND_DIE& OutPosition);
- void SaveSearchDiePosition(X_Y_R_STRUCT stCurrentPosition, FIND_OUTPUT_STRUCT ArrayDie[FIND_DIE::MAX]);
-
- bool CheckPurPosnInRange(XY_DOUBLE_STRUCT stPurPosn);
- };
|