From b71bd05e422437b998bf367c5a28bb8455400c78 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 09 六月 2025 15:59:10 +0800
Subject: [PATCH] 1.LoadPort数据(PortType, PortMode等)的存储和还原; 2.Measurement -> LoadPort物流调度逻辑实现;
---
SourceCode/Bond/Servo/CMaster.cpp | 51 ++++++++++++++++++++++++++++++++++++---------------
1 files changed, 36 insertions(+), 15 deletions(-)
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 0a3b906..7b24735 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -375,6 +375,37 @@
}
+ // Measurement -> LoadPort
+ CLoadPort* pEqLoadPort[] = { pLoadPort1, pLoadPort2, pLoadPort3, pLoadPort4 };
+ CEquipment* pEqTar[] = { pVacuumBack, pFliper };
+ if (primaryType == MaterialsType::G2) {
+ pEqTar[0] = pFliper;
+ pEqTar[1] = pVacuumBack;
+ }
+ for (int s = 0; s < 4; s++) {
+ if (pEqLoadPort[s]->isEnable()
+ && pEqLoadPort[s]->getPortType() == PortType::Unloading
+ && pEqLoadPort[s]->getPortMode() == PortMode::ReadyToUnload) {
+ m_pActiveRobotTask = createTransferTask(pMeasurement, pEqLoadPort[s], primaryType, secondaryType);
+ if (m_pActiveRobotTask != nullptr) {
+ goto PORT_PUT;
+ }
+ }
+ }
+
+ PORT_PUT:
+ if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
+ std::string strDescription = m_pActiveRobotTask->getDescription();
+ unlock();
+ if (m_listener.onRobotTaskEvent != nullptr) {
+ m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
+ }
+ LOGI("创建新任务<%s>...", strDescription.c_str());
+ continue;
+ }
+
+
// BakeCooling ->Measurement
m_pActiveRobotTask = createTransferTask_bakecooling_to_measurement(pBakeCooling, pMeasurement);
if (m_pActiveRobotTask != nullptr) {
@@ -484,18 +515,12 @@
// LoadPort -> Fliper(G2)
// LoadPort -> VacuumBake(G1)
- CLoadPort* pEqSrc[] = { pLoadPort1, pLoadPort2, pLoadPort3, pLoadPort4 };
- CEquipment* pEqTar[] = { pVacuumBack, pFliper };
- if (primaryType == MaterialsType::G2) {
- pEqTar[0] = pFliper;
- pEqTar[1] = pVacuumBack;
- }
for (int s = 0; s < 4; s++) {
for (int t = 0; t < 2; t++) {
- if (pEqSrc[s]->isEnable()
- && pEqSrc[s]->getPortType() == PortType::Loading
- && pEqSrc[s]->getPortMode() == PortMode::ReadyToLoad) {
- m_pActiveRobotTask = createTransferTask(pEqSrc[s], pEqTar[t], primaryType, secondaryType);
+ if (pEqLoadPort[s]->isEnable()
+ && pEqLoadPort[s]->getPortType() == PortType::Loading
+ && pEqLoadPort[s]->getPortMode() == PortMode::ReadyToLoad) {
+ m_pActiveRobotTask = createTransferTask(pEqLoadPort[s], pEqTar[t], primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
goto PORT_GET;
}
@@ -514,11 +539,6 @@
LOGI("创建新任务<%s>...", strDescription.c_str());
continue;
}
-
-
- // Measurement -> LoadPort
-
-
unlock();
@@ -1187,6 +1207,7 @@
if (pSrcSlot != nullptr && nullptr != pTarSlot) {
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());
}
--
Gitblit v1.9.3