LAPTOP-SNT8I5JK\Boounion
2025-05-05 38fdd2e7d1d45a3ffed57fde30031a6a8f04d235
SourceCode/Bond/Servo/CEquipment.h
@@ -1,9 +1,32 @@
#pragma once
#include "Log.h"
#include "CCLinkIEControl.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 {
@@ -12,10 +35,16 @@
#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 结构体定义
@@ -45,6 +74,8 @@
      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);
@@ -53,6 +84,7 @@
      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);
@@ -60,11 +92,46 @@
      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);
   // 以下为从CC-Link读取到的Bit标志位检测函数
@@ -77,14 +144,13 @@
      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);
      int decodeRecipeListReport(const char* pszData, size_t size);
   protected:
      EquipmentListener m_listener;
@@ -95,9 +161,13 @@
      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;
@@ -106,9 +176,11 @@
      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;
   };
}