From f6e82f09bb6fb4727da61366c195cb99f3474e49 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 13 六月 2025 16:30:12 +0800
Subject: [PATCH] 1.将Port的配置数据从.dat文件驳离到ini文件中。
---
SourceCode/Bond/Servo/CMaster.cpp | 167 +++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 129 insertions(+), 38 deletions(-)
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 37fefe6..21d96bc 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -284,7 +284,6 @@
// Bonder1和Bonder2需要的G2就过不来了
// 最基本的实现,可以G2和G2轮流搬送,但最好根据Bonder的需求来决定
MaterialsType primaryType, secondaryType;
- int armNo = 1; // 默认使用手臂2
// 各种机器
@@ -387,7 +386,7 @@
if (pEqLoadPort[s]->isEnable()
&& pEqLoadPort[s]->getPortType() == PortType::Unloading
&& pEqLoadPort[s]->getPortMode() == PortMode::ReadyToUnload) {
- m_pActiveRobotTask = createTransferTask(pMeasurement, pEqLoadPort[s], primaryType, secondaryType, armNo);
+ m_pActiveRobotTask = createTransferTask(pMeasurement, pEqLoadPort[s], primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
goto PORT_PUT;
}
@@ -396,7 +395,7 @@
PORT_PUT:
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -410,7 +409,7 @@
// BakeCooling ->Measurement
m_pActiveRobotTask = createTransferTask_bakecooling_to_measurement(pBakeCooling, pMeasurement);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -425,7 +424,7 @@
// Bake -> Cooling
m_pActiveRobotTask = createTransferTask_bake_to_cooling(pBakeCooling);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -439,7 +438,7 @@
// Bonder -> BakeCooling
m_pActiveRobotTask = createTransferTask_bonder_to_bakecooling(pBonder1, pBakeCooling);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -451,7 +450,7 @@
m_pActiveRobotTask = createTransferTask_bonder_to_bakecooling(pBonder2, pBakeCooling);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -463,9 +462,9 @@
// Fliper(G2) -> Bonder
// VacuumBake(G1) -> Bonder
- m_pActiveRobotTask = createTransferTask(pFliper, pBonder1, primaryType, secondaryType, armNo);
+ m_pActiveRobotTask = createTransferTask(pFliper, pBonder1, primaryType, secondaryType, 2);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -475,9 +474,9 @@
continue;
}
- m_pActiveRobotTask = createTransferTask(pFliper, pBonder2, primaryType, secondaryType, armNo);
+ m_pActiveRobotTask = createTransferTask(pFliper, pBonder2, primaryType, secondaryType, 2);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -487,9 +486,9 @@
continue;
}
- m_pActiveRobotTask = createTransferTask(pVacuumBake, pBonder1, primaryType, secondaryType, armNo);
+ m_pActiveRobotTask = createTransferTask(pVacuumBake, pBonder1, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -499,9 +498,9 @@
continue;
}
- m_pActiveRobotTask = createTransferTask(pVacuumBake, pBonder2, primaryType, secondaryType, armNo);
+ m_pActiveRobotTask = createTransferTask(pVacuumBake, pBonder2, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -513,9 +512,9 @@
// Aligner -> Fliper(G2)
// Aligner -> VacuumBake(G1)
- m_pActiveRobotTask = createTransferTask(pAligner, pFliper, primaryType, secondaryType, armNo);
+ m_pActiveRobotTask = createTransferTask(pAligner, pFliper, primaryType, secondaryType, 2);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -525,9 +524,9 @@
continue;
}
- m_pActiveRobotTask = createTransferTask(pAligner, pVacuumBake, primaryType, secondaryType, armNo);
+ m_pActiveRobotTask = createTransferTask(pAligner, pVacuumBake, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -543,7 +542,7 @@
if (pEqLoadPort[s]->isEnable()
&& pEqLoadPort[s]->getPortType() == PortType::Loading
&& pEqLoadPort[s]->getPortMode() == PortMode::ReadyToLoad) {
- m_pActiveRobotTask = createTransferTask(pEqLoadPort[s], pAligner, primaryType, secondaryType, armNo);
+ m_pActiveRobotTask = createTransferTask(pEqLoadPort[s], pAligner, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
goto PORT_GET;
}
@@ -552,7 +551,7 @@
PORT_GET:
if (m_pActiveRobotTask != nullptr) {
- m_pActiveRobotTask->run();
+ m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -678,17 +677,24 @@
BOOL bOk = FALSE;
lock();
if (m_pActiveRobotTask != nullptr) {
- if (m_pActiveRobotTask->getTarPosition() == p->getID()) {
+ // 是否已经进入手臂(即取片完成),进入下一步,放片
+ if (m_pActiveRobotTask->isPicking() &&
+ ((m_pActiveRobotTask->getArmNo() == 1 && p->getID() == EQ_ID_ARM_TRAY1)
+ || (m_pActiveRobotTask->getArmNo() == 2 && p->getID() == EQ_ID_ARM_TRAY2))
+ ) {
+ slot = 1;
+ bOk = TRUE;
+ }
+
+ // 是否放片完成
+ else if (m_pActiveRobotTask->isPlacing() &&
+ m_pActiveRobotTask->getTarPosition() == p->getID()) {
CGlass* pGlass = p->getGlassFromSlot(m_pActiveRobotTask->getTarSlot());
if (pGlass == nullptr) {
bOk = TRUE;
slot = m_pActiveRobotTask->getTarSlot();
LOGI("<CMaster>onPreFethedOutJob, 已校验数据一致性.");
}
- }
- else if (p->getID() == EQ_ID_ARM_TRAY1 || p->getID() == EQ_ID_ARM_TRAY2) {
- slot = 1;
- bOk = TRUE;
}
}
unlock();
@@ -711,21 +717,30 @@
if (code == EDCC_FETCHOUT_JOB) {
lock();
if (m_pActiveRobotTask != nullptr && m_pActiveRobotTask->getSrcPosition() == p->getID()) {
- m_pActiveRobotTask->fetchOut();
LOGI("开始取片...");
}
unlock();
}
else if (code == EDCC_STORED_JOB) {
lock();
- if (m_pActiveRobotTask != nullptr && m_pActiveRobotTask->getTarPosition() == p->getID()) {
+ if (m_pActiveRobotTask != nullptr
+ && m_pActiveRobotTask->isPicking()
+ && ((m_pActiveRobotTask->getArmNo() == 1 && p->getID() == EQ_ID_ARM_TRAY1)
+ || (m_pActiveRobotTask->getArmNo() == 2 && p->getID() == EQ_ID_ARM_TRAY2))
+ ) {
+ LOGI("取片完成.");
+ m_pActiveRobotTask->fetchOut();
+ m_pActiveRobotTask->place();
+ }
+
+ else if (m_pActiveRobotTask != nullptr
+ && m_pActiveRobotTask->isPlacing()
+ && m_pActiveRobotTask->getTarPosition() == p->getID()) {
m_pActiveRobotTask->stored();
m_pActiveRobotTask->completed();
LOGI("放片完成...");
-
// 完成此条搬送任务,但要把数据和消息上抛应用层
unlock();
-
lock();
@@ -1162,11 +1177,14 @@
if (pSrcSlot != nullptr && nullptr != pTarSlot) {
+ int srcPos, srcSlot, tarPos, tarSlot;
+ transformPosAndSlot(pSrcSlot->getPosition(), pSrcSlot->getNo(), srcPos, srcSlot);
+ transformPosAndSlot(pTarSlot->getPosition(), pTarSlot->getNo(), tarPos, tarSlot);
pTask = new CRobotTask();
pTask->setContext(pSrcSlot->getContext());
pTask->setEFEM((CEFEM*)getEquipment(EQ_ID_EFEM));
- pTask->setRobotTransferParam(++taskSeqNo, armNo, pSrcSlot->getPosition(),
- pTarSlot->getPosition(), pSrcSlot->getNo(), pTarSlot->getNo());
+ taskSeqNo = pTask->setRobotTransferParam(taskSeqNo, armNo, srcPos,
+ tarPos, srcSlot, tarSlot);
}
@@ -1183,11 +1201,14 @@
pSrcSlot = pSrcEq->getProcessedSlot(MaterialsType::G1);
if (pSrcSlot != nullptr && nullptr != pTarSlot) {
+ int srcPos, srcSlot, tarPos, tarSlot;
+ transformPosAndSlot(pSrcSlot->getPosition(), pSrcSlot->getNo(), srcPos, srcSlot);
+ transformPosAndSlot(pTarSlot->getPosition(), pTarSlot->getNo(), tarPos, tarSlot);
pTask = new CRobotTask();
pTask->setContext(pSrcSlot->getContext());
pTask->setEFEM((CEFEM*)getEquipment(EQ_ID_EFEM));
- pTask->setRobotTransferParam(++taskSeqNo, 1, pSrcSlot->getPosition(),
- pTarSlot->getPosition(), pSrcSlot->getNo(), pTarSlot->getNo());
+ taskSeqNo = pTask->setRobotTransferParam(taskSeqNo, 1, srcPos,
+ tarPos, srcSlot, tarSlot);
}
@@ -1205,11 +1226,14 @@
pSrcSlot = pSrcEq->getProcessedSlot2(MaterialsType::G1, slotsSrc);
if (pSrcSlot != nullptr && nullptr != pTarSlot) {
+ int srcPos, srcSlot, tarPos, tarSlot;
+ transformPosAndSlot(pSrcSlot->getPosition(), pSrcSlot->getNo(), srcPos, srcSlot);
+ transformPosAndSlot(pTarSlot->getPosition(), pTarSlot->getNo(), tarPos, tarSlot);
pTask = new CRobotTask();
pTask->setContext(pSrcSlot->getContext());
pTask->setEFEM((CEFEM*)getEquipment(EQ_ID_EFEM));
- pTask->setRobotTransferParam(++taskSeqNo, 1, pSrcSlot->getPosition(),
- pTarSlot->getPosition(), pSrcSlot->getNo(), pTarSlot->getNo());
+ taskSeqNo = pTask->setRobotTransferParam(taskSeqNo, 1, srcPos,
+ tarPos, srcSlot, tarSlot);
}
@@ -1226,15 +1250,68 @@
pSrcSlot = pSrcEq->getProcessedSlot2(MaterialsType::G1, slots);
if (pSrcSlot != nullptr && nullptr != pTarSlot) {
+ int srcPos, srcSlot, tarPos, tarSlot;
+ transformPosAndSlot(pSrcSlot->getPosition(), pSrcSlot->getNo(), srcPos, srcSlot);
+ transformPosAndSlot(pTarSlot->getPosition(), pTarSlot->getNo(), tarPos, tarSlot);
pTask = new CRobotTask();
pTask->setContext(pSrcSlot->getContext());
pTask->setEFEM((CEFEM*)getEquipment(EQ_ID_EFEM));
- pTask->setRobotTransferParam(++taskSeqNo, 1, pSrcSlot->getPosition(),
- pTarSlot->getPosition(), pSrcSlot->getNo(), pTarSlot->getNo());
+ taskSeqNo = pTask->setRobotTransferParam(taskSeqNo, 1, srcPos,
+ tarPos, srcSlot, tarSlot);
}
return pTask;
+ }
+
+ void CMaster::transformPosAndSlot(int srcPos, int srcSlot, int& tarPos, int& tarSlot)
+ {
+ switch (srcPos)
+ {
+ case EQ_ID_LOADPORT1:
+ case EQ_ID_LOADPORT2:
+ case EQ_ID_LOADPORT3:
+ case EQ_ID_LOADPORT4:
+ case EQ_ID_ARM_TRAY1:
+ case EQ_ID_ARM_TRAY2:
+ case EQ_ID_ALIGNER:
+ case EQ_ID_FLIPER:
+ tarPos = srcPos;
+ tarSlot = 1;
+ break;
+ case EQ_ID_Bonder1:
+ if (1 <= srcSlot && srcSlot <= 2) {
+ tarPos = 9 + srcSlot;
+ tarSlot = 1;
+ }
+ break;
+ case EQ_ID_Bonder2:
+ if (1 <= srcSlot && srcSlot <= 2) {
+ tarPos = 11 + srcSlot;
+ tarSlot = 1;
+ }
+ break;
+ case EQ_ID_VACUUMBAKE:
+ if (1 <= srcSlot && srcSlot <= 2) {
+ tarPos = 13 + srcSlot;
+ tarSlot = 1;
+ }
+ break;
+ case EQ_ID_BAKE_COOLING:
+ if (1 <= srcSlot && srcSlot <= 4) {
+ tarPos = 15 + srcSlot;
+ tarSlot = 1;
+ }
+ break;
+ case EQ_ID_MEASUREMENT:
+ tarPos = 19;
+ tarSlot = 1;
+ break;
+ default:
+ tarPos = srcPos;
+ tarSlot = srcSlot;
+ break;
+ }
}
int CMaster::abortCurrentTask()
@@ -1261,4 +1338,18 @@
return 0;
}
+
+ void CMaster::setPortType(unsigned int index, BOOL enable, int type, int mode,
+ int cassetteType, int transferMode, BOOL autoChangeEnable)
+ {
+ ASSERT(index < 4);
+ int eqid[] = { EQ_ID_LOADPORT1, EQ_ID_LOADPORT2, EQ_ID_LOADPORT3, EQ_ID_LOADPORT4};
+ CLoadPort* pPort = (CLoadPort*)getEquipment(eqid[index]);
+ pPort->localEanblePort(enable);
+ pPort->localSetPortType((SERVO::PortType)type);
+ pPort->localSetPortMode((SERVO::PortMode)mode);
+ pPort->localSetCessetteType((SERVO::CassetteType)cassetteType);
+ pPort->localSetTransferMode((SERVO::TransferMode)transferMode);
+ pPort->localAutoChangeEnable(autoChangeEnable);
+ }
}
--
Gitblit v1.9.3