#pragma once /* 1��ģ����� ����X������Ϊ����Y������Ϊ����Z������Ϊ�� */ #include "CAxis.h" #include "CAxis.h" #include "CIO.h" #include <string> #include <vector> #include <map> #include "dt.h" #include "CBondMatrix.h" #include "CResources.h" #include "CCoord.h" #include "CError.h" #include "FHConvert.h" #include "CLog.h" #include "SystemResources.h" #include "CHardwareList.h" using namespace std; using namespace ns_db; #pragma region �ᶨ�� //����ͷ #define CUltraHead_X "UltraHead_X" #define CUltraHead_Y "UltraHead_Y" #define CUltraHead_Z "UltraHead_Z" #define CUltraHead_R "UltraHead_R" #define CUltraHead_Force "UltraHead_Force" #define BDX "BDX" #define BDY "BDY" #define BDZ "BDZ" #define BDR "BDR" #define BDForceZ "BDForceZ" #define WaferHeadX "WaferHeadX" #define WaferHeadY "WaferHeadY" #define WaferHeadZ "WaferHeadZ" #define WaferHeadForceZ "WaferHeadForceZ" #define WaffleHeadX "WaffleHeadX" #define WaffleHeadY "WaffleHeadY" #define WaffleHeadZ "WaffleHeadZ" ///�����///����� #define NuzzleAxisY "NuzzleAxisY" //��ת̨//��ת̨ #define WaferCalibTableX "WaferCalibTableX" #define WaffleCalibTableX "WaffleCalibTableX" //WaferTalbe//WaferTalbe #define WaferTable_X "WaferTable_X" #define WaferTable_Y "WaferTable_Y" #define WaferTable_Z "WaferTable_Z" #define WaferTable_R "WaferTable_R" //BondTable//BondTable #define BondTableZ "BondTableZ" //����//���� #define EjectorX "EjectorX" #define EjectorY "EjectorY" #define EjectorZ "EjectorZ" #define EjectorPinZ "EjectorPinZ" #pragma endregion enum USE_TYPE { NOUSE = 0, DIAGNOSIS = 1, USE = 2 }; //typedef struct _AXIS_STRUCT //{ // string AxisName; //������ // USE_TYPE Use; //0�����ã�1������ // CAxis::AXIS_TYPE AxisType; //Io���� // UINT HomeTime; //����ȴ�ʱ��(��) // UINT FastTime; //���ٵȴ�ʱ��(��) // UINT MediumTime; //���ٵȴ�ʱ��(��) // UINT SlowTime; //���ٵȴ�ʱ��(��) // _AXIS_STRUCT(string name, USE_TYPE use, CAxis::AXIS_TYPE type, UINT homeTime, UINT slowTime, UINT mediumTime, UINT fastTime) // { // AxisName = name; // Use = use; // AxisType = type; // HomeTime = homeTime; // FastTime = fastTime; // MediumTime = mediumTime; // SlowTime = slowTime; // } //}AXIS_STRUCT; //const static map<AXIS_LIST, AXIS_STRUCT> g_mapAxisList = { // {BDX,AXIS_STRUCT("BondHead_X",USE_TYPE::USE,CAxis::AXIS_TYPE::X,100000,80000,50000,30000)}, // {BDY ,AXIS_STRUCT("BondHead_Y",USE_TYPE::USE,CAxis::AXIS_TYPE::Y,100000,80000,50000,30000)}, // {BDZ,AXIS_STRUCT("BondHead_Z",USE_TYPE::USE,CAxis::AXIS_TYPE::Z,100000,80000,50000,30000)}, // {BDR,AXIS_STRUCT("BondHead_R",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::R,100000,80000,50000,30000)}, // {BDForceZ,AXIS_STRUCT("BondHead_ForceZ",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::FORCE,10000,8000,5000,3000)}, // {WaferHeadX,AXIS_STRUCT("WaferHead_X",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::X,10000,8000,5000,3000)}, // {WaferHeadY ,AXIS_STRUCT("WaferHead_Y",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::Y,10000,8000,5000,3000)}, // {WaferHeadZ,AXIS_STRUCT("WaferHead_Z",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::Z,10000,8000,5000,3000)}, // {WaferHeadForceZ,AXIS_STRUCT("WaferHead_ForceZ",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::Z,10000,8000,5000,3000)}, // {WaffleHeadX,AXIS_STRUCT("WaffleHead_X",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::X,10000,8000,5000,3000)}, // {WaffleHeadY ,AXIS_STRUCT("WaffleHead_Y",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::Y,10000,8000,5000,3000)}, // {WaffleHeadZ,AXIS_STRUCT("WaffleHead_Z",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::Z,10000,8000,5000,3000)}, // //����� // {NuzzleAxisY,AXIS_STRUCT("NuzzleAxis_Y",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::Y,10000,8000,5000,3000)}, // //��ת̨ // {WaferCalibTableX,AXIS_STRUCT("WaferCalibTable_X",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::X,10000,8000,5000,3000)}, // {WaffleCalibTableX,AXIS_STRUCT("WaffleCalibTable_X",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::X,10000,8000,5000,3000)}, // // //WaferTalbe // {WaferTable_X,AXIS_STRUCT("WaferTable_X",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::X,10000,8000,5000,3000)}, // {WaferTable_Y,AXIS_STRUCT("WaferTable_Y",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::Y,10000,8000,5000,3000)}, // {WaferTable_Z,AXIS_STRUCT("WaferTable_Z",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::Z,10000,8000,5000,3000)}, // {WaferTable_R,AXIS_STRUCT("WaferTable_R",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::R,10000,8000,5000,3000)}, // //BondTable // {BondTableZ,AXIS_STRUCT("BondTable_Z",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::R,10000,8000,5000,3000)}, // //���� // {EjectorX,AXIS_STRUCT("Ejector_X",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::R,10000,8000,5000,3000)}, // {EjectorY,AXIS_STRUCT("Ejector_Y",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::R,10000,8000,5000,3000)}, // {EjectorZ,AXIS_STRUCT("Ejector_Z",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::R,10000,8000,5000,3000)}, // {EjectorPinZ,AXIS_STRUCT("EjectorPin_Z",USE_TYPE::NOUSE,CAxis::AXIS_TYPE::R,10000,8000,5000,3000)}, // //}; enum IO_LIST { BDVacDi, BDFlowDi, WaferHeadVacDi, WaferHeadFlowDi, WaferHeadFlowDo, WaffleHeadVacDi, WaffleHeadFlowDi, //BondTable PcbArriveDi, PcbLeaveDi, BondTableDo, //����� NozzleCylNDi, NozzleCylPDi, NozzleExistDi1, NozzleExistDi2, NozzleExistDi3, NozzleExistDi4, NozzleExistDi5, NozzleExistDi6, NozzleExistDi7, NozzleExistDi8, NozzleExistDi9, NozzleExistDi10, NozzleExistDi11, NozzleExistDi12, BDVacDo, BDFlowDo, WaferHeadVacDo, WaffleHeadVacDo, WaffleHeadFlowDo, //��ת̨ WaferCalibVacDo, WaffleCalibVacDo, BDTableVacGpo, NozzleCylDo, WaferTable_Ring, EjectorVacDo, //���� UltraHeadDo, }; //typedef struct _IO_STRUCT //{ // string IoName; //Io���� // USE_TYPE Use; //0�����ã�1������ // IO_TYPE IoType; //Io���� // DIGIT_IO_LEVEL FirstStatus; //����Io�ij�ʼ״̬ // _IO_STRUCT(string name, USE_TYPE use, IO_TYPE type, DIGIT_IO_LEVEL status) // { // IoName = name; // Use = use; // IoType = type; // FirstStatus = status; // } // _IO_STRUCT(string name, USE_TYPE use, IO_TYPE type) // { // IoName = name; // Use = use; // IoType = type; // FirstStatus = DIGIT_IO_LEVEL::NUL; // } //}IO_STRUCT; // //const static map<IO_LIST, IO_STRUCT> g_mapIoList = { // {BDVacDi,IO_STRUCT("BDVacDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // {BDFlowDi,IO_STRUCT("BDFlowDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // {BDVacDo,IO_STRUCT("BDVacDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // {BDFlowDo,IO_STRUCT("BDFlowDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // {UltraHeadDo,IO_STRUCT("UltraHeadDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // // {WaferHeadVacDi,IO_STRUCT("WaferHeadVacDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // {WaferHeadFlowDi,IO_STRUCT("WaferHeadFlowDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // {WaferHeadFlowDo,IO_STRUCT("WaferHeadFlowDo",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // {WaffleHeadVacDi,IO_STRUCT("WaffleHeadVacDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // {WaffleHeadFlowDi,IO_STRUCT("WaffleHeadFlowDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // //BondTable // {PcbArriveDi,IO_STRUCT("PcbArriveDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // {PcbLeaveDi,IO_STRUCT("PcbLeaveDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // {BondTableDo,IO_STRUCT("BondTableDo",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // //����� // {NozzleCylNDi,IO_STRUCT("NozzleCylNDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // {NozzleCylPDi,IO_STRUCT("NozzleCylPDi",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // // {WaferHeadVacDo,IO_STRUCT("WaferHeadVacDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // {WaffleHeadVacDo,IO_STRUCT("WaffleHeadVacDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // {WaffleHeadFlowDo,IO_STRUCT("WaffleHeadFlowDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // //��ת̨ // {WaferCalibVacDo,IO_STRUCT("WaferCalibVacDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // {WaffleCalibVacDo,IO_STRUCT("WaffleCalibVacDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // {BDTableVacGpo,IO_STRUCT("BDTableVacGpo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // {NozzleCylDo,IO_STRUCT("NozzleCylDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // // {WaferTable_Ring,IO_STRUCT("WaferTable_Ring",USE_TYPE::NOUSE,IO_TYPE::DI,DIGIT_IO_LEVEL::LOW)}, // // {EjectorVacDo,IO_STRUCT("EjectorVacDo",USE_TYPE::NOUSE,IO_TYPE::DO,DIGIT_IO_LEVEL::LOW)}, // // //}; class __declspec(dllexport) CModule { public: CModule(MODULE_LIST eModuleType); LONG Init(); bool IsInitSuccess() {return m_bIsInitSuccess;} LONG GetModuleType() const { return m_nModuleType; } string GetModuleName() const { return m_strModuleName; } virtual LONG AllocateIo(vector<CIO*> vecIo) { return OK; }; virtual LONG AllocateAxis(vector<CAxis*> vecAxis) { return OK; }; virtual LONG GetParam() = 0; //��ȡ���ò��� virtual LONG SetParam() = 0; //�������ò��� virtual LONG ToHome() = 0; //ģ����� virtual LONG Sync() = 0; //�ȴ���λ virtual LONG ToSafePosition() = 0; //ģ��ȥ��ȫλ�� virtual LONG InitResource() = 0; //�����ᡢIO���궨����Դ virtual void SetDataChangFunction() = 0; //�����յ����ݸ���֪ͨ��������,�ص����� virtual void DataChangNotice(string strDbName, string strTableName) = 0; //�ص������������� LONG SaveDataToDB(); protected: vector<MODULE_CONFIG_STRUCT>* GetConfigVector() { return &m_vecConfig; } protected: CManageDB* m_pCManageDB = nullptr; CModuleConfig* m_pModuleConfigDB = nullptr; CHardware* m_pCHardware = nullptr; vector<MODULE_CONFIG_STRUCT> m_vecConfig; bool m_bIsInitSuccess = false; INT m_nModuleType = 0; string m_strModuleName = ""; //ģ���Ƿ����� bool m_bEnable = false; };