From ed1e6f12a1568e6a581211ac39daaa2746c9ed24 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 20 五月 2025 08:44:05 +0800
Subject: [PATCH] 1.IndexerOprationMode
---
SourceCode/Bond/Servo/CVacuumBake.cpp | 5 ++
Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.6.xlsx | 0
SourceCode/Bond/Servo/CEFEM.h | 1
SourceCode/Bond/Servo/CMeasurement.h | 2 +
SourceCode/Bond/Servo/CVacuumBake.h | 2 +
SourceCode/Bond/Servo/CBakeCooling.cpp | 5 ++
SourceCode/Bond/Servo/CMeasurement.cpp | 5 ++
SourceCode/Bond/Servo/CBakeCooling.h | 1
SourceCode/Bond/Servo/CEquipment.cpp | 33 ++++++++++++++++
SourceCode/Bond/Servo/CEFEM.cpp | 17 ++++++++
SourceCode/Bond/Servo/CEquipment.h | 16 ++++++++
SourceCode/Bond/Servo/CBonder.h | 1
SourceCode/Bond/Servo/CBonder.cpp | 5 ++
SourceCode/Bond/Servo/Common.h | 5 ++
14 files changed, 97 insertions(+), 1 deletions(-)
diff --git a/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.6.xlsx b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.6.xlsx
new file mode 100644
index 0000000..85b872f
--- /dev/null
+++ b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.6.xlsx
Binary files differ
diff --git a/SourceCode/Bond/Servo/CBakeCooling.cpp b/SourceCode/Bond/Servo/CBakeCooling.cpp
index 5e374ab..4b7147a 100644
--- a/SourceCode/Bond/Servo/CBakeCooling.cpp
+++ b/SourceCode/Bond/Servo/CBakeCooling.cpp
@@ -68,4 +68,9 @@
return (m_glassList.size() < 4);
}
+
+ int CBakeCooling::getIndexerOperationModeBaseValue()
+ {
+ return 25000;
+ }
}
diff --git a/SourceCode/Bond/Servo/CBakeCooling.h b/SourceCode/Bond/Servo/CBakeCooling.h
index 6d85350..bea7a17 100644
--- a/SourceCode/Bond/Servo/CBakeCooling.h
+++ b/SourceCode/Bond/Servo/CBakeCooling.h
@@ -20,6 +20,7 @@
virtual void getAttributeVector(CAttributeVector& attrubutes);
virtual int recvIntent(CPin* pPin, CIntent* pIntent);
virtual BOOL glassWillArrive(CGlass* pGlass);
+ virtual int getIndexerOperationModeBaseValue();
};
}
diff --git a/SourceCode/Bond/Servo/CBonder.cpp b/SourceCode/Bond/Servo/CBonder.cpp
index 655c99a..f485a94 100644
--- a/SourceCode/Bond/Servo/CBonder.cpp
+++ b/SourceCode/Bond/Servo/CBonder.cpp
@@ -448,4 +448,9 @@
return 0;
}
+
+ int CBonder::getIndexerOperationModeBaseValue()
+ {
+ return m_nIndex == 0 ? 15000 : 20000;
+ }
}
diff --git a/SourceCode/Bond/Servo/CBonder.h b/SourceCode/Bond/Servo/CBonder.h
index e05dce4..f24e05b 100644
--- a/SourceCode/Bond/Servo/CBonder.h
+++ b/SourceCode/Bond/Servo/CBonder.h
@@ -23,6 +23,7 @@
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);
diff --git a/SourceCode/Bond/Servo/CEFEM.cpp b/SourceCode/Bond/Servo/CEFEM.cpp
index 3a277f3..1b792f1 100644
--- a/SourceCode/Bond/Servo/CEFEM.cpp
+++ b/SourceCode/Bond/Servo/CEFEM.cpp
@@ -454,6 +454,18 @@
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)
@@ -603,4 +615,9 @@
return -1;
}
+
+ int CEFEM::getIndexerOperationModeBaseValue()
+ {
+ return 10000;
+ }
}
diff --git a/SourceCode/Bond/Servo/CEFEM.h b/SourceCode/Bond/Servo/CEFEM.h
index 4a53122..fc1c739 100644
--- a/SourceCode/Bond/Servo/CEFEM.h
+++ b/SourceCode/Bond/Servo/CEFEM.h
@@ -31,6 +31,7 @@
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);
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index 1d3f312..4bc9ffc 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -1090,6 +1090,34 @@
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);
@@ -1364,6 +1392,11 @@
return 0;
}
+ int CEquipment::getIndexerOperationModeBaseValue()
+ {
+ return 0;
+ }
+
int CEquipment::addJobDataB(CJobDataB* pJobDataB)
{
// 添加之前先删除旧的,以免数据重复
diff --git a/SourceCode/Bond/Servo/CEquipment.h b/SourceCode/Bond/Servo/CEquipment.h
index 4e8f6db..90b7a12 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -73,6 +73,18 @@
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,
@@ -158,6 +170,7 @@
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();
@@ -178,6 +191,9 @@
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
diff --git a/SourceCode/Bond/Servo/CMeasurement.cpp b/SourceCode/Bond/Servo/CMeasurement.cpp
index 34ff4e6..5664c32 100644
--- a/SourceCode/Bond/Servo/CMeasurement.cpp
+++ b/SourceCode/Bond/Servo/CMeasurement.cpp
@@ -64,4 +64,9 @@
return m_glassList.empty();
}
+
+ int CMeasurement::getIndexerOperationModeBaseValue()
+ {
+ return 35000;
+ }
}
diff --git a/SourceCode/Bond/Servo/CMeasurement.h b/SourceCode/Bond/Servo/CMeasurement.h
index 28812a1..b6d87bb 100644
--- a/SourceCode/Bond/Servo/CMeasurement.h
+++ b/SourceCode/Bond/Servo/CMeasurement.h
@@ -20,6 +20,8 @@
virtual void getAttributeVector(CAttributeVector& attrubutes);
virtual int recvIntent(CPin* pPin, CIntent* pIntent);
virtual BOOL glassWillArrive(CGlass* pGlass);
+ virtual int getIndexerOperationModeBaseValue();
+
};
}
diff --git a/SourceCode/Bond/Servo/CVacuumBake.cpp b/SourceCode/Bond/Servo/CVacuumBake.cpp
index 71b7143..790e3e3 100644
--- a/SourceCode/Bond/Servo/CVacuumBake.cpp
+++ b/SourceCode/Bond/Servo/CVacuumBake.cpp
@@ -92,4 +92,9 @@
return TRUE;
}
+
+ int CVacuumBake::getIndexerOperationModeBaseValue()
+ {
+ return 30000;
+ }
}
diff --git a/SourceCode/Bond/Servo/CVacuumBake.h b/SourceCode/Bond/Servo/CVacuumBake.h
index dc0c59f..ef0e1ea 100644
--- a/SourceCode/Bond/Servo/CVacuumBake.h
+++ b/SourceCode/Bond/Servo/CVacuumBake.h
@@ -21,6 +21,8 @@
virtual int recvIntent(CPin* pPin, CIntent* pIntent);
virtual BOOL glassWillArrive(CGlass* pGlass);
virtual BOOL onPreStoredJob(int port, CJobDataB* pJobDataB);
+ virtual int getIndexerOperationModeBaseValue();
+
};
}
diff --git a/SourceCode/Bond/Servo/Common.h b/SourceCode/Bond/Servo/Common.h
index cf7464a..c315229 100644
--- a/SourceCode/Bond/Servo/Common.h
+++ b/SourceCode/Bond/Servo/Common.h
@@ -209,6 +209,7 @@
#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")
@@ -282,7 +283,8 @@
#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
@@ -334,6 +336,7 @@
#define STEP_ID_ROBOT_CMD_REPLY 0x6b0
+
/* base alarm */
#define BASE_ALARM_EFEM 10000
#define BASE_ALARM_BONDER1 20000
--
Gitblit v1.9.3