From 57056db746cec1ad5c0cc5dad93b8f3474d2562d Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期六, 29 三月 2025 15:18:13 +0800
Subject: [PATCH] 1.添加载具搬送状态类(CEqCassetteTransferStateStep)
---
SourceCode/Bond/Servo/Servo.vcxproj | 2
SourceCode/Bond/Servo/Servo.vcxproj.filters | 2
SourceCode/Bond/Servo/CEqCassetteTransferStateStep.cpp | 293 ++++++++++++++++++++++++++
SourceCode/Bond/Servo/CEquipment.cpp | 111 ++++++----
SourceCode/Bond/Servo/CMaster.cpp | 63 +++++
SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h | 44 ++++
SourceCode/Bond/Servo/CEquipment.h | 3
SourceCode/Bond/Servo/Common.h | 92 ++++++++
8 files changed, 563 insertions(+), 47 deletions(-)
diff --git a/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.cpp b/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.cpp
new file mode 100644
index 0000000..365da4a
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.cpp
@@ -0,0 +1,293 @@
+#include "stdafx.h"
+#include "CEqCassetteTransferStateStep.h"
+#include "Log.h"
+#include "Common.h"
+
+
+namespace SERVO {
+ CEqCassetteTransferStateStep::CEqCassetteTransferStateStep()
+ {
+ m_nPortStatusDev = 0;
+ m_nPortStatus = 0;
+ m_nCassetteSequenceNo = 0;
+ m_nLoadingCassetteType = 0;
+ m_nQTimeFlag = 0;
+ m_nCassetteMappingState = 0;
+ m_nCassetteStatus = 0;
+ }
+
+ CEqCassetteTransferStateStep::~CEqCassetteTransferStateStep()
+ {
+
+ }
+
+ void CEqCassetteTransferStateStep::getAttributeVector(CAttributeVector& attrubutes)
+ {
+ CReadStep::getAttributeVector(attrubutes);
+
+ std::string strTemp;
+ attrubutes.addAttribute(new CAttribute("Dev",
+ ("W" + CToolUnits::toHexString(m_nPortStatusDev, strTemp)).c_str(), ""));
+ attrubutes.addAttribute(new CAttribute("Port Status",
+ getPortStatusDescription(strTemp).c_str(), ""));
+ attrubutes.addAttribute(new CAttribute("CassetteSequenceNo",
+ std::to_string(m_nCassetteSequenceNo).c_str(), ""));
+ attrubutes.addAttribute(new CAttribute("CassetteID",
+ m_strCassetteID.c_str(), ""));
+ attrubutes.addAttribute(new CAttribute("LoadingCassetteType",
+ getLoadingCassetteTypeDescription(strTemp).c_str(), ""));
+ attrubutes.addAttribute(new CAttribute("Q-Time Flag",
+ getQTimeFlagDescription(strTemp).c_str(), ""));
+ attrubutes.addAttribute(new CAttribute("CassetteMappingState",
+ getCassetteMappingStateDescription(strTemp).c_str(), ""));
+ attrubutes.addAttribute(new CAttribute("CassetteStatus",
+ getCassetteStatusDescription(strTemp).c_str(), ""));
+ }
+
+ int CEqCassetteTransferStateStep::onReadData()
+ {
+ CReadStep::onReadData();
+
+
+ char szBuffer[64];
+ int nRet = m_pCclink->ReadData2(m_station, DeviceType::W, m_nPortStatusDev,
+ 64, szBuffer);
+ if (0 != nRet) {
+ return -1;
+ }
+
+
+ // Port status,
+ // 注:也可以根据m_nSignalType的值来判断状态值
+ m_nPortStatus = (unsigned int)CToolUnits::toInt16(&szBuffer[0]);
+
+
+ // Cassette序号、ID
+ m_nCassetteSequenceNo = (unsigned int)CToolUnits::toInt16(&szBuffer[2]);
+ convertString(&szBuffer[4], 20, m_strCassetteID);
+
+
+ // Job Existence Slot
+ if (PORT_INUSE == m_nPortStatus) {
+
+ }
+
+
+ // Q-Time
+ if (PORT_UNLOAD_READY == m_nPortStatus) {
+ m_nQTimeFlag = (unsigned int)CToolUnits::toInt16(&szBuffer[50]);
+ }
+
+ // 其它
+ m_nCassetteMappingState = (unsigned int)CToolUnits::toInt16(&szBuffer[52]);
+ m_nCassetteStatus = (unsigned int)CToolUnits::toInt16(&szBuffer[54]);
+ if (m_nCassetteStatus > 1) {
+ m_nLoadingCassetteType = (unsigned int)CToolUnits::toInt16(&szBuffer[48]);
+ }
+
+
+ LOGI("<CCassetteTranserStateStep>Port status changed<Dev:%d, Status:%d, CassetteSequenceNo:%d>",
+ m_nPortStatusDev, m_nPortStatus, m_nCassetteSequenceNo);
+
+ return 0;
+ }
+
+ int CEqCassetteTransferStateStep::onComplete()
+ {
+ CReadStep::onComplete();
+ LOGI("<CCassetteTranserStateStep> onComplete.");
+
+ return 0;
+ }
+
+ int CEqCassetteTransferStateStep::onTimeout()
+ {
+ CReadStep::onTimeout();
+ LOGI("<CCassetteTranserStateStep> onTimeout.");
+
+ return 0;
+ }
+
+ void CEqCassetteTransferStateStep::setPortStatusDev(int nDev)
+ {
+ m_nPortStatusDev = nDev;
+ }
+
+ int CEqCassetteTransferStateStep::getPortStatus()
+ {
+ return m_nPortStatus;
+ }
+
+ int CEqCassetteTransferStateStep::getCassetteSequenceNo()
+ {
+ return m_nCassetteSequenceNo;
+ }
+
+ std::string& CEqCassetteTransferStateStep::getCassetteID()
+ {
+ return m_strCassetteID;
+ }
+
+ int CEqCassetteTransferStateStep::getLoadingCassetteType()
+ {
+ return m_nLoadingCassetteType;
+ }
+
+ int CEqCassetteTransferStateStep::getQTimeFlag()
+ {
+ return m_nQTimeFlag;
+ }
+
+ int CEqCassetteTransferStateStep::getCassetteMappingState()
+ {
+ return m_nCassetteMappingState;
+ }
+
+ int CEqCassetteTransferStateStep::getCassetteStatus()
+ {
+ return m_nCassetteStatus;
+ }
+
+ /*
+ 1: Load Ready(Load Request)
+ 2: Loaded
+ 3: In Use (Load Complete)
+ 4: Unload Ready (Unload Request)
+ 5: Empty (Unload Complete)
+ 6: Blocked
+ */
+ std::string& CEqCassetteTransferStateStep::getPortStatusDescription(std::string& strDescription)
+ {
+ switch (m_nPortStatus) {
+ case PORT_LOAD_READY:
+ strDescription = _T("Load Ready(Load Request)");
+ break;
+ case PORT_LOADED:
+ strDescription = _T("Loaded");
+ break;
+ case PORT_INUSE:
+ strDescription = _T("In Use (Load Complete)");
+ break;
+ case PORT_UNLOAD_READY:
+ strDescription = _T("Unload Ready (Unload Request)");
+ break;
+ case PORT_EMPTY:
+ strDescription = _T("Empty (Unload Complete)");
+ break;
+ case PORT_BLOCKED:
+ strDescription = _T("Blocked");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
+ }
+
+ /*
+ 1: Actual Cassette
+ 2: Empty Cassette
+ *Include this item only when cassette exists
+ */
+ std::string& CEqCassetteTransferStateStep::getLoadingCassetteTypeDescription(std::string& strDescription)
+ {
+ switch (m_nLoadingCassetteType) {
+ case PORT_LOADING_CASSETTE_ACTUAL:
+ strDescription = _T("Actual Cassette");
+ break;
+ case PORT_LOADING_CASSETTE_EMPTY:
+ strDescription = _T("Empty Cassette");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
+ }
+
+ /*
+ 1: Normal Un-loading
+ 2: Q-Time Over & Un-loading
+ * Include this item only when Port Status is 'Unload Ready'
+ */
+ std::string& CEqCassetteTransferStateStep::getQTimeFlagDescription(std::string& strDescription)
+ {
+ switch (m_nQTimeFlag) {
+ case Q_TIME_NORMAL:
+ strDescription = _T("Normal Un-loading");
+ break;
+ case Q_TIME_OVER:
+ strDescription = _T("Q-Time Over & Un-loading");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
+ }
+
+ /*
+ 1: mapping use
+ 2: mapping not use
+ */
+ std::string& CEqCassetteTransferStateStep::getCassetteMappingStateDescription(std::string& strDescription)
+ {
+ switch (m_nCassetteMappingState) {
+ case CASSETTE_MAPPING_USE:
+ strDescription = _T("mapping use");
+ break;
+ case CASSETTE_MAPPING_USE:
+ strDescription = _T("mapping not use");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
+ }
+
+ /*
+ 1: No Cassette Exist
+ 2: Waiting for Cassette Data
+ 3: Waiting for Start Command
+ 4: Waiting for Processing
+ 5: In Processing
+ 6: Process Paused
+ 7: Process Completed
+ */
+ std::string& CEqCassetteTransferStateStep::getCassetteStatusDescription(std::string& strDescription)
+ {
+ switch (m_nCassetteStatus) {
+ case CASSETTE_NO_EXIST:
+ strDescription = _T("No Cassette Exist");
+ break;
+ case CASSETTE_WAITING_DATA:
+ strDescription = _T("Waiting for Cassette Data");
+ break;
+ case CASSETTE_WAITING_START:
+ strDescription = _T("Waiting for Start Command");
+ break;
+ case CASSETTE_WAITING_PROCCESSING:
+ strDescription = _T("Waiting for Processing");
+ break;
+ case CASSETTE_IN_PROCCESSING:
+ strDescription = _T("In Processing");
+ break;
+ case CASSETTE_PROCCESS_PAUSED:
+ strDescription = _T("Process Paused");
+ break;
+ case CASSETTE_PROCCESS_COMPLETED:
+ strDescription = _T("Process Completed");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
+ }
+}
diff --git a/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h b/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h
new file mode 100644
index 0000000..a069226
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h
@@ -0,0 +1,44 @@
+#pragma once
+#include "CReadStep.h"
+
+
+namespace SERVO {
+ class CEqCassetteTransferStateStep : public CReadStep
+ {
+ public:
+ CEqCassetteTransferStateStep();
+ ~CEqCassetteTransferStateStep();
+
+ public:
+ virtual void getAttributeVector(CAttributeVector& attrubutes);
+ virtual int onReadData();
+ virtual int onComplete();
+ virtual int onTimeout();
+ void setPortStatusDev(int nDev);
+ int getPortStatus();
+ int getCassetteSequenceNo();
+ std::string& getCassetteID();
+ int getLoadingCassetteType();
+ int getQTimeFlag();
+ int getCassetteMappingState();
+ int getCassetteStatus();
+ std::string& getPortStatusDescription(std::string& strDescription);
+ std::string& getLoadingCassetteTypeDescription(std::string& strDescription);
+ std::string& getQTimeFlagDescription(std::string& strDescription);
+ std::string& getCassetteMappingStateDescription(std::string& strDescription);
+ std::string& getCassetteStatusDescription(std::string& strDescription);
+
+ private:
+ int m_nPortStatusDev;
+ int m_nPortStatus;
+ int m_nCassetteSequenceNo;
+ std::string m_strCassetteID;
+ int m_nLoadingCassetteType;
+ int m_nQTimeFlag;
+ int m_nCassetteMappingState;
+ int m_nCassetteStatus;
+
+
+ };
+}
+
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index ffc0c87..4a771d2 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -3,6 +3,22 @@
#include "ToolUnits.h"
+#define CHECK_READ_STEP_SIGNAL(addr, data, size) { \
+ BOOL bFlag = isBitOn(data, size, addr); \
+ SERVO::CStep* pStep = getStep(addr); \
+ if (pStep != nullptr) { \
+ ((CReadStep*)pStep)->onReadSignal(bFlag ? addr : 0); \
+ } \
+}
+
+#define CHECK_WRITE_STEP_SIGNAL(addr, data, size) { \
+ BOOL bFlag = isBitOn(data, size, addr); \
+ SERVO::CStep* pStep = getStep(addr); \
+ if (pStep != nullptr) { \
+ ((CWriteStep*)pStep)->onRecvSignal(bFlag ? addr : 0); \
+ } \
+}
+
namespace SERVO {
CEquipment::CEquipment() : m_nID(0), m_strName(""), m_strDescription(""), m_station(0, 255)
@@ -358,40 +374,65 @@
// Equipment Status Change Report(0x361)
// Equipment Alarm Change Report(0x362 ~ 0x366)
for (int i = 0; i < 7; i++) {
- checkReadStepSignal(0x360 + i, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x360 + i, pszData, size);
}
// CIM Mode
- checkWriteStepSignal(0x350, pszData, size);
+ CHECK_WRITE_STEP_SIGNAL(0x350, pszData, size);
// Port1 ~ Port4
- checkReadStepSignal(0x3e0, pszData, size);
- checkReadStepSignal(0x3e1, pszData, size);
- checkReadStepSignal(0x3e2, pszData, size);
- checkReadStepSignal(0x3e3, pszData, size);
- checkReadStepSignal(0x3e8, pszData, size);
- checkReadStepSignal(0x3e9, pszData, size);
- checkReadStepSignal(0x3ea, pszData, size);
- checkReadStepSignal(0x3eb, pszData, size);
- checkReadStepSignal(0x3f0, pszData, size);
- checkReadStepSignal(0x3f1, pszData, size);
- checkReadStepSignal(0x3f2, pszData, size);
- checkReadStepSignal(0x3f3, pszData, size);
- checkReadStepSignal(0x3f8, pszData, size);
- checkReadStepSignal(0x3f9, pszData, size);
- checkReadStepSignal(0x3fa, pszData, size);
- checkReadStepSignal(0x3fb, pszData, size);
- checkReadStepSignal(0x400, pszData, size);
- checkReadStepSignal(0x401, pszData, size);
- checkReadStepSignal(0x402, pszData, size);
- checkReadStepSignal(0x403, pszData, size);
- checkReadStepSignal(0x408, pszData, size);
- checkReadStepSignal(0x409, pszData, size);
- checkReadStepSignal(0x40a, pszData, size);
- checkReadStepSignal(0x40b, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3e0, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3e1, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3e2, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3e3, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3e8, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3e9, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3ea, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3eb, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3f0, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3f1, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3f2, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3f3, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3f8, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3f9, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3fa, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x3fb, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x400, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x401, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x402, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x403, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x408, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x409, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x40a, pszData, size);
+ CHECK_READ_STEP_SIGNAL(0x40b, pszData, size);
+ // CEqCassetteTranserStateStep
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_EMPTY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_LOAD_READY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_LOADED, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_INUSE, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_UNLOAD_READY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_BLOCKED, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_EMPTY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_LOAD_READY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_LOADED, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_INUSE, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_UNLOAD_READY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTIE_BLOCKED, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_EMPTY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_LOAD_READY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_LOADED, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_INUSE, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_UNLOAD_READY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTIE_BLOCKED, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_EMPTY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_LOAD_READY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_LOADED, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_INUSE, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_UNLOAD_READY, pszData, size);
+ CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTIE_BLOCKED, pszData, size);
}
BOOL CEquipment::isBitOn(const char* pszData, size_t size, int index)
@@ -673,23 +714,5 @@
Unlock();
return pGlass;
- }
-
- void CEquipment::checkReadStepSignal(unsigned int addr, const char* pszData, size_t size)
- {
- BOOL bFlag = isBitOn(pszData, size, addr);
- SERVO::CStep* pStep = getStep(addr);
- if (pStep != nullptr) {
- ((CReadStep*)pStep)->onReadSignal(bFlag ? 1 : 0);
- }
- }
-
- void CEquipment::checkWriteStepSignal(unsigned int addr, const char* pszData, size_t size)
- {
- BOOL bFlag = isBitOn(pszData, size, addr);
- SERVO::CStep* pStep = getStep(addr);
- if (pStep != nullptr) {
- ((CWriteStep*)pStep)->onRecvSignal(bFlag);
- }
}
}
diff --git a/SourceCode/Bond/Servo/CEquipment.h b/SourceCode/Bond/Servo/CEquipment.h
index a740c89..f95070a 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -15,6 +15,7 @@
#include "CEqVCREnableStep.h"
#include "CEqPortChangeStep.h"
#include "CEqReadIntStep.h"
+#include "CEqCassetteTransferStateStep.h"
#include <vector>
#include <map>
#include <list>
@@ -114,8 +115,6 @@
private:
BOOL isBitOn(const char* pszData, size_t size, int index);
inline BOOL equalBool(BOOL b1, BOOL b2);
- void checkReadStepSignal(unsigned int addr, const char* pszData, size_t size);
- void checkWriteStepSignal(unsigned int addr, const char* pszData, size_t size);
protected:
inline void Lock() { EnterCriticalSection(&m_criticalSection); }
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index ba4be00..24dfac0 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -2,6 +2,18 @@
#include "Common.h"
#include "CMaster.h"
+
+#define ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(name,ws,index,psd) { \
+ CEqCassetteTransferStateStep* pStep = new CEqCassetteTransferStateStep(); \
+ pStep->setName(name); \
+ pStep->setListener(listener); \
+ pStep->setWriteSignalDev(ws); \
+ pStep->setPortStatusDev(psd); \
+ if (pEquipment->addStep(index, pStep) != 0) { \
+ delete pStep; \
+ } \
+}
+
namespace SERVO {
CMaster* g_pMaster = NULL;
void CALLBACK MasterTimerProc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime)
@@ -602,6 +614,57 @@
}
}
+
+ // CEqCassetteTranserStateStep
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_EMPTY, 0xb8,
+ STEP_ID_PORT1_CASSETTIE_EMPTY, 0x4d5f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_LOAD_EADY, 0xc0,
+ STEP_ID_PORT1_CASSETTIE_LOAD_READY, 0x4d5f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_LOADED, 0xc8,
+ STEP_ID_PORT1_CASSETTIE_LOADED, 0x4d5f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_INUSE, 0xd0,
+ STEP_ID_PORT1_CASSETTIE_INUSE, 0x4d5f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_UNLOAD_EADY, 0xd8,
+ STEP_ID_PORT1_CASSETTIE_UNLOAD_READY, 0x4d5f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_BLOCKED, 0xe0,
+ STEP_ID_PORT1_CASSETTIE_BLOCKED, 0x4d5f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_EMPTY,
+ STEP_ID_PORT2_CASSETTIE_EMPTY, 0x418, 0x4d7f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_LOAD_EADY,
+ STEP_ID_PORT2_CASSETTIE_LOAD_READY, 0x420, 0x4d7f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_LOADED,
+ STEP_ID_PORT2_CASSETTIE_LOADED, 0x428, 0x4d7f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_INUSE,
+ STEP_ID_PORT2_CASSETTIE_INUSE, 0x430, 0x4d7f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_UNLOAD_EADY,
+ STEP_ID_PORT2_CASSETTIE_UNLOAD_READY, 0x438, 0x4d7f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_BLOCKED,
+ STEP_ID_PORT2_CASSETTIE_BLOCKED, 0x440, 0x4d7f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_EMPTY,
+ STEP_ID_PORT3_CASSETTIE_EMPTY, 0x418, 0x4d9f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_LOAD_EADY,
+ STEP_ID_PORT3_CASSETTIE_LOAD_READY, 0x420, 0x4d9f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_LOADED,
+ STEP_ID_PORT3_CASSETTIE_INUSE, 0x428, 0x4d9f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_INUSE,
+ STEP_ID_PORT3_CASSETTIE_INUSE, 0x430, 0x4d9f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_UNLOAD_EADY,
+ STEP_ID_PORT3_CASSETTIE_UNLOAD_READY, 0x438, 0x4d9f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_BLOCKED,
+ STEP_ID_PORT3_CASSETTIE_BLOCKED, 0x440, 0x4d9f);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_EMPTY,
+ STEP_ID_PORT4_CASSETTIE_EMPTY, 0x418, 0x4dbf);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_LOAD_EADY,
+ STEP_ID_PORT4_CASSETTIE_LOAD_READY, 0x420, 0x4dbf);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_LOADED,
+ STEP_ID_PORT4_CASSETTIE_LOADED, 0x428, 0x4dbf);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_INUSE,
+ STEP_ID_PORT4_CASSETTIE_INUSE, 0x430, 0x4dbf);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_UNLOAD_EADY,
+ STEP_ID_PORT4_CASSETTIE_UNLOAD_READY, 0x438, 0x4dbf);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_BLOCKED,
+ STEP_ID_PORT4_CASSETTIE_BLOCKED, 0x440, 0x4dbf);
+
pEquipment->init();
LOGE("已添加“EFEM(ROBOT)”.");
return 0;
diff --git a/SourceCode/Bond/Servo/Common.h b/SourceCode/Bond/Servo/Common.h
index 4741d5e..84bc43e 100644
--- a/SourceCode/Bond/Servo/Common.h
+++ b/SourceCode/Bond/Servo/Common.h
@@ -104,6 +104,57 @@
#define STEP_EQ_PORT4_TRANSFER_MODE _T("EQPort4TransferMode")
#define STEP_EQ_PORT4_ENABLE _T("EQPort4Enable")
#define STEP_EQ_PORT4_TYPE_ATUO _T("EQPort4TypeAuto")
+#define STEP_EQ_P1_CASSETTE_EMPTY _T("EQPort1CassetteEmpty")
+#define STEP_EQ_P1_CASSETTE_LOAD_EADY _T("EQPort1CassetteLoadReady")
+#define STEP_EQ_P1_CASSETTE_LOADED _T("EQPort1CassetteLoaded")
+#define STEP_EQ_P1_CASSETTE_INUSE _T("EQPort1CassetteInUse")
+#define STEP_EQ_P1_CASSETTE_UNLOAD_EADY _T("EQPort1CassetteUnloadReady")
+#define STEP_EQ_P1_CASSETTE_BLOCKED _T("EQPort1CassetteBlocked")
+#define STEP_EQ_P2_CASSETTE_EMPTY _T("EQPort2CassetteEmpty")
+#define STEP_EQ_P2_CASSETTE_LOAD_EADY _T("EQPort2CassetteLoadReady")
+#define STEP_EQ_P2_CASSETTE_LOADED _T("EQPort2CassetteLoaded")
+#define STEP_EQ_P2_CASSETTE_INUSE _T("EQPort2CassetteInUse")
+#define STEP_EQ_P2_CASSETTE_UNLOAD_EADY _T("EQPort2CassetteUnloadReady")
+#define STEP_EQ_P2_CASSETTE_BLOCKED _T("EQPort2CassetteBlocked")
+#define STEP_EQ_P3_CASSETTE_EMPTY _T("EQPort3CassetteEmpty")
+#define STEP_EQ_P3_CASSETTE_LOAD_EADY _T("EQPort3CassetteLoadReady")
+#define STEP_EQ_P3_CASSETTE_LOADED _T("EQPort3CassetteLoaded")
+#define STEP_EQ_P3_CASSETTE_INUSE _T("EQPort3CassetteInUse")
+#define STEP_EQ_P3_CASSETTE_UNLOAD_EADY _T("EQPort3CassetteUnloadReady")
+#define STEP_EQ_P3_CASSETTE_BLOCKED _T("EQPort3CassetteBlocked")
+#define STEP_EQ_P4_CASSETTE_EMPTY _T("EQPort4CassetteEmpty")
+#define STEP_EQ_P4_CASSETTE_LOAD_EADY _T("EQPort4CassetteLoadReady")
+#define STEP_EQ_P4_CASSETTE_LOADED _T("EQPort4CassetteLoaded")
+#define STEP_EQ_P4_CASSETTE_INUSE _T("EQPort4CassetteInUse")
+#define STEP_EQ_P4_CASSETTE_UNLOAD_EADY _T("EQPort4CassetteUnloadReady")
+#define STEP_EQ_P4_CASSETTE_BLOCKED _T("EQPort4CassetteBlocked")
+
+
+/* Step ID */
+#define STEP_ID_PORT1_CASSETTIE_EMPTY 0x418
+#define STEP_ID_PORT1_CASSETTIE_LOAD_READY 0x420
+#define STEP_ID_PORT1_CASSETTIE_LOADED 0x428
+#define STEP_ID_PORT1_CASSETTIE_INUSE 0x430
+#define STEP_ID_PORT1_CASSETTIE_UNLOAD_READY 0x438
+#define STEP_ID_PORT1_CASSETTIE_BLOCKED 0x440
+#define STEP_ID_PORT2_CASSETTIE_EMPTY 0x419
+#define STEP_ID_PORT2_CASSETTIE_LOAD_READY 0x421
+#define STEP_ID_PORT2_CASSETTIE_LOADED 0x429
+#define STEP_ID_PORT2_CASSETTIE_INUSE 0x431
+#define STEP_ID_PORT2_CASSETTIE_UNLOAD_READY 0x439
+#define STEP_ID_PORT2_CASSETTIE_BLOCKED 0x441
+#define STEP_ID_PORT3_CASSETTIE_EMPTY 0x41a
+#define STEP_ID_PORT3_CASSETTIE_LOAD_READY 0x422
+#define STEP_ID_PORT3_CASSETTIE_LOADED 0x42a
+#define STEP_ID_PORT3_CASSETTIE_INUSE 0x432
+#define STEP_ID_PORT3_CASSETTIE_UNLOAD_READY 0x43a
+#define STEP_ID_PORT3_CASSETTIE_BLOCKED 0x442
+#define STEP_ID_PORT4_CASSETTIE_EMPTY 0x41b
+#define STEP_ID_PORT4_CASSETTIE_LOAD_READY 0x423
+#define STEP_ID_PORT4_CASSETTIE_LOADED 0x42b
+#define STEP_ID_PORT4_CASSETTIE_INUSE 0x433
+#define STEP_ID_PORT4_CASSETTIE_UNLOAD_READY 0x43b
+#define STEP_ID_PORT4_CASSETTIE_BLOCKED 0x443
/* base alarm */
@@ -128,4 +179,43 @@
#define FLOW_TEST 0x1000
#define FLOW_SIGNAL 0x1001
#define FLOW_DATA 0x1002
-#define FLOW_MOVE_MATERIAL 0x1003
\ No newline at end of file
+#define FLOW_MOVE_MATERIAL 0x1003
+
+
+/* Port Status */
+#define PORT_LOAD_READY 1
+#define PORT_LOADED 2
+#define PORT_INUSE 3
+#define PORT_LOAD_COMPLETE PORT_INUSE
+#define PORT_UNLOAD_READY 4
+#define PORT_UNLOAD_REQUEST PORT_RNLOAD_READY
+#define PORT_EMPTY 5
+#define PORT_UNLOAD_COMPLETE PORT_EMPTY
+#define PORT_BLOCKED 6
+
+
+/* Loading Cassette Type */
+#define PORT_LOADING_CASSETTE_ACTUAL 1
+#define PORT_LOADING_CASSETTE_EMPTY 2
+
+
+/* Q-Time flag */
+#define Q_TIME_NORMAL 1
+#define Q_TIME_OVER 2
+
+
+/* m_nCassetteMappingState */
+#define CASSETTE_MAPPING_USE 1
+#define CASSETTE_MAPPING_NOT_USE 2
+
+
+/* Cassette Status */
+#define CASSETTE_NO_EXIST 1
+#define CASSETTE_WAITING_DATA 2
+#define CASSETTE_WAITING_START 3
+#define CASSETTE_WAITING_PROCCESSING 4
+#define CASSETTE_IN_PROCCESSING 5
+#define CASSETTE_PROCCESS_PAUSED 6
+#define CASSETTE_PROCCESS_COMPLETED 7
+
+
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index 2260705..36a12e3 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -204,6 +204,7 @@
<ClInclude Include="CAttributeVector.h" />
<ClInclude Include="CBakeCooling.h" />
<ClInclude Include="CBonder.h" />
+ <ClInclude Include="CEqCassetteTransferStateStep.h" />
<ClInclude Include="CCLinkPerformance\CCLinkIEControl.h" />
<ClInclude Include="CCLinkPerformance\PerformanceMelsec.h" />
<ClInclude Include="CEqAlarmStep.h" />
@@ -279,6 +280,7 @@
<ClCompile Include="CAttributeVector.cpp" />
<ClCompile Include="CBakeCooling.cpp" />
<ClCompile Include="CBonder.cpp" />
+ <ClCompile Include="CEqCassetteTransferStateStep.cpp" />
<ClCompile Include="CCLinkPerformance\CCLinkIEControl.cpp" />
<ClCompile Include="CCLinkPerformance\PerformanceMelsec.cpp" />
<ClCompile Include="CEqAlarmStep.cpp" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index 74279a7..00faaa0 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -81,6 +81,7 @@
<ClCompile Include="CHMPropertyDlg.cpp" />
<ClCompile Include="CEqPortChangeStep.cpp" />
<ClCompile Include="CEqReadIntStep.cpp" />
+ <ClCompile Include="CEqCassetteTransferStateStep.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="AlarmManager.h" />
@@ -160,6 +161,7 @@
<ClInclude Include="CHMPropertyDlg.h" />
<ClInclude Include="CEqPortChangeStep.h" />
<ClInclude Include="CEqReadIntStep.h" />
+ <ClInclude Include="CEqCassetteTransferStateStep.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Servo.rc" />
--
Gitblit v1.9.3