LAPTOP-SNT8I5JK\Boounion
2025-08-11 f6347c91173823acf25d4fbea3acbe3abb37c83d
1.千传测试功能,增加当前工序和工验证,确保千传测试按序进行;
已修改2个文件
68 ■■■■ 文件已修改
SourceCode/Bond/Servo/CMaster.cpp 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.h 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp
@@ -56,7 +56,7 @@
        m_bEnableAlarmReport = true;
        m_bContinuousTransfer = false;
        m_nContinuousTransferCount = 0;
        m_nContinuousTransferStep = CTStep_begin;
        m_nContinuousTransferStep = CTStep_Unknow;
        InitializeCriticalSection(&m_criticalSection);
    }
@@ -708,13 +708,15 @@
                // Measurement -> LoadPort
                for (int s = 0; s < 4; s++) {
                    PortType pt = pLoadPorts[s]->getPortType();
                    if (!rmd.armState[0] && pLoadPorts[s]->isEnable()
                    if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_BakeCooling_Measurement)
                        && !rmd.armState[0] && pLoadPorts[s]->isEnable()
                        && (pt == PortType::Unloading || pt == PortType::Both)
                        && pLoadPorts[s]->getPortStatus() == PORT_INUSE) {
                        for (int slot = 0; slot < SLOT_MAX; slot++) {
                            m_pActiveRobotTask = createTransferTask_continuous_transfer(pMeasurement,
                                0, pLoadPorts[s], slot);
                            if (m_pActiveRobotTask != nullptr) {
                                m_nContinuousTransferStep = CTStep_Measurement_LoadPort;
                                m_nContinuousTransferStep = CTStep_end;
                                goto CT_PORT_PUT;
                            }
@@ -727,10 +729,12 @@
                // BakeCooling ->Measurement
                if (!rmd.armState[0]) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_BakeCooling_BakeCooling3)
                    && !rmd.armState[0]) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pBakeCooling,
                        3, pMeasurement, 0);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_BakeCooling_Measurement;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(BakeCooling -> Measurement)...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
@@ -738,86 +742,104 @@
                
                // BakeCooling内部
                if (!rmd.armState[0]) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_BakeCooling_BakeCooling2)
                    && !rmd.armState[0]) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pBakeCooling,
                        2, pBakeCooling, 3);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_BakeCooling_BakeCooling3;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(BakeCooling-2 -> BakeCooling-3)...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
                }
                if (!rmd.armState[0]) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_BakeCooling_BakeCooling1)
                    && !rmd.armState[0]) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pBakeCooling,
                        1, pBakeCooling, 2);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_BakeCooling_BakeCooling2;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(BakeCooling-1 -> BakeCooling-2)...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
                }
                if (!rmd.armState[0]) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_VacuumBake_BakeCooling)
                    && !rmd.armState[0]) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pBakeCooling,
                        0, pBakeCooling, 1);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_BakeCooling_BakeCooling1;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(BakeCooling-0 -> BakeCooling-1)...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
                }
                // VacuumBake(G1) -> BakeCooling
                if (!rmd.armState[0]) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_VacuumBake_VacuumBake)
                    && !rmd.armState[0]) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pVacuumBake,
                        1, pBakeCooling, 0);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_VacuumBake_BakeCooling;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(VacuumBake(G1) -> BakeCooling)...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
                }
                // VacuumBake(G1) -> VacuumBake(G1)
                if (!rmd.armState[0]) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_Bonder2_VacuumBake)
                    && !rmd.armState[0]) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pVacuumBake,
                        0, pVacuumBake, 1);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_VacuumBake_VacuumBake;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(VacuumBake(G1-0) -> VacuumBake(G1-1))...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
                }
                // Bonder2 -> VacuumBake(G1)
                if (!rmd.armState[0]) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_Bonder1_Bonder2)
                    && !rmd.armState[0]) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pBonder2,
                        1, pVacuumBake, 0);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_Bonder2_VacuumBake;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(Bonder2 -> VacuumBake(G1))...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
                }
                
                // Bonder1 -> Bonder2
                if (!rmd.armState[0] && !pBonder2->hasBondClass()) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_Fliper_Bonder1)
                    && !rmd.armState[0] && !pBonder2->hasBondClass()) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pBonder1,
                        1, pBonder2, 1);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_Bonder1_Bonder2;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(Bonder1 -> Bonder2)...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
                }
                // Fliper(G2) -> Bonder1
                if (!rmd.armState[0] && !pBonder1->hasBondClass()) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_Aligner_Fliper)
                    &&!rmd.armState[0] && !pBonder1->hasBondClass()) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pFliper,
                        0, pBonder1, 1, 2);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_Fliper_Bonder1;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(Fliper(G2) -> Bonder1)...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
                }
                // Aligner -> Fliper(G2)
                if (!rmd.armState[1]) {
                if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_LoadPort_Aligner)
                    && !rmd.armState[1]) {
                    m_pActiveRobotTask = createTransferTask_continuous_transfer(pAligner,
                        0, pFliper, 0);
                    if (m_pActiveRobotTask != nullptr) {
                        m_nContinuousTransferStep = CTStep_Aligner_Fliper;
                        LOGI("<ContinuousTransfer>千传测试,开始搬送任务(Aligner -> Fliper(G2))...");
                    }
                    CHECK_RUN_ACTIVE_ROBOT_TASK(m_pActiveRobotTask);
@@ -826,13 +848,15 @@
                // LoadPort -> Aligner
                for (int s = 0; s < 4; s++) {
                    PortType pt = pLoadPorts[s]->getPortType();
                    if (!rmd.armState[0] && pLoadPorts[s]->isEnable()
                    if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_end)
                        && !rmd.armState[0] && pLoadPorts[s]->isEnable()
                        && (pt == PortType::Loading || pt == PortType::Both)
                        && pLoadPorts[s]->getPortStatus() == PORT_INUSE) {
                        for (int slot = 0; slot < SLOT_MAX; slot++) {
                            m_pActiveRobotTask = createTransferTask_continuous_transfer(pLoadPorts[s], 
                                slot, pAligner, 0);
                            if (m_pActiveRobotTask != nullptr) {
                                m_nContinuousTransferStep = CTStep_LoadPort_Aligner;
                                LOGI("<ContinuousTransfer>千传测试,开始搬送任务(LoadPort -> Aligner)...");
                                pEFEM->setContext(m_pActiveRobotTask->getContext());
                                goto CT_PORT_GET;
SourceCode/Bond/Servo/CMaster.h
@@ -15,8 +15,22 @@
#include "CRobotTask.h"
#define CTStep_begin        0
#define CTStep_end          99
#define CTStep_Unknow                   0
#define CTStep_LoadPort_Aligner         1
#define CTStep_Aligner_Fliper           2
#define CTStep_Fliper_Bonder1           3
#define CTStep_Bonder1_Bonder2          4
#define CTStep_Bonder2_VacuumBake       5
#define CTStep_VacuumBake_VacuumBake    6
#define CTStep_VacuumBake_BakeCooling   7
#define CTStep_BakeCooling_BakeCooling1 8
#define CTStep_BakeCooling_BakeCooling2 9
#define CTStep_BakeCooling_BakeCooling3 10
#define CTStep_BakeCooling_Measurement  11
#define CTStep_Measurement_LoadPort     12
#define CTStep_begin                    CTStep_LoadPort_Aligner
#define CTStep_end                      CTStep_Measurement_LoadPort
namespace SERVO {
    enum class MASTERSTATE {