123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- #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的初始状态
- // _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;
- };
|