From fac102938562e13dd4e4e4914d0fde9b1cd05d8b Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 09 六月 2025 09:47:37 +0800
Subject: [PATCH] 1.CMaster调度线程中添加任务运行发送到EFEM;
---
SourceCode/Bond/Servo/CRobotTask.h | 4 ++++
SourceCode/Bond/Servo/CRobotTask.cpp | 31 +++++++++++++++++++++++++++++++
SourceCode/Bond/Servo/CMaster.cpp | 17 +++++++++++++++++
3 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index e65347c..6a7437a 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -287,6 +287,7 @@
// 各种机器
+ CEFEM* pEFEM = (CEFEM*)getEquipment(EQ_ID_EFEM);
CLoadPort* pLoadPort1 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT1);
CLoadPort* pLoadPort2 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT2);
CFliper* pFliper = (CFliper*)getEquipment(EQ_ID_FLIPER);
@@ -297,6 +298,7 @@
CBakeCooling* pBakeCooling = (CBakeCooling*)getEquipment(EQ_ID_BAKE_COOLING);
CMeasurement* pMeasurement = (CMeasurement*)getEquipment(EQ_ID_MEASUREMENT);
+ ASSERT(pEFEM);
ASSERT(pLoadPort1);
ASSERT(pLoadPort2);
ASSERT(pFliper);
@@ -372,6 +374,7 @@
// BakeCooling ->Measurement
m_pActiveRobotTask = createTransferTask_bakecooling_to_measurement(pBakeCooling, pMeasurement);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -386,6 +389,7 @@
// Bake -> Cooling
m_pActiveRobotTask = createTransferTask_bake_to_cooling(pBakeCooling);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -399,6 +403,7 @@
// Bonder -> BakeCooling
m_pActiveRobotTask = createTransferTask_bonder_to_bakecooling(pBonder1, pBakeCooling);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -410,6 +415,7 @@
m_pActiveRobotTask = createTransferTask_bonder_to_bakecooling(pBonder2, pBakeCooling);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -422,6 +428,7 @@
// Aligner -> Bonder
m_pActiveRobotTask = createTransferTask(pAligner, pBonder1, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -433,6 +440,7 @@
m_pActiveRobotTask = createTransferTask(pAligner, pBonder2, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -447,6 +455,7 @@
// VacuumBake(G1) -> Aligner
m_pActiveRobotTask = createTransferTask(pFliper, pAligner, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -458,6 +467,7 @@
m_pActiveRobotTask = createTransferTask(pVacuumBack, pAligner, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -478,6 +488,7 @@
}
m_pActiveRobotTask = createTransferTask(pLoadPort1, pEqTar1, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -489,6 +500,7 @@
m_pActiveRobotTask = createTransferTask(pLoadPort2, pEqTar1, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -503,6 +515,7 @@
// LoadPort -> VacuumBake(G1)
m_pActiveRobotTask = createTransferTask(pLoadPort1, pEqTar2, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -514,6 +527,7 @@
m_pActiveRobotTask = createTransferTask(pLoadPort2, pEqTar2, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->run();
std::string strDescription = m_pActiveRobotTask->getDescription();
unlock();
if (m_listener.onRobotTaskEvent != nullptr) {
@@ -1131,6 +1145,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());
}
@@ -1151,6 +1166,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());
}
@@ -1172,6 +1188,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());
}
diff --git a/SourceCode/Bond/Servo/CRobotTask.cpp b/SourceCode/Bond/Servo/CRobotTask.cpp
index a33cc40..dc1b82e 100644
--- a/SourceCode/Bond/Servo/CRobotTask.cpp
+++ b/SourceCode/Bond/Servo/CRobotTask.cpp
@@ -1,6 +1,7 @@
#include "stdafx.h"
#include "CRobotTask.h"
#include "ToolUnits.h"
+#include "Log.h"
namespace SERVO {
@@ -13,6 +14,7 @@
m_timeStored = 0;
m_timeFinish = 0;
m_pContext = nullptr;
+ m_pEFEM = nullptr;
}
CRobotTask::~CRobotTask()
@@ -78,6 +80,11 @@
return m_pContext;
}
+ void CRobotTask::setEFEM(CEFEM* pEFEM)
+ {
+ m_pEFEM = pEFEM;
+ }
+
std::string& CRobotTask::generateId(std::string& out)
{
char szBuffer[256];
@@ -139,6 +146,30 @@
return m_state;
}
+ void CRobotTask::run()
+ {
+ ASSERT(m_pEFEM);
+ m_state = ROBOT_TASK_STATE::Running;
+
+ static int seq = 0;
+ m_pEFEM->robotSendTransfer(++seq,
+ m_robotCmdParam.armNo,
+ m_robotCmdParam.getPosition,
+ m_robotCmdParam.putPosition,
+ m_robotCmdParam.getSlotNo,
+ m_robotCmdParam.putSlotNo,
+ [&](int code) -> int {
+ if (code == WOK) {
+ LOGI(_T("RobotTask已下发到EFEM"));
+ }
+ else {
+ LOGI(_T("RobotTask已下发失败"));
+ }
+
+ return 0;
+ });
+ }
+
void CRobotTask::completed()
{
m_state = ROBOT_TASK_STATE::Completed;
diff --git a/SourceCode/Bond/Servo/CRobotTask.h b/SourceCode/Bond/Servo/CRobotTask.h
index 2cd8654..63edbeb 100644
--- a/SourceCode/Bond/Servo/CRobotTask.h
+++ b/SourceCode/Bond/Servo/CRobotTask.h
@@ -1,6 +1,7 @@
#pragma once
#include "ServoCommo.h"
#include "Context.h"
+#include "CEFEM.h"
namespace SERVO {
@@ -16,6 +17,7 @@
std::string getSimpleDescription() const;
void setContext(CContext* pContext);
CContext* getContext();
+ void setEFEM(CEFEM* pEFEM);
void setRobotTransferParam(int seq, int armNo, int fromPos, int toPos, int fromSlot, int toSlot);
ROBOT_CMD_PARAM& getRobotCmdParam();
time_t getCreateTime();
@@ -23,6 +25,7 @@
time_t getStoredTime();
time_t getFinishTime();
ROBOT_TASK_STATE getState();
+ void run();
void completed();
void error();
void abort();
@@ -50,5 +53,6 @@
time_t m_timeFinish; /* 结束时间 */
ROBOT_CMD_PARAM m_robotCmdParam; /* 参数 */
CContext* m_pContext;
+ CEFEM* m_pEFEM;
};
}
--
Gitblit v1.9.3