| | |
| | | |
| | | return (m_glassList.size() < 4); |
| | | } |
| | | |
| | | int CBakeCooling::getIndexerOperationModeBaseValue() |
| | | { |
| | | return 25000; |
| | | } |
| | | } |
| | |
| | | virtual void getAttributeVector(CAttributeVector& attrubutes); |
| | | virtual int recvIntent(CPin* pPin, CIntent* pIntent); |
| | | virtual BOOL glassWillArrive(CGlass* pGlass); |
| | | virtual int getIndexerOperationModeBaseValue(); |
| | | }; |
| | | } |
| | | |
| | |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CBonder::getIndexerOperationModeBaseValue() |
| | | { |
| | | return m_nIndex == 0 ? 15000 : 20000; |
| | | } |
| | | } |
| | |
| | | virtual BOOL glassWillArrive(CGlass* pGlass); |
| | | virtual BOOL onPreStoredJob(int port, CJobDataB* pJobDataB); |
| | | virtual int onProcessData(CProcessData* pProcessData); |
| | | virtual int getIndexerOperationModeBaseValue(); |
| | | |
| | | public: |
| | | void setIndex(unsigned int index); |
| | |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | { |
| | | // Indexer Operation Mode Change |
| | | CEqWriteStep* pStep = new CEqWriteStep(); |
| | | pStep->setName(STEP_EFEM_IN_OP_MODE_CHANGE); |
| | | pStep->setWriteSignalDev(0x070); |
| | | pStep->setDataDev(0x023); |
| | | if (addStep(STEP_ID_IN_OP_CMD_REPLY, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | int CEFEM::onStepEvent(CStep* pStep, int code) |
| | |
| | | |
| | | return -1; |
| | | } |
| | | |
| | | int CEFEM::getIndexerOperationModeBaseValue() |
| | | { |
| | | return 10000; |
| | | } |
| | | } |
| | |
| | | virtual int onSentOutJob(int port, CJobDataS* pJobDataS); |
| | | virtual int onFetchedOutJob(int port, CJobDataB* pJobDataB); |
| | | virtual int onStoredJob(int port, CJobDataB* pJobDataB); |
| | | virtual int getIndexerOperationModeBaseValue(); |
| | | |
| | | public: |
| | | void setPort(unsigned int index, CLoadPort* pPort); |
| | |
| | | return 0; |
| | | } |
| | | |
| | | int CEquipment::indexerOperationModeChange(IDNEXER_OPERATION_MODE mode, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(STEP_EFEM_IN_OP_MODE_CHANGE); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | unsigned short operationMode = (unsigned short)(mode + getIndexerOperationModeBaseValue()); |
| | | LOGI("<CEquipment-%s>准备设置indexerOperationMode<%d>", m_strName.c_str(), (int)mode); |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeShort(operationMode, onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeShort(operationMode, [&, mode](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CEquipment-%s>设置indexerOperationMode成功.", m_strName.c_str()); |
| | | } |
| | | else { |
| | | LOGI("<CEquipment-%s>设置indexerOperationMode失败,code:%d", m_strName.c_str(), code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CEquipment::masterRecipeListRequest(short unitNo) |
| | | { |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(STEP_EQ_MASTER_RECIPE_LIST_REQ); |
| | |
| | | return 0; |
| | | } |
| | | |
| | | int CEquipment::getIndexerOperationModeBaseValue() |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | int CEquipment::addJobDataB(CJobDataB* pJobDataB) |
| | | { |
| | | // 添加之前先删除旧的,以免数据重复 |
| | |
| | | Local = 2 |
| | | }; |
| | | |
| | | enum IDNEXER_OPERATION_MODE { |
| | | Normal = 1, |
| | | Clear_Out = 2, |
| | | Cold_Run = 2, |
| | | Start = 10, |
| | | Stop = 11, |
| | | Pause = 12, |
| | | Resume = 13, |
| | | Abort = 14, |
| | | Cancel = 15, |
| | | }; |
| | | |
| | | enum RCMD { |
| | | Robot_home = 1, |
| | | Transfer, |
| | |
| | | virtual BOOL onPreStoredJob(int port, CJobDataB* pJobDataB); |
| | | virtual int onStoredJob(int port, CJobDataB* pJobDataB); |
| | | virtual int onProcessData(CProcessData* pProcessData); |
| | | virtual int getIndexerOperationModeBaseValue(); |
| | | void getGlassList(std::list<CGlass*>& list); |
| | | CGlass* getGlassFromList(const char* pszId); |
| | | CGlass* getFrontGlass(); |
| | |
| | | int clearCimMessage(short id, short nTouchPanelNo); |
| | | int setDateTime(short year, short month, short day, short hour, short minute, short second); |
| | | int setDispatchingMode(DISPATCHING_MODE mode, ONWRITED onWritedBlock = nullptr); |
| | | int indexerOperationModeChange(IDNEXER_OPERATION_MODE mode, ONWRITED onWritedBlock = nullptr); |
| | | |
| | | |
| | | |
| | | // 请求主配方列表 |
| | | // unitNo: 0:local; Others:unit No |
| | |
| | | |
| | | return m_glassList.empty(); |
| | | } |
| | | |
| | | int CMeasurement::getIndexerOperationModeBaseValue() |
| | | { |
| | | return 35000; |
| | | } |
| | | } |
| | |
| | | virtual void getAttributeVector(CAttributeVector& attrubutes); |
| | | virtual int recvIntent(CPin* pPin, CIntent* pIntent); |
| | | virtual BOOL glassWillArrive(CGlass* pGlass); |
| | | virtual int getIndexerOperationModeBaseValue(); |
| | | |
| | | }; |
| | | } |
| | | |
| | |
| | | |
| | | return TRUE; |
| | | } |
| | | |
| | | int CVacuumBake::getIndexerOperationModeBaseValue() |
| | | { |
| | | return 30000; |
| | | } |
| | | } |
| | |
| | | virtual int recvIntent(CPin* pPin, CIntent* pIntent); |
| | | virtual BOOL glassWillArrive(CGlass* pGlass); |
| | | virtual BOOL onPreStoredJob(int port, CJobDataB* pJobDataB); |
| | | virtual int getIndexerOperationModeBaseValue(); |
| | | |
| | | }; |
| | | } |
| | | |
| | |
| | | #define STEP_EQ_STORED_JOB15 _T("EQStoredJobReport15") |
| | | #define STEP_EQ_DISPATCHINT_MODE_CHANGE _T("EQDispatchingModeChangeCommand") |
| | | #define STEP_EFEM_ROBOT_CMD _T("EFEMRobotCmd") |
| | | #define STEP_EFEM_IN_OP_MODE_CHANGE _T("EFEMIndexerOperationModeChangeCommand") |
| | | |
| | | |
| | | |
| | |
| | | #define STEP_ID_FETCHED_OUT_JOB_REPORT13 0x5BB |
| | | #define STEP_ID_FETCHED_OUT_JOB_REPORT14 0x5BC |
| | | #define STEP_ID_FETCHED_OUT_JOB_REPORT15 0x5BD |
| | | #define STEP_ID_DISPATCHING_MODE_CHANGE_REPLY 0x5E2 |
| | | #define STEP_ID_IN_OP_CMD_REPLY 0x5F0 |
| | | #define STEP_ID_DISPATCHING_MODE_CHANGE_REPLY 0x5F1 |
| | | #define STEP_ID_PORT1_TYPE_CHANGE 0x600 |
| | | #define STEP_ID_PORT2_TYPE_CHANGE 0x601 |
| | | #define STEP_ID_PORT3_TYPE_CHANGE 0x602 |
| | |
| | | #define STEP_ID_ROBOT_CMD_REPLY 0x6b0 |
| | | |
| | | |
| | | |
| | | /* base alarm */ |
| | | #define BASE_ALARM_EFEM 10000 |
| | | #define BASE_ALARM_BONDER1 20000 |