From 1a181b77b4eb7670e668506c10d9de97ca0c20c6 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 13 六月 2025 13:58:44 +0800
Subject: [PATCH] 1.由于EFEM不支持Transfer(直接搬运),将搬运动作拆分为Get和Put
---
SourceCode/Bond/Servo/CMaster.cpp | 36 ++++++++++++++++++++++++++----------
1 files changed, 26 insertions(+), 10 deletions(-)
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 8d6bbef..6f60f8c 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -551,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) {
@@ -677,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();
@@ -710,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();
--
Gitblit v1.9.3