#pragma once #include "CModule.h" class __declspec(dllexport) CEjector : public CModule { typedef struct { XY_DOUBLE_STRUCT stSaftPosition; //顶针座安全位置 DOUBLE iSaftLev; //顶针座安全高度 DOUBLE iSaftLev_Ejector; //顶针安全高度 XY_DOUBLE_STRUCT stWorkPosition; //顶针座工作位置 DOUBLE iWorkLev; //顶针座工作高度 DOUBLE iWorkLev_Ejector; //顶针工作高度 bool bUseEjectorSync; //是否使用顶针同步 DOUBLE lEjectorSyncHeight; //顶同步高度 } EJECTOR_CONFIG_STRUCT; //顶针参数配置 public: CEjector(MODULE_LIST eModuleType); ~CEjector(){} virtual LONG AllocateAxis(vector vecAxis) override; virtual LONG AllocateIo(vector vecIo) override; virtual LONG ToHome() override; virtual LONG ToSafePosition() override; // // LONG EjectorSynchronous(CBondHead* pArmHead); //顶针座去安全位置 //LONG MoveToSafePosition(bool sync = SYNC); //顶针座去工作位置 LONG MoveToWorkPosition(bool sync = SYNC); //顶针座去安全高度 LONG MoveToSafeLev(bool sync = SYNC); //顶针座去工作高度 LONG MoveToWorkLev(bool sync = SYNC); //顶针去安全高度 LONG MoveToEjectorSafeLev(bool sync = SYNC); //顶针去工作高度 LONG MoveToEjectorWorkLev(bool sync = SYNC); //等待所有模组到位 LONG Sync(); //打开真空 LONG VacuumOn(); //关闭真空 LONG VacuumOff(); private: //指针 CAxis* m_pXAxis = nullptr; CAxis* m_pYAxis = nullptr; CAxis* m_pZAxis = nullptr; //座Z CAxis* m_pAxisPinZ = nullptr; //顶针Z CIO* m_pIoVacuum = nullptr; static UINT iEjectorUseNum; //顶针使用次数 static UINT iEjectorMaxNum; //顶针最大使用次数 CModuleConfig* m_pModuleConfigDB = nullptr; EJECTOR_CONFIG_STRUCT m_stEjectorConfig; //顶针参数配置 void DataChangNotice(string strDbName, string strTableName); virtual void SetDataChangFunction() override; virtual LONG SetParam() override;//保存配置参数 virtual LONG GetParam() override;//加载配置参数 virtual LONG InitResource() override; //分配轴、IO、标定等资源 };