CWafflePackHead.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #pragma once
  2. #include "CModule.h"
  3. #include "CCameraBase.h"
  4. #include "CNozzleTable.h"
  5. #include "CWafflePackMatrix.h"
  6. #include "CXYCalib.h"
  7. #include "CRCalib.h"
  8. #include "CLookUpCalib.h"
  9. #include "CPRStrategy.h"
  10. #include "TipMatrix.h"
  11. //#include "CBondMatrix.h"
  12. class __declspec(dllexport) CWafflePackHead :
  13. public CModule
  14. {
  15. public:
  16. CWafflePackHead(MODULE_LIST ModuleType);
  17. ~CWafflePackHead();
  18. void SetCamera(CCameraBase* camera) { m_pCamera = camera; }
  19. virtual void SetDataChangFunction() override;
  20. virtual LONG SetParam() override;//保存配置参数
  21. virtual LONG GetParam() override;//加载配置参数
  22. virtual LONG ToHome() override;
  23. virtual LONG Sync() override;
  24. virtual LONG ToSafePosition() override;
  25. virtual LONG InitResource() override;
  26. virtual void DataChangNotice(string strDbName, string strTableName) override; //回调触发处理函数
  27. void SetXAxis(CAxis* axis) { m_pXAxis = axis; }
  28. void SetYAxis(CAxis* axis) { m_pYAxis = axis; }
  29. void SetZAxis(CAxis* axis) { m_pZAxis = axis; }
  30. void SetNozzleTable(CNozzleTable* nozzleTable) { m_pNozzleTable = nozzleTable; }
  31. void SetCoord(CCoord* pCrd) { m_pCoord_XY = pCrd; }
  32. CXYCalib* GetCameraCalib() { return m_pXYCalib; }
  33. CCTDCalib* GetCTDCalib() { return m_pCTDCalib; }
  34. void SetVacDO(CIO* out) { m_pVacGpo = out; }
  35. //void SetFlowDo(CDigitOutput* out) { m_pFlowGpo = out; }
  36. void SetVacDi(CIO* input) { m_pVacGpi = input; }
  37. void SetFlowDi(CIO* input) { m_pFlowGpi = input; }
  38. //手动
  39. LONG ChangeNozzle(int nozzleIndex);
  40. LONG UnLoadNozzle();
  41. LONG LoadNozzle(int nozzleIndex);
  42. //标定
  43. LONG CameraCTDCalib();
  44. //自动:
  45. LONG CheckDieExistStatus(bool& bExist);
  46. LONG VacuumOn(); //真空开
  47. LONG VacuumOff(); //真空关
  48. LONG WaitZTrigXYToGrabPos();
  49. //传入的index是在绑定矩阵中的芯片序号
  50. LONG PickDie(int dieIndex, bool waitDone =true );
  51. //到达预取晶位置需判断中转台是否到位
  52. LONG MoveToPrePlacePos(bool waitDone);
  53. LONG SlowDownPlaceDie(int DieIndex, bool waitDone);//包括真空,等
  54. //返回相对于编程矩阵原点的位置,不是绝对世界坐标位置
  55. LONG GetCurPickPos(int dieIndex, XY_DOUBLE_STRUCT& point);
  56. LONG MoveToGrabPos(XY_DOUBLE_STRUCT relDiePos, bool waitDone);
  57. LONG PickGrab(int index, XY_DOUBLE_STRUCT posOffset);
  58. LONG MoveToPrePickPos(XY_DOUBLE_STRUCT relDiePos, bool waitDone);
  59. LONG ZSlowDownPick(int index, bool waitDone);
  60. LONG ZUpToInitPos(bool waitDone);//取放共用
  61. LONG WaitZTrigXYToPlacePos();
  62. LONG ZSlowDownPlace(int index, bool waitDone);//只有轴动
  63. private:
  64. CAxis* m_pXAxis = nullptr;
  65. CAxis* m_pYAxis = nullptr;
  66. CAxis* m_pZAxis = nullptr;
  67. CCameraBase* m_pCamera = nullptr;
  68. CIO* m_pVacGpo = nullptr;
  69. CIO* m_pVacGpi = nullptr;
  70. CIO* m_pFlowGpi = nullptr;
  71. CCoord* m_pCoord_XY = nullptr;
  72. PICK_PARAM m_stPickParam;
  73. CPRStrategy* m_pPR = nullptr;
  74. CNozzleTable* m_pNozzleTable = nullptr;
  75. CWafflePackMatrix* m_pPointMatrix = nullptr;
  76. CBondMatrix* m_pBondMatrix = nullptr;
  77. //标定对象
  78. CXYCalib* m_pXYCalib = nullptr;
  79. CCTDCalib* m_pCTDCalib = nullptr;
  80. TipMatrix* m_pTipMatrix = nullptr;
  81. //位置参数
  82. double m_dSafePosX = 0;//安全位置
  83. double m_dSafePosY = 0;
  84. double m_dSafePosZ = 0;
  85. double m_dInitPosR = 0;
  86. double m_dPickOriginPosX = 0; //华夫盒矩阵取晶位置,相机位置
  87. double m_dPickOriginPosY = 0;
  88. double m_dPlacePosX = 0;//放下芯片的位置
  89. double m_dPlacePosY = 0;//相机位置
  90. double m_dYTrigZToBond = 0;
  91. double m_dYTrigZToPick = 0;
  92. double m_dZTrigYToPick = 0;
  93. double m_dZTrigYToBond = 0;
  94. double m_dPreChangeNozzleDisY = 0;//预更换吸嘴偏差位置
  95. double m_dNozzlePosZ = 0; //吸嘴架位置Z
  96. double m_dNozzlePosY = 0;//吸嘴架位置Y
  97. int m_nCurNozzleIndex = 0; //当前吸嘴在吸嘴架上的编号
  98. //统计参数
  99. int m_nTipUsedNum = 0;
  100. int m_nTipUsedMaxNum = 0;
  101. double m_dPickSlowVel = 0;//软着陆拾取速度
  102. double m_dPlaceSlowVel = 0;//软着陆放晶速度
  103. //后续用全局坐标系转换
  104. double m_dNozzleTableOriginPosX = 0;
  105. double m_dNozzleTableOriginPosY = 0;
  106. };