CNozzleTable.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #pragma once
  2. #include "CModule.h"
  3. #include "OneDimMatrix.h"
  4. #include <map>
  5. /*
  6. 认为更换吸嘴不重新标定需保存吸嘴对应参数,若认为重新标定,可以不保存多套数据,每个吸嘴对应标定流程:
  7. 1、标定旋转中心,将旋转中心保存到吸嘴参数中。
  8. 2、CTD标定前从吸嘴处获取旋转中心,并标定得到CTD,保存到吸嘴参数中。
  9. */
  10. class CNozzleTable :
  11. public CModule
  12. {
  13. // struct NozzleParam
  14. // {
  15. // CIO* m_pNozzleExistDi = nullptr;//检测吸嘴存在的IO
  16. // NozzleCalibParam stCalibParam;
  17. // //XY_DOUBLE_STRUCT stRotCenter = { 0,0 }; //吸嘴对应的旋转中心X
  18. // //XY_DOUBLE_STRUCT stBHHighCameraToNozzle = { 0,0 };
  19. // //XY_DOUBLE_STRUCT stBHLowCameraToNozzle = { 0,0 };
  20. // //bool bIsRotationCalib = false; //已校准标记
  21. // //bool bIsHighCTDCalib = false; //已校准标记
  22. //// double dRotCenterY = 0; //吸嘴对应的旋转中心X
  23. //// double dRotCenterX = 0; //吸嘴对应的旋转中心Y
  24. ////
  25. //// double dCameraToNozzleX = 0; //相机到吸嘴的距离
  26. //// double dCameraToNozzleY = 0; //相机到吸嘴的距离
  27. //// double dPos = 0; //吸嘴位置
  28. // };
  29. public:
  30. CNozzleTable(MODULE_LIST eModuleType);
  31. ~CNozzleTable();
  32. virtual void SetDataChangFunction() override;
  33. virtual void DataChangNotice(string strDbName, string strTableName) override;
  34. virtual LONG SetParam() override;
  35. virtual LONG GetParam() override;
  36. virtual LONG ToHome() override;
  37. virtual LONG Sync() override;
  38. virtual LONG ToSafePosition() override;
  39. virtual LONG InitResource() override;
  40. virtual LONG AllocateIo(vector<CIO*> vecIo) override;
  41. virtual LONG AllocateAxis(vector<CAxis*> vecAxis) override;
  42. void SetYAxis(CAxis* axis) { m_pAxisY = axis; }
  43. void SetCylDo(CIO* output) { m_pCylDo = output; }
  44. void SetCylNDi(CIO* input) { m_pCylNDi = input; }
  45. void SetCylPDi(CIO* input) { m_pCylPDi = input; }
  46. //void SetNozzleExistDi(int index, CIO* input){
  47. // m_mapNozzleParam[index].m_pNozzleExistDi = input;
  48. //}
  49. //LONG GetBHLookUpTempID(int nozzleIndex, int& lookUpTempID);
  50. //LONG GetBHLowCTDTempID(int nozzleIndex, int& lookUpTempID);
  51. //LONG SetCTDLookUpTempID(int nozzleIndex, int lookUpTempID);
  52. //LONG SetBHHighCTDBondTempID(int nozzleIndex, int bondTempID);
  53. //LONG SetBHLowCTDBondTempID(int nozzleIndex, int bondTempID);
  54. //LONG GetBHRCalibTempID(int nozzleIndex, int& tempID);
  55. //LONG SetBHRCalibTempID(int nozzleIndex, int tempID);
  56. //LONG GetWHCTDNozzleTempID(int nozzleIndex, int& tempID);
  57. //LONG SetWHCTDNozzleTempID(int nozzleIndex, int tempID);
  58. //LONG GetBHRotCenter(int index, XY_DOUBLE_STRUCT& center);
  59. //LONG SetNozzleRotCenter(int index, XY_DOUBLE_STRUCT center);
  60. //LONG SetBHHighCameraToNozzle(int index, XY_DOUBLE_STRUCT CameraToNozzle);
  61. //LONG SetBHLowCameraToNozzle(int index, XY_DOUBLE_STRUCT CameraToNozzle);
  62. //LONG GetBHHighCameraToNozzle(int index, XY_DOUBLE_STRUCT& dis);
  63. //LONG GetBHLowCameraToNozzle(int index, XY_DOUBLE_STRUCT& dis);
  64. //LONG SetWHCameraToNozzle(int index, XY_DOUBLE_STRUCT cameraToNozzle);
  65. //LONG GetWHCameraToNozzle(int index, XY_DOUBLE_STRUCT& cameraToNozzle);
  66. LONG GetNozzlePos(int index, XY_DOUBLE_STRUCT& position);
  67. // 更换吸嘴
  68. LONG CheckNozzleExist(int index, bool exist);//待实现
  69. LONG MoveToChangePos(bool waitDone = true);
  70. LONG MoveToWaitPos(bool waitDone = true);
  71. LONG CylLoadNozzle(bool waitDone = true);
  72. LONG CylUnLoadNozzle(bool waitDone = true);
  73. bool CheckCylLoadDone();
  74. bool CheckCylUnloadDone();
  75. LONG WaitCylDone();
  76. private:
  77. //std::map<int, NozzleParam> m_mapNozzleParam;//key为index,value为位置X
  78. //OneDimMatrix* m_pTipPosMatrix = nullptr; //吸嘴位置
  79. CAxis* m_pAxisY = nullptr;
  80. CIO* m_pCylDo = nullptr;
  81. CIO* m_pCylNDi = nullptr;//负向
  82. CIO* m_pCylPDi = nullptr;//正向
  83. //CIO* m_pNozzleExistDi = nullptr;//检测吸嘴存在的IO
  84. CMachineCalibration* m_pCalibrationDB = nullptr;
  85. //参数
  86. double m_dWaitPosY = 0;
  87. double m_dChangePosY = 0;
  88. };