From d801f8999ad7cdbee7a5652b4bb512c47b9a2668 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 04 六月 2025 18:05:01 +0800
Subject: [PATCH] 1.搬送条件检测,增加一个条件,必须是已加工处理完成的Glass才符合搬出条件。 2.根据1,为CGlass增加相应工位的处理标志位,及标志位在后processDataReport修改为TRUE,以符合搬出条件;
---
SourceCode/Bond/Servo/CMaster.cpp | 62 +++++++++++++++++++++++++++----
1 files changed, 54 insertions(+), 8 deletions(-)
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 2783329..4bee7eb 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -294,6 +294,7 @@
CAligner* pAligner = (CAligner*)getEquipment(EQ_ID_ALIGNER);
CBonder* pBonder1 = (CBonder*)getEquipment(EQ_ID_Bonder1);
CBonder* pBonder2 = (CBonder*)getEquipment(EQ_ID_Bonder2);
+ CBakeCooling* pBakeCooling = (CBakeCooling*)getEquipment(EQ_ID_BAKE_COOLING);
ASSERT(pLoadPort1);
ASSERT(pLoadPort2);
@@ -302,6 +303,7 @@
ASSERT(pAligner);
ASSERT(pBonder1);
ASSERT(pBonder2);
+ ASSERT(pBakeCooling);
while (1) {
// 待退出信号或时间到
@@ -365,6 +367,28 @@
}
+ // Bonder -> BakeCooling
+ m_pActiveRobotTask = createTransferTask_bonder_to_bakecooling(pBonder1, pBakeCooling, primaryType, secondaryType);
+ if (m_pActiveRobotTask != nullptr) {
+ std::string strDescription = m_pActiveRobotTask->getDescription();
+ unlock();
+ if (m_listener.onRobotTaskEvent != nullptr) {
+ m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
+ }
+ LOGI("创建新任务<%s>...", strDescription.c_str());
+ continue;
+ }
+
+ m_pActiveRobotTask = createTransferTask_bonder_to_bakecooling(pBonder2, pBakeCooling, primaryType, secondaryType);
+ if (m_pActiveRobotTask != nullptr) {
+ std::string strDescription = m_pActiveRobotTask->getDescription();
+ unlock();
+ if (m_listener.onRobotTaskEvent != nullptr) {
+ m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
+ }
+ LOGI("创建新任务<%s>...", strDescription.c_str());
+ continue;
+ }
// Aligner -> Bonder
m_pActiveRobotTask = createTransferTask(pAligner, pBonder1, primaryType, secondaryType);
@@ -469,9 +493,6 @@
LOGI("创建新任务<%s>...", strDescription.c_str());
continue;
}
-
-
- // Bonder -> BakeCooling
// BakeCooling ->Measurement
@@ -647,12 +668,11 @@
lock();
- delete m_pActiveRobotTask;
- m_pActiveRobotTask = nullptr;
-
if (m_listener.onRobotTaskEvent != nullptr) {
m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
}
+ delete m_pActiveRobotTask;
+ m_pActiveRobotTask = nullptr;
}
unlock();
}
@@ -1074,10 +1094,36 @@
CRobotTask* pTask = nullptr;
CSlot* pSrcSlot, * pTarSlot;
pTarSlot = pTarEq->getAvailableSlotForGlass(primaryType);
- pSrcSlot = pSrcEq->getNonEmptySlot(primaryType);
+ pSrcSlot = pSrcEq->getProcessedSlot(primaryType);
if (pSrcSlot == nullptr || nullptr == pTarSlot) {
pTarSlot = pTarEq->getAvailableSlotForGlass(secondaryType);
- pSrcSlot = pSrcEq->getNonEmptySlot(secondaryType);
+ pSrcSlot = pSrcEq->getProcessedSlot(secondaryType);
+ }
+
+
+ if (pSrcSlot != nullptr && nullptr != pTarSlot) {
+ pTask = new CRobotTask();
+ pTask->setContext(pSrcSlot->getContext());
+ pTask->setRobotTransferParam(++taskSeqNo, 1, pSrcSlot->getPosition(),
+ pTarSlot->getPosition(), pSrcSlot->getNo(), pTarSlot->getNo());
+ }
+
+
+ return pTask;
+ }
+
+ CRobotTask* CMaster::createTransferTask_bonder_to_bakecooling(CEquipment* pSrcEq, CEquipment* pTarEq,
+ MaterialsType primaryType/* = MaterialsType::G1*/, MaterialsType secondaryType/* = MaterialsType::G2*/)
+ {
+ std::vector<int> slots = {1, 2};
+
+ CRobotTask* pTask = nullptr;
+ CSlot* pSrcSlot, * pTarSlot;
+ pTarSlot = pTarEq->getAvailableSlotForGlass2(primaryType, slots);
+ pSrcSlot = pSrcEq->getProcessedSlot(primaryType);
+ if (pSrcSlot == nullptr || nullptr == pTarSlot) {
+ pTarSlot = pTarEq->getAvailableSlotForGlass(secondaryType);
+ pSrcSlot = pSrcEq->getProcessedSlot(secondaryType);
}
--
Gitblit v1.9.3