From 7f55a7c6cef156e553866d0012464e4697cb1849 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 20 六月 2025 16:27:04 +0800
Subject: [PATCH] 1.联调,优化。
---
SourceCode/Bond/Servo/CRobotTask.h | 2 +
SourceCode/Bond/Servo/CRobotTask.cpp | 31 ++++++++-------
SourceCode/Bond/Servo/CEFEM.cpp | 65 ++++++++------------------------
SourceCode/Bond/Servo/CMaster.cpp | 5 ++
SourceCode/Bond/Servo/CLoadPort.cpp | 5 ++
SourceCode/Bond/Servo/ServoCommo.h | 1
6 files changed, 43 insertions(+), 66 deletions(-)
diff --git a/SourceCode/Bond/Servo/CEFEM.cpp b/SourceCode/Bond/Servo/CEFEM.cpp
index 995763b..645251f 100644
--- a/SourceCode/Bond/Servo/CEFEM.cpp
+++ b/SourceCode/Bond/Servo/CEFEM.cpp
@@ -713,7 +713,7 @@
// JOB Data Request
CEqReadStep* pStep = new CEqReadStep(0x0, 0,
[&](void* pFrom, int code, const char* pszData, size_t size) -> int {
- if (code == ROK && pszData != nullptr && size > 0) {
+ if (code == ROK /* && pszData != nullptr && size > 0*/) {
// 由于EFEM没有发送参数到master, 我们只需要返回数据
// Cassette Sequence No和Job Sequence No根据上一次调试缓存而来
// decodeJobDataRequest((CStep*)pFrom, pszData, size);
@@ -727,6 +727,7 @@
if (m_pActiveContext != nullptr) {
CJobDataS* pJobDataS = ((CGlass*)m_pActiveContext)->getJobDataS();
if (pJobDataS != nullptr) {
+ pJobDataS->serialize(szBuffer, 1024);
pJobDataS->serialize(szBuffer, 1024);
ack = (short)JobDataRequestAck::OK;
}
@@ -843,62 +844,28 @@
int CEFEM::onFetchedOutJob(int port, CJobDataB* pJobDataB)
{
- if (port == 1) {
- return m_pPort[0]->onFetchedOutJob(port, pJobDataB);
- }
- if (port == 2) {
- return m_pPort[1]->onFetchedOutJob(port, pJobDataB);
- }
- if (port == 3) {
- return m_pPort[2]->onFetchedOutJob(port, pJobDataB);
- }
- if (port == 4) {
- return m_pPort[3]->onFetchedOutJob(port, pJobDataB);
- }
- if (port == 5) {
- return m_pArmTray[0]->onFetchedOutJob(port, pJobDataB);
- }
- if (port == 6) {
- return m_pArmTray[1]->onFetchedOutJob(port, pJobDataB);
- }
- if (port == 7) {
- return m_pAligner->onFetchedOutJob(port, pJobDataB);
- }
- if (port == 8) {
- return m_pFliper->onFetchedOutJob(port, pJobDataB);
+ // 转发到子单元设备
+ CEquipment* pEqs[] = { m_pPort[0], m_pPort[1], m_pPort[2], m_pPort[3], m_pArmTray[0], m_pArmTray[1],
+ m_pAligner, m_pFliper };
+ if (1 <= port && port <= 8) {
+ pEqs[port - 1]->onFetchedOutJob(port, pJobDataB);
}
- return -1;
+
+ return 0;
}
int CEFEM::onStoredJob(int port, CJobDataB* pJobDataB)
{
- if (port == 1) {
- return m_pPort[0]->onStoredJob(port, pJobDataB);
- }
- if (port == 2) {
- return m_pPort[1]->onStoredJob(port, pJobDataB);
- }
- if (port == 3) {
- return m_pPort[2]->onStoredJob(port, pJobDataB);
- }
- if (port == 4) {
- return m_pPort[3]->onStoredJob(port, pJobDataB);
- }
- if (port == 5) {
- return m_pArmTray[0]->onStoredJob(port, pJobDataB);
- }
- if (port == 6) {
- return m_pArmTray[1]->onStoredJob(port, pJobDataB);
- }
- if (port == 7) {
- return m_pAligner->onStoredJob(port, pJobDataB);
- }
- if (port == 8) {
- return m_pFliper->onStoredJob(port, pJobDataB);
+ // 转发到子单元设备
+ CEquipment* pEqs[] = { m_pPort[0], m_pPort[1], m_pPort[2], m_pPort[3], m_pArmTray[0], m_pArmTray[1],
+ m_pAligner, m_pFliper };
+ if (1 <= port && port <= 8) {
+ pEqs[port - 1]->onStoredJob(port, pJobDataB);
}
- return -1;
+
+ return 0;
}
int CEFEM::getIndexerOperationModeBaseValue()
diff --git a/SourceCode/Bond/Servo/CLoadPort.cpp b/SourceCode/Bond/Servo/CLoadPort.cpp
index 540a5e6..54c0d85 100644
--- a/SourceCode/Bond/Servo/CLoadPort.cpp
+++ b/SourceCode/Bond/Servo/CLoadPort.cpp
@@ -348,6 +348,8 @@
}
}
}
+
+ /*
{
// Fetched Out Job Report #1~15
@@ -392,6 +394,7 @@
delete pStep;
}
}
+ */
}
void CLoadPort::onTimer(UINT nTimerid)
@@ -1168,7 +1171,7 @@
js.setCassetteSequenceNo(getNextCassetteSequenceNo());
js.setJobSequenceNo(m_slot[i].getNo());
sprintf_s(szBuffer, 64, "%05d%05d", js.getCassetteSequenceNo(), js.getJobSequenceNo());
- js.setGlass1Id(szBuffer);
+ //js.setGlass1Id(szBuffer);
js.setJobType(1);
js.setMaterialsType((int)type);
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 7349b9b..84d09f9 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("检测到当前有正在下午的任务,确保当前任务完成或中止后继续...");
@@ -913,7 +916,7 @@
) {
LOGI("取片完成.");
m_pActiveRobotTask->fetchOut();
- m_pActiveRobotTask->place();
+ m_pActiveRobotTask->picked();
}
else if (m_pActiveRobotTask != nullptr
diff --git a/SourceCode/Bond/Servo/CRobotTask.cpp b/SourceCode/Bond/Servo/CRobotTask.cpp
index 5b4fbab..e67d6e7 100644
--- a/SourceCode/Bond/Servo/CRobotTask.cpp
+++ b/SourceCode/Bond/Servo/CRobotTask.cpp
@@ -123,7 +123,7 @@
transformPosAndSlot(toPos, toSlot, tarPos, tarSlot);
m_robotCmdParam[ACTION_PICK] = {};
- m_robotCmdParam[ACTION_PICK].sequenceNo = static_cast<short>(seq+2);
+ m_robotCmdParam[ACTION_PICK].sequenceNo = static_cast<short>(seq+1);
m_robotCmdParam[ACTION_PICK].rcmd = static_cast<short>(SERVO::RCMD::Get);
m_robotCmdParam[ACTION_PICK].armNo = static_cast<short>(armNo);
m_robotCmdParam[ACTION_PICK].getPosition = static_cast<short>(srcPos);
@@ -137,13 +137,13 @@
m_robotCmdParam[ACTION_PLACE].putSlotNo = static_cast<short>(tarSlot);
m_robotCmdParam[ACTION_RESTORE] = {};
- m_robotCmdParam[ACTION_RESTORE].sequenceNo = static_cast<short>(seq + 1);
+ m_robotCmdParam[ACTION_RESTORE].sequenceNo = static_cast<short>(seq + 3);
m_robotCmdParam[ACTION_RESTORE].rcmd = static_cast<short>(SERVO::RCMD::Put);
m_robotCmdParam[ACTION_RESTORE].armNo = static_cast<short>(armNo);
m_robotCmdParam[ACTION_RESTORE].putPosition = static_cast<short>(srcPos);
m_robotCmdParam[ACTION_RESTORE].putSlotNo = static_cast<short>(srcSlot);
- return seq + 1;
+ return seq + 3;
}
ROBOT_CMD_PARAM& CRobotTask::getRobotCmdParam(int index)
@@ -188,6 +188,11 @@
return m_state == ROBOT_TASK_STATE::Picking;
}
+ bool CRobotTask::isPicked()
+ {
+ return m_state == ROBOT_TASK_STATE::Picked;
+ }
+
bool CRobotTask::isPlacing()
{
return m_state == ROBOT_TASK_STATE::Placing;
@@ -227,10 +232,7 @@
ASSERT(m_pEFEM);
m_state = ROBOT_TASK_STATE::Picking;
- m_pEFEM->robotSendGet(m_robotCmdParam->sequenceNo,
- m_robotCmdParam[ACTION_PICK].armNo,
- m_robotCmdParam[ACTION_PICK].getPosition,
- m_robotCmdParam[ACTION_PICK].getSlotNo,
+ m_pEFEM->robotCmd(m_robotCmdParam[ACTION_PICK],
[&](int code) -> int {
if (code == WOK) {
LOGI(_T("RobotTask/get已下发到EFEM"));
@@ -243,15 +245,17 @@
});
}
+ void CRobotTask::picked()
+ {
+ m_state = ROBOT_TASK_STATE::Picked;
+ }
+
void CRobotTask::place()
{
ASSERT(m_pEFEM);
m_state = ROBOT_TASK_STATE::Placing;
- m_pEFEM->robotSendMoveToPut(m_robotCmdParam->sequenceNo,
- m_robotCmdParam[ACTION_PLACE].armNo,
- m_robotCmdParam[ACTION_PLACE].putPosition,
- m_robotCmdParam[ACTION_PLACE].putSlotNo,
+ m_pEFEM->robotCmd(m_robotCmdParam[ACTION_PLACE],
[&](int code) -> int {
if (code == WOK) {
LOGI(_T("RobotTask/put已下发到EFEM"));
@@ -269,10 +273,7 @@
ASSERT(m_pEFEM);
m_state = ROBOT_TASK_STATE::Restoring;
- m_pEFEM->robotSendMoveToPut(m_robotCmdParam->sequenceNo,
- m_robotCmdParam[ACTION_RESTORE].armNo,
- m_robotCmdParam[ACTION_RESTORE].putPosition,
- m_robotCmdParam[ACTION_RESTORE].putSlotNo,
+ m_pEFEM->robotCmd(m_robotCmdParam[ACTION_RESTORE],
[&](int code) -> int {
if (code == WOK) {
LOGI(_T("RobotTask/restore-put已下发到EFEM"));
diff --git a/SourceCode/Bond/Servo/CRobotTask.h b/SourceCode/Bond/Servo/CRobotTask.h
index 990e106..aa9348e 100644
--- a/SourceCode/Bond/Servo/CRobotTask.h
+++ b/SourceCode/Bond/Servo/CRobotTask.h
@@ -32,10 +32,12 @@
int getArmNo();
ROBOT_TASK_STATE getState();
bool isPicking();
+ bool isPicked();
bool isPlacing();
bool isRestoring();
void run();
void pick();
+ void picked();
void place();
void restore();
void completed();
diff --git a/SourceCode/Bond/Servo/ServoCommo.h b/SourceCode/Bond/Servo/ServoCommo.h
index 0b58600..0210e31 100644
--- a/SourceCode/Bond/Servo/ServoCommo.h
+++ b/SourceCode/Bond/Servo/ServoCommo.h
@@ -117,6 +117,7 @@
Ready = 0,
Running,
Picking,
+ Picked,
Placing,
Restoring,
Error,
--
Gitblit v1.9.3