#pragma once #include "CModule.h" #include "OneDimMatrix.h" #include /* 认为更换吸嘴不重新标定需保存吸嘴对应参数,若认为重新标定,可以不保存多套数据,每个吸嘴对应标定流程: 1、标定旋转中心,将旋转中心保存到吸嘴参数中。 2、CTD标定前从吸嘴处获取旋转中心,并标定得到CTD,保存到吸嘴参数中。 */ class CNozzleTable : public CModule { // struct NozzleParam // { // CIO* m_pNozzleExistDi = nullptr;//检测吸嘴存在的IO // NozzleCalibParam stCalibParam; // //XY_DOUBLE_STRUCT stRotCenter = { 0,0 }; //吸嘴对应的旋转中心X // //XY_DOUBLE_STRUCT stBHHighCameraToNozzle = { 0,0 }; // //XY_DOUBLE_STRUCT stBHLowCameraToNozzle = { 0,0 }; // //bool bIsRotationCalib = false; //已校准标记 // //bool bIsHighCTDCalib = false; //已校准标记 //// double dRotCenterY = 0; //吸嘴对应的旋转中心X //// double dRotCenterX = 0; //吸嘴对应的旋转中心Y //// //// double dCameraToNozzleX = 0; //相机到吸嘴的距离 //// double dCameraToNozzleY = 0; //相机到吸嘴的距离 //// double dPos = 0; //吸嘴位置 // }; public: CNozzleTable(MODULE_LIST eModuleType); ~CNozzleTable(); virtual void SetDataChangFunction() override; virtual void DataChangNotice(string strDbName, string strTableName) 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 LONG AllocateIo(vector vecIo) override; virtual LONG AllocateAxis(vector vecAxis) override; void SetYAxis(CAxis* axis) { m_pAxisY = axis; } void SetCylDo(CIO* output) { m_pCylDo = output; } void SetCylNDi(CIO* input) { m_pCylNDi = input; } void SetCylPDi(CIO* input) { m_pCylPDi = input; } //void SetNozzleExistDi(int index, CIO* input){ // m_mapNozzleParam[index].m_pNozzleExistDi = input; //} //LONG GetBHLookUpTempID(int nozzleIndex, int& lookUpTempID); //LONG GetBHLowCTDTempID(int nozzleIndex, int& lookUpTempID); //LONG SetCTDLookUpTempID(int nozzleIndex, int lookUpTempID); //LONG SetBHHighCTDBondTempID(int nozzleIndex, int bondTempID); //LONG SetBHLowCTDBondTempID(int nozzleIndex, int bondTempID); //LONG GetBHRCalibTempID(int nozzleIndex, int& tempID); //LONG SetBHRCalibTempID(int nozzleIndex, int tempID); //LONG GetWHCTDNozzleTempID(int nozzleIndex, int& tempID); //LONG SetWHCTDNozzleTempID(int nozzleIndex, int tempID); //LONG GetBHRotCenter(int index, XY_DOUBLE_STRUCT& center); //LONG SetNozzleRotCenter(int index, XY_DOUBLE_STRUCT center); //LONG SetBHHighCameraToNozzle(int index, XY_DOUBLE_STRUCT CameraToNozzle); //LONG SetBHLowCameraToNozzle(int index, XY_DOUBLE_STRUCT CameraToNozzle); //LONG GetBHHighCameraToNozzle(int index, XY_DOUBLE_STRUCT& dis); //LONG GetBHLowCameraToNozzle(int index, XY_DOUBLE_STRUCT& dis); //LONG SetWHCameraToNozzle(int index, XY_DOUBLE_STRUCT cameraToNozzle); //LONG GetWHCameraToNozzle(int index, XY_DOUBLE_STRUCT& cameraToNozzle); LONG GetNozzlePos(int index, XY_DOUBLE_STRUCT& position); // 更换吸嘴 LONG CheckNozzleExist(int index, bool exist);//待实现 LONG MoveToChangePos(bool waitDone = true); LONG MoveToWaitPos(bool waitDone = true); LONG CylLoadNozzle(bool waitDone = true); LONG CylUnLoadNozzle(bool waitDone = true); bool CheckCylLoadDone(); bool CheckCylUnloadDone(); LONG WaitCylDone(); private: //std::map m_mapNozzleParam;//key为index,value为位置X //OneDimMatrix* m_pTipPosMatrix = nullptr; //吸嘴位置 CAxis* m_pAxisY = nullptr; CIO* m_pCylDo = nullptr; CIO* m_pCylNDi = nullptr;//负向 CIO* m_pCylPDi = nullptr;//正向 //CIO* m_pNozzleExistDi = nullptr;//检测吸嘴存在的IO CMachineCalibration* m_pCalibrationDB = nullptr; //参数 double m_dWaitPosY = 0; double m_dChangePosY = 0; };