| | |
| | | #pragma once |
| | | #include "Log.h" |
| | | #include "CCLinkIEControl.h" |
| | | #include "CStep.h" |
| | | #include "CSample.h" |
| | | #include "CPin.h" |
| | | #include "CEqModeStep.h" |
| | | #include "CEqStatusStep.h" |
| | | #include "CEqAlarmStep.h" |
| | | #include "CEqProcessStep.h" |
| | | #include "CEqCimModeChangeStep.h" |
| | | #include "CEqModeChangeStep.h" |
| | | #include "CEqCimMessageCmdStep.h" |
| | | #include "CEqCimMessageClearStep.h" |
| | | #include "CEqDateTimeSetCmdStep.h" |
| | | #include "CEqVCREnableStep.h" |
| | | #include "CEqPortChangeStep.h" |
| | | #include "CEqReadIntStep.h" |
| | | #include "CEqCassetteTransferStateStep.h" |
| | | #include "CEqCassetteCtrlCmdStep.h" |
| | | #include "CEqJobEventStep.h" |
| | | #include "CEqVcrEventStep.h" |
| | | #include "CEqCurrentRecipeChangeStep.h" |
| | | #include "CEqWriteStep.h" |
| | | #include "CEqReadStep.h" |
| | | #include <vector> |
| | | #include <map> |
| | | #include <list> |
| | | #include "CGlass.h" |
| | | #include "CRecipesManager.h" |
| | | |
| | | |
| | | namespace SERVO { |
| | |
| | | #define VCR_MAX 1 |
| | | |
| | | typedef std::function<void(void* pEiuipment, BOOL bAlive)> ONALIVE; |
| | | typedef std::function<void(void* pEiuipment, int code)> ONDATACHANGED; |
| | | typedef std::function<void(void* pEiuipment, int state, int alarmId, int unitId, int level)> ONALARM; |
| | | typedef std::function<void(void* pEiuipment, void* pReport)> ONVCREVENTREPORT; |
| | | typedef struct _EquipmentListener |
| | | { |
| | | ONALIVE onAlive; |
| | | ONALIVE onCimStateChanged; |
| | | ONALARM onAlarm; |
| | | ONDATACHANGED onDataChanged; |
| | | ONVCREVENTREPORT onVcrEventReport; |
| | | } EquipmentListener; |
| | | |
| | | // Memory Block 结构体定义 |
| | |
| | | virtual const char* getClassName() = 0; |
| | | virtual void setListener(EquipmentListener listener); |
| | | void setCcLink(CCCLinkIEControl* pCcLink); |
| | | void setBaseAlarmId(int nBaseId); |
| | | int getBaseAlarmId(); |
| | | void setID(int nID); |
| | | int getID(); |
| | | void setName(const char* pszName); |
| | |
| | | std::string& getDescription(); |
| | | void setStation(int network, int station); |
| | | const StationIdentifier& getStation(); |
| | | virtual void getAttributeVector(CAttributeVector& attrubutes); |
| | | void setReadBitBlock(unsigned int start, unsigned int end); |
| | | MemoryBlock& getReadBitBlock(); |
| | | void setWriteBitBlock(unsigned int start, unsigned int end); |
| | |
| | | void getProperties(std::vector<std::pair<std::string, std::string>>& container); |
| | | int addStep(unsigned int addr, CStep* pStep); |
| | | CStep* getStep(unsigned int addr); |
| | | CStep* getStepWithName(const char* pszName); |
| | | std::map<unsigned int, CStep*>& getSteps(); |
| | | virtual void init(); |
| | | virtual void term(); |
| | | virtual void initPins() = 0; |
| | | virtual void initSteps(); |
| | | virtual void onTimer(UINT nTimerid); |
| | | virtual void serialize(CArchive& ar); |
| | | virtual void onReceiveLBData(const char* pszData, size_t size); |
| | | virtual int onStepEvent(CStep* pStep, int code); |
| | | virtual CPin* addPin(PinType type, char* pszName); |
| | | CPin* getPin(char* pszName); |
| | | std::vector<CPin*>& CEquipment::getInputPins(); |
| | | std::vector<CPin*>& CEquipment::getOutputPins(); |
| | | virtual int recvIntent(CPin* pPin, CIntent* pIntent); |
| | | virtual BOOL glassWillArrive(CGlass* pGlass); |
| | | virtual int outputGlass(int port); |
| | | virtual int glassArrived(CGlass* pGlass); |
| | | void getGlassList(std::list<CGlass*>& list); |
| | | CGlass* getFrontGlass(); |
| | | BOOL removeClass(CGlass* pGlass); |
| | | bool isAlarmStep(SERVO::CStep* pStep); |
| | | bool isVcrEventStep(SERVO::CStep* pStep); |
| | | bool isCassetteTransferStateStep(SERVO::CStep* pStep); |
| | | bool isPortTypeStep(SERVO::CStep* pStep); |
| | | bool isPortModeStep(SERVO::CStep* pStep); |
| | | bool isPortCassetteTypeStep(SERVO::CStep* pStep); |
| | | bool isPortTransferModeStep(SERVO::CStep* pStep); |
| | | bool isPortEnableStep(SERVO::CStep* pStep); |
| | | bool isPortTypeAutoChangeEnableStep(SERVO::CStep* pStep); |
| | | bool isCimMessageConfirmStep(SERVO::CStep* pStep); |
| | | int setEqMode(short mode); |
| | | int setCimMode(BOOL bOn); |
| | | int setCimMessage(const char* pszMessage, short id, short nTouchPanelNo); |
| | | int clearCimMessage(short id, short nTouchPanelNo); |
| | | int setDateTime(short year, short month, short day, short hour, short minute, short second); |
| | | |
| | | // 请求主配方列表 |
| | | // unitNo: 0:local; Others:unit No |
| | | int masterRecipeListRequest(short unitNo); |
| | | |
| | | // 请求配方参数 |
| | | // masterRecipeId: 主配方id |
| | | // localRecipeId: 本地配方id |
| | | // unitNo: 0:local; Others:unit No |
| | | int recipeParameterRequest(short masterRecipeId, short localRecipeId, short unitNo); |
| | | |
| | | |
| | | // 以下为从CC-Link读取到的Bit标志位检测函数 |
| | |
| | | BOOL isAutoRecipeChange(); |
| | | BOOL isVCREnable(unsigned int index); |
| | | |
| | | |
| | | private: |
| | | BOOL isBitOn(const char* pszData, size_t size, int index); |
| | | inline BOOL equalBool(BOOL b1, BOOL b2); |
| | | |
| | | protected: |
| | | inline void Lock() { EnterCriticalSection(&m_criticalSection); } |
| | | inline void Unlock() { LeaveCriticalSection(&m_criticalSection); } |
| | | BOOL isBitOn(const char* pszData, size_t size, int index); |
| | | inline BOOL equalBool(BOOL b1, BOOL b2); |
| | | void addGlassToList(CGlass* pGlass); |
| | | short decodeRecipeListReport(const char* pszData, size_t size); |
| | | short decodeRecipeParameterReport(const char* pszData, size_t size); |
| | | |
| | | protected: |
| | | EquipmentListener m_listener; |
| | |
| | | StationIdentifier m_station; |
| | | MemoryBlock m_blockReadBit; |
| | | MemoryBlock m_blockWriteBit; |
| | | std::vector<CPin*> m_inputPins; |
| | | std::vector<CPin*> m_outputPins; |
| | | std::list<CGlass*> m_glassList; |
| | | |
| | | |
| | | // 以下为从CC-Link读取到的Bit标志位 |
| | | private: |
| | | protected: |
| | | ALIVE m_alive; |
| | | BOOL m_bCimState; // ON/OFF |
| | | BOOL m_bUpstreamInline; |
| | |
| | | BOOL m_bAutoRecipeChange; |
| | | BOOL m_bVCREnable[VCR_MAX]; |
| | | |
| | | private: |
| | | protected: |
| | | CCCLinkIEControl* m_pCclink; |
| | | std::map<unsigned int, CStep*> m_mapStep; |
| | | int m_nBaseAlarmId; |
| | | CRecipesManager m_recipesManager; |
| | | }; |
| | | } |
| | | |