LAPTOP-SNT8I5JK\Boounion
2025-06-09 fac102938562e13dd4e4e4914d0fde9b1cd05d8b
1.CMaster调度线程中添加任务运行发送到EFEM;
已修改3个文件
52 ■■■■■ 文件已修改
SourceCode/Bond/Servo/CMaster.cpp 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CRobotTask.cpp 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CRobotTask.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
        }
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;
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;
    };
}