#pragma once #include "CModule.h" #include "CTemperature.h" /*共晶台和固晶台,机械上的差距是共晶台没有真空,均定义真空IO对象,共晶台流程不调用真空开关*/ class __declspec(dllexport) CBondTable : public CModule { //设备类型 enum TemperatureStatus { Disable = 0 /*禁用*/, BondOpen = 1, /*工作时开,处于预备温度,工作时升到固晶温度*/ BnormallyOpen = 2 /*常开,一直在固晶温度*/ }; typedef struct _BOND_TABLE_CONFIG_STRUCT { double dWaitPosZ; //安全位置 double dBondPosZ; //工作位置 long dVacuumDelay; //真空延时 TemperatureStatus eOpenStatus; //温控器工作状态 double nBondTempelature; //固晶温度 double nPreTempelature; //预备温度 std::string sTemperatureCtrlPort; //温控器端口 int nAddress; //站点地址 Temperature_Ctltype nTemCtrlType; //温控器类型 _BOND_TABLE_CONFIG_STRUCT() { dWaitPosZ = 0; dBondPosZ = 0; eOpenStatus = TemperatureStatus::Disable; nBondTempelature = 0; nPreTempelature = 0; sTemperatureCtrlPort = "192.168.1.10"; nAddress = 0x5; nTemCtrlType = GLTC; } } BOND_TABLE_CONFIG_STRUCT; public: CBondTable(MODULE_LIST eModuleType); ~CBondTable(); 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(); virtual LONG AllocateAxis(vector vecAxis) override; virtual LONG AllocateIo(vector vecIo) override; ////检测物料到位 //bool CheckPcbArrive(); ////检测物料移开 //bool CheckPcbLeave(); //平台上升到固晶位置 LONG ToBondPos(bool waitDone); //平台下降,允许上下料 LONG ToWaitPos(bool waitDone); LONG SetVacuumOn(); LONG SetVacuumOff(); LONG WaitVacuumDone(); bool CheckZDone(); //设置工作台温度为固晶温度 lTimeOut (毫秒)>0时,等待温度到达5%范围内 LONG SetBondTemprature(long lTimeOut = 5000); //设置工作台温度为预备温度 LONG SetPreTemprature(long lTimeOut = 5000); private: CAxis* m_pAxisZ = nullptr; //CIO* m_pPcbArriveDi = nullptr; //CIO* m_pPcbLeaveDi = nullptr; CIO* m_pVacDo = nullptr; BOND_TABLE_CONFIG_STRUCT m_stConfig; //温控器 bool m_TemperatureIsUse = false; //温控器是否启用 CTemperature* m_pTempCtrl = nullptr; LONG WaitTemprature(double dMinTempelature, double dMaxTempelature, long lTimeOut); //设置温度 LONG SetTemprature(double dTempelature, long lTimeOut = 0); };