From dba7d2725cefc162ef58a53bb12b4656434c8bc0 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 30 六月 2025 08:42:17 +0800
Subject: [PATCH] 1.调试后更新优化;
---
SourceCode/Bond/Servo/CMaster.cpp | 104 +++++++++++++++++++++++++++++++++------------------
1 files changed, 67 insertions(+), 37 deletions(-)
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 03df8d9..cba74ae 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -509,6 +509,9 @@
}
if (m_pActiveRobotTask != nullptr) {
+ if (m_pActiveRobotTask->isPicked()) {
+ m_pActiveRobotTask->place();
+ }
unlock();
// 检测到当前有正在下午的任务,确保当前任务完成或中止后继续
// LOGI("检测到当前有正在下午的任务,确保当前任务完成或中止后继续...");
@@ -537,8 +540,10 @@
// Measurement -> LoadPort
- LOGI("Arm1 %s, Arm2 %s.", rmd.armState[0] ? _T("不可用") : _T("可用"),
- rmd.armState[1] ? _T("不可用") : _T("可用"));
+ if (rmd.armState[0] || rmd.armState[1]) {
+ LOGI("Arm1 %s, Arm2 %s.", rmd.armState[0] ? _T("不可用") : _T("可用"),
+ rmd.armState[1] ? _T("不可用") : _T("可用"));
+ }
CLoadPort* pEqLoadPort[] = { pLoadPort1, pLoadPort2, pLoadPort3, pLoadPort4 };
CEquipment* pEqTar[] = { pVacuumBake, pFliper };
if (primaryType == MaterialsType::G2) {
@@ -695,7 +700,7 @@
// Aligner -> Fliper(G2)
// Aligner -> VacuumBake(G1)
if (!rmd.armState[1]) {
- m_pActiveRobotTask = createTransferTask(pAligner, pFliper, primaryType, secondaryType, 2);
+ m_pActiveRobotTask = createTransferTask(pAligner, pFliper, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
m_pActiveRobotTask->pick();
std::string strDescription = m_pActiveRobotTask->getDescription();
@@ -729,6 +734,7 @@
&& pEqLoadPort[s]->getPortMode() == PortMode::ReadyToLoad) {
m_pActiveRobotTask = createTransferTask(pEqLoadPort[s], pAligner, primaryType, secondaryType);
if (m_pActiveRobotTask != nullptr) {
+ pEFEM->setContext(m_pActiveRobotTask->getContext());
goto PORT_GET;
}
}
@@ -773,11 +779,12 @@
for (auto item : m_listEquipment) {
const StationIdentifier& station = item->getStation();
MemoryBlock& block = item->getReadBitBlock();
-
- int nRet = m_cclink.ReadData2(station, (DeviceType)block.type,
- block.start, block.size, block.buffer);
- if (0 == nRet) {
- item->onReceiveLBData(block.buffer, block.size);
+ if (block.end > block.start) {
+ int nRet = m_cclink.ReadData2(station, (DeviceType)block.type,
+ block.start, block.size, block.buffer);
+ if (0 == nRet) {
+ item->onReceiveLBData(block.buffer, block.size);
+ }
}
}
}
@@ -818,7 +825,7 @@
m_listener.onEqVcrEventReport(this, p, p2);
}
};
- listener.onPreFethedOutJob = [&](void* pEquipment, CJobDataB* pJobDataB) -> BOOL {
+ listener.onPreFethedOutJob = [&](void* pEquipment, int port, CJobDataB* pJobDataB) -> BOOL {
CEquipment* p = (CEquipment*)pEquipment;
@@ -851,7 +858,7 @@
return bOk;
};
- listener.onPreStoredJob = [&](void* pEquipment, CJobDataB* pJobDataB, short& slot) -> BOOL {
+ listener.onPreStoredJob = [&](void* pEquipment, int port, CJobDataB* pJobDataB, short& slot) -> BOOL {
CEquipment* p = (CEquipment*)pEquipment;
@@ -878,11 +885,22 @@
LOGI("<CMaster>onPreFethedOutJob, 已校验数据一致性.");
}
}
+
+ // 是否回撤
+ else if (m_pActiveRobotTask->isRestoring() &&
+ m_pActiveRobotTask->getSrcPosition() == p->getID()) {
+ CGlass* pGlass = p->getGlassFromSlot(m_pActiveRobotTask->getSrcSlot());
+ if (pGlass == nullptr && m_pActiveRobotTask->getSrcSlot() == port) {
+ bOk = TRUE;
+ slot = m_pActiveRobotTask->getSrcSlot();
+ LOGI("<CMaster>onPreFethedOutJob, 已校验数据一致性.");
+ }
+ }
}
unlock();
if (!bOk) {
- LOGE("<CMaster>onPreFethedOutJob, 数据校验失败.");
+ LOGE("<CMaster>onPreStoredJob, 数据校验失败.");
}
return bOk;
@@ -912,7 +930,7 @@
) {
LOGI("取片完成.");
m_pActiveRobotTask->fetchOut();
- m_pActiveRobotTask->place();
+ m_pActiveRobotTask->picked();
}
else if (m_pActiveRobotTask != nullptr
@@ -931,6 +949,25 @@
}
delete m_pActiveRobotTask;
m_pActiveRobotTask = nullptr;
+ }
+
+ else if (m_pActiveRobotTask != nullptr
+ && m_pActiveRobotTask->isRestoring()
+ && m_pActiveRobotTask->getSrcPosition() == p->getID()) {
+ m_pActiveRobotTask->stored();
+ m_pActiveRobotTask->restored();
+ LOGI("回撤完成...");
+ // 完成此条搬送任务,但要把数据和消息上抛应用层
+ unlock();
+
+
+ lock();
+ if (m_listener.onRobotTaskEvent != nullptr) {
+ m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_RESTORE);
+ }
+ delete m_pActiveRobotTask;
+ m_pActiveRobotTask = nullptr;
+ stop();
}
unlock();
}
@@ -992,7 +1029,7 @@
pEquipment->setBaseAlarmId(BASE_ALARM_EFEM);
pEquipment->setName("Fliper(G2)");
pEquipment->setDescription("Fliper(G2).");
- pEquipment->setReadBitBlock(0x4000, 0x45ff);
+ pEquipment->setReadBitBlock(0x0, 0x0);
pEquipment->setStation(0, 255);
addToEquipmentList(pEquipment);
@@ -1027,7 +1064,7 @@
pEquipment->setBaseAlarmId(BASE_ALARM_EFEM);
pEquipment->setName("Aligner");
pEquipment->setDescription("Aligner.");
- pEquipment->setReadBitBlock(0x4000, 0x45ff);
+ pEquipment->setReadBitBlock(0x0, 0x0);
pEquipment->setStation(0, 255);
addToEquipmentList(pEquipment);
@@ -1154,27 +1191,8 @@
}
- // 按一定频率扫描LB数据
static int i = 0;
i++;
- /*
- if (i % (4 * 1) == 0) {
-
- for (auto item : m_listEquipment) {
- if (item->getID() == EQ_ID_Bonder1) {
- const StationIdentifier& station = item->getStation();
- MemoryBlock& block = item->getReadBitBlock();
-
- int nRet = m_cclink.ReadData2(station, (DeviceType)block.type,
- block.start, block.size, block.buffer);
- if (0 == nRet) {
- item->onReceiveLBData(block.buffer, block.size);
- }
- }
- }
- }
- */
-
// 自动保存缓存
if (i % (4 * 2) == 0) {
@@ -1374,7 +1392,7 @@
CRobotTask* CMaster::createTransferTask_bonder_to_bakecooling(CEquipment* pSrcEq, CEquipment* pTarEq)
{
- std::vector<int> slots = {1, 2};
+ std::vector<int> slots = {1, 3};
CRobotTask* pTask = nullptr;
CSlot* pSrcSlot, * pTarSlot;
@@ -1395,8 +1413,8 @@
CRobotTask* CMaster::createTransferTask_bake_to_cooling(CEquipment* pSrcEq)
{
- std::vector<int> slotsTar = { 3, 4 };
- std::vector<int> slotsSrc = { 1, 2 };
+ std::vector<int> slotsTar = { 2, 4 };
+ std::vector<int> slotsSrc = { 1, 3 };
CRobotTask* pTask = nullptr;
CSlot* pSrcSlot, * pTarSlot;
@@ -1417,7 +1435,7 @@
CRobotTask* CMaster::createTransferTask_bakecooling_to_measurement(CEquipment* pSrcEq, CEquipment* pTarEq)
{
- std::vector<int> slots = { 3, 4 };
+ std::vector<int> slots = { 2, 4 };
CRobotTask* pTask = nullptr;
CSlot* pSrcSlot, * pTarSlot;
@@ -1461,6 +1479,18 @@
return 0;
}
+ int CMaster::restoreCurrentTask()
+ {
+ lock();
+ if (m_pActiveRobotTask != nullptr) {
+ m_pActiveRobotTask->restore();
+ }
+ unlock();
+
+
+ return 0;
+ }
+
void CMaster::setPortType(unsigned int index, BOOL enable, int type, int mode,
int cassetteType, int transferMode, BOOL autoChangeEnable)
{
--
Gitblit v1.9.3