LAPTOP-SNT8I5JK\Boounion
2025-05-20 ebc5dba7e2b0dccb9583faefa21ffd3454792788
SourceCode/Bond/Servo/CEquipment.h
@@ -27,6 +27,11 @@
#include <list>
#include "CGlass.h"
#include "CRecipesManager.h"
#include "CJobDataA.h"
#include "CJobDataB.h"
#include "CJobDataC.h"
#include "CJobDataS.h"
#include "CProcessData.h"
namespace SERVO {
@@ -63,6 +68,56 @@
      BOOL alive;
   } ALIVE;
   enum DISPATCHING_MODE {
      EAS = 1,
      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,
      Move,
      Get,
      Put,
      One_Action_Exchange,
      Two_Action_Exchange,
      Command_Clear,
      Batch_get,
      Batch_put
   };
   enum VCR_Reply_Code {
      OK = 1,
      NG,
      Job_Data_Request,
      VCR_Mismatch
   };
   // Robot cmd param
#define ROBOT_CMD_PARAM_SIZE      16         /* 防止以后修改ROBOT_CMD_PARAM为不是4的整数倍 */
   typedef struct _ROBOT_CMD_PARAM {
      short sequenceNo;
      short rcmd;
      short armNo;
      short getPosition;
      short putPosition;
      short getSlotNo;
      short putSlotNo;
      short subCmd;
   } ROBOT_CMD_PARAM;
   class CEquipment
   {
   public:
@@ -74,6 +129,9 @@
      virtual const char* getClassName() = 0;
      virtual void setListener(EquipmentListener listener);
      void setCcLink(CCCLinkIEControl* pCcLink);
      virtual BOOL isArm() { return FALSE; };
      void setArm(CEquipment* pEquipment);
      CEquipment* getArm();
      void setBaseAlarmId(int nBaseId);
      int getBaseAlarmId();
      void setID(int nID);
@@ -110,7 +168,18 @@
      virtual BOOL glassWillArrive(CGlass* pGlass);
      virtual int outputGlass(int port);
      virtual int glassArrived(CGlass* pGlass);
      virtual int fetchedOutJob(CJobDataB* pJobDataB);
      virtual int storedJob(CJobDataB* pJobDataB);
      virtual int onReceivedJob(int port, CJobDataS* pJobDataS);
      virtual int onSentOutJob(int port, CJobDataS* pJobDataS);
      virtual BOOL onPreFetchedOutJob(int port, CJobDataB* pJobDataB);
      virtual int onFetchedOutJob(int port, CJobDataB* pJobDataB);
      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();
      BOOL removeClass(CGlass* pGlass);
      bool isAlarmStep(SERVO::CStep* pStep);
@@ -128,7 +197,11 @@
      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);
      int setDispatchingMode(DISPATCHING_MODE mode, ONWRITED onWritedBlock = nullptr);
      int indexerOperationModeChange(IDNEXER_OPERATION_MODE mode, ONWRITED onWritedBlock = nullptr);
      // 请求主配方列表
      // unitNo: 0:local; Others:unit No
      int masterRecipeListRequest(short unitNo);
@@ -138,6 +211,9 @@
      // localRecipeId: 本地配方id
      // unitNo: 0:local; Others:unit No
      int recipeParameterRequest(short masterRecipeId, short localRecipeId, short unitNo);
   public:
      BOOL isGlassListEmpty();
   // 以下为从CC-Link读取到的Bit标志位检测函数
@@ -158,6 +234,18 @@
      void addGlassToList(CGlass* pGlass);
      short decodeRecipeListReport(const char* pszData, size_t size);
      short decodeRecipeParameterReport(const char* pszData, size_t size);
      int decodeProcessDataReport(CStep* pStep, const char* pszData, size_t size);
      int decodeReceivedJobReport(CStep* pStep, int port, const char* pszData, size_t size);
      int decodeSentOutJobReport(CStep* pStep, int port, const char* pszData, size_t size);
      int decodeFetchedOutJobReport(CStep* pStep, int port, const char* pszData, size_t size);
      int decodeStoredJobReport(CStep* pStep, int port, const char* pszData, size_t size);
      int decodeVCREventReport(CStep* pStep, const char* pszData, size_t size);
      int addJobDataB(CJobDataB* pJobDataB);
      int removeJobDataB(int nCassetteSequenceNo, int nJobSequenceNo);
      CJobDataB* getJobDataB(int nCassetteSequenceNo, int nJobSequenceNo);
      int addJobDataS(CJobDataS* pJobDataS);
      int removeJobDataS(int nCassetteSequenceNo, int nJobSequenceNo);
      CJobDataS* getJobDataS(int nCassetteSequenceNo, int nJobSequenceNo);
   protected:
      EquipmentListener m_listener;
@@ -188,6 +276,11 @@
      std::map<unsigned int, CStep*> m_mapStep;
      int m_nBaseAlarmId;
      CRecipesManager m_recipesManager;
   private:
      CEquipment* m_pArm;
      std::list<CJobDataS> m_listJobDataS;
      std::list<CJobDataB> m_listJobDataB;
   };
}