Machine.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. #pragma once
  2. #include <vector>
  3. #define HIKVISION_CAMERA_EXPORTS
  4. #include "CCameraManage.h"
  5. #include "CModule.h"
  6. #include "CCalib.h"
  7. #include "CBondHead.h"
  8. #include "CXYCalib.h"
  9. #include "CHIKVisionCamera.h"
  10. #include "CWafflePackHead.h"
  11. #include "CWaferTable.h"
  12. #include "JMotion.h"
  13. #include "CTransferTable.h"
  14. #include "CBondTable.h"
  15. #include "CNozzleTable.h"
  16. #include "CForceControl.h"
  17. #include "VerticalMeasure.h"
  18. #include "HorizMeasure.h"
  19. #include "CAxis.h"
  20. #include "CWafflePackHead.h"
  21. #include "CWaferHead.h"
  22. #include "CUltraHead.h"
  23. #include "CEutecticHead.h"
  24. #include "CMaterialBox.h"
  25. #ifdef C_MACHINE_EXPORTS
  26. #define C_MACHINE_DLL_API __declspec(dllexport)
  27. #else
  28. #define C_MACHINE_DLL_API //__declspec(dllimport)
  29. #endif
  30. /*
  31. 初始化过程:
  32. 1、调用运控库对象,创建卡、轴、IO
  33. 2、调用资源大类,加载资源大类中的所有资源
  34. 3、创建模组对象,创建完对象后将轴、IO对象设置到模组中
  35. 4、创建测量对象,力控标定和使用对象(根据力控轴数量创建)、垂直测量对象、水平测量对象
  36. 注:由于水平测量也需要使用和垂直测量均使用了测高,需要使用力控标定对象,所以力控标定对象在Machine中创建,再将对象指针给各个模组
  37. 注:测量对象模组中并不会再次使用,认为属于机台,不属于模组
  38. 5、初始化模组:
  39. (1)初始化资源:创建该模组需要的功能对象,包括插补对象、标定对象(需要轴、相机,无法在构造函数创建)、PR策略(需要轴、相机)、矩阵数据等
  40. (2)从数据库拷贝一份数据保存到对象中,包括该模组中其他对象的数据加载
  41. Machine类认为是机台大类,属于机台不属于模组的轴、IO、对象也在Machine类中创建和控制。(是否应该继承Module)
  42. */
  43. class C_MACHINE_DLL_API Machine
  44. {
  45. public:
  46. //enum HeadType
  47. //{
  48. // UltralHead, //超声头
  49. // EutecticHead, //共晶头
  50. //};
  51. static Machine* GetInstance();
  52. static void releaseInstance();
  53. JMotion* GetMotion() {return m_pMotion;}
  54. LONG ToHome();
  55. void ShowMotionAdjustPage();
  56. vector<CAxis*> GetMachineAllAxis() {return m_vetAxis;};
  57. CBondHead* GetBondHead() {return m_pBondHead;}
  58. //CUltraHead* GetUltraHead() { return m_pBondHead; };
  59. CBondTable* GetBondTable() { return m_pBondTable; }
  60. //CEutecticHead* GetEutecticHead() { return m_pEutecticHead; }
  61. CTransferTable* GetWaferCalibTable() { return m_pWaferTransferTable; }
  62. CTransferTable* GetWaffleCalibTable() { return m_pWaffleTransferTable; }
  63. CNozzleTable* GetNozzleTable() { return m_pNozzleTable; }
  64. CMaterialBox* GetMaterialBox() {return m_pMaterialBox;}
  65. //CForceControl* GetBHForce() { return m_pBondHeadForce; }
  66. //CForceControl* GetWaferForce() { return m_pWaferHeadForce; }
  67. CVerticalMeasure* GetVerticalMeasure() { return m_pVerMeasure; }
  68. CHorizMeasure* GetHorizMeasure() { return m_pHorizMeasure; }
  69. CWafflePackHead* GetWafflePackHead() { return m_pWaffleHead; }
  70. CWaferHead* GetWaferHead() { return m_pWaferHead; };
  71. CWaferTable* GetWaferTable() { return m_pWaferTable; }
  72. CEjector* GetEjector() { return m_pEjector; }
  73. CResources* GetResources() { return m_pResource; };
  74. //AxesMapPage* GetMotionAxesMapPage(){
  75. // return m_pMotion->getMapPage();
  76. //}
  77. JMotion* GetJMotion() {
  78. return m_pMotion;
  79. }
  80. //CXYCalib* GetBondHeadHighCameraCalib() {
  81. // switch (Machine::m_eHeadType)
  82. // {
  83. // case Machine::HeadType::UltralHead:
  84. // return nullptr;
  85. // case Machine::HeadType::EutecticHead:
  86. // return m_pBondHead->GetHighCameraCalib();
  87. // default:
  88. // return nullptr;
  89. // break;
  90. // }
  91. //}
  92. CXYCalib* GetBondHeadLowCameraCalib() { return m_pBondHead->GetLowCameraCalib(); }
  93. CXYCalib* GetLookUpCameraCalib() { return m_pBondHead->GetLookUpCameraCalib(); }
  94. CXYCalib* GetWaferCameraCalib() { return m_pWaferTable->GetWaferXYCalib(); }
  95. CXYCalib* GetWafflePackCameraCalib() { return m_pWaffleHead->GetCameraCalib(); }
  96. CCTDCalib* GetWafflePackCTDCalib() { return m_pWaffleHead->GetCTDCalib(); }
  97. CRCalib* GetBondHeadRCalib() { return m_pBondHead->GetHeadRCalib(); }
  98. bool GetInitSuccess() { return m_bIsInitSuccess; }
  99. HeadType GetHeadType() { return m_eHeadType; }
  100. void SetHeadType(HeadType type) { m_eHeadType = type; }
  101. LONG MoveToSafePosition() { return OK; };
  102. LONG load();
  103. LONG save();
  104. private:
  105. Machine();
  106. ~Machine();
  107. LONG CreateModules();
  108. void CreateMeasures();
  109. LONG InitModules();
  110. void AllocModule();//所有模组都创建完成后调用,将模组指针分配给其他模组
  111. void ReleaseAxisAndIo();
  112. LONG CreatAllAxis();
  113. LONG CreatAllIo();
  114. LONG CreatAllCoord();
  115. bool GetAxisByMotion(string name, CAxis * *pAxis);
  116. bool GetIoByMotion(IO_LIST name, CIO * *pIo);
  117. bool GetCoordByMotion(COORD_LIST type, CCoord * *pCoord);
  118. private:
  119. static Machine* m_instance;
  120. vector<CAxis*> m_vetAxis;
  121. vector<CIO*> m_vetIO;
  122. vector<CCoord*> m_vetCoord;
  123. vector<CModule*> m_vetModules;
  124. CBondHead* m_pBondHead = nullptr;
  125. //CEutecticHead* m_pEutecticHead = nullptr;
  126. //CUltraHead* m_pUltraHead = nullptr;
  127. CWafflePackHead* m_pWaffleHead = nullptr;
  128. CWaferTable* m_pWaferTable = nullptr;
  129. CWaferHead* m_pWaferHead = nullptr;
  130. CEjector* m_pEjector = nullptr;
  131. CTransferTable* m_pWaferTransferTable = nullptr;
  132. CTransferTable* m_pWaffleTransferTable = nullptr;
  133. CBondTable* m_pBondTable = nullptr;
  134. CNozzleTable* m_pNozzleTable = nullptr;
  135. CMaterialBox* m_pMaterialBox = nullptr;
  136. CForceControl* m_pBondHeadForce = nullptr;
  137. CForceControl* m_pWaferHeadForce = nullptr;
  138. //仅用于测量
  139. CVerticalMeasure* m_pVerMeasure = nullptr;
  140. CHorizMeasure* m_pHorizMeasure = nullptr;
  141. //运控接口
  142. JMotion* m_pMotion = nullptr;
  143. //相机管理接口
  144. CCameraManage* m_pCameraManage = nullptr;
  145. CResources* m_pResource = nullptr;
  146. CManageDB* pCManageDB = nullptr;
  147. bool m_bIsInitSuccess = false;
  148. bool m_bMotionEnable = true; //运控卡禁止/启用
  149. HeadType m_eHeadType = HeadType::EutecticHead;
  150. CHardware* m_pCHardware = nullptr;
  151. };