From 10f48622c553729352dce9a4484def4bfeaa1083 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 02 七月 2025 14:51:33 +0800
Subject: [PATCH] 1.将OnPanelDataReport相关功能由EFEM移到Aligner; 2.Glass增加最初来源Port和Slot,以便在Aligner检测NG时加退; 3.物流调度增加一个参数,是否检测OK作为调度依据。 4.Alginer检测NG,送回原处;
---
SourceCode/Bond/Servo/Model.cpp | 46 +++++++++++++++++++++++++++++++++++-----------
1 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/SourceCode/Bond/Servo/Model.cpp b/SourceCode/Bond/Servo/Model.cpp
index f68d9cc..c2acb85 100644
--- a/SourceCode/Bond/Servo/Model.cpp
+++ b/SourceCode/Bond/Servo/Model.cpp
@@ -40,6 +40,18 @@
m_strWorkDir = pszWorkDir;
}
+void CModel::loadPortParams()
+{
+ BOOL portEnable, autoChangeEnable;
+ int portType, portMode, cassetteType, transferMode;
+ for (int i = 0; i < 4; i++) {
+ m_configuration.getPortParms(i, portEnable, portType, portMode,
+ cassetteType, transferMode, autoChangeEnable);
+ m_master.setPortType(i, portEnable, portType, portMode, cassetteType,
+ transferMode, autoChangeEnable);
+ }
+}
+
int CModel::init()
{
CString strIniFile;
@@ -178,8 +190,16 @@
}
// 任务描述与 ID 用于日志
+ SERVO::CGlass* pGlass = (SERVO::CGlass*)pTask->getContext();
const std::string& strDesc = pTask->getDescription();
- const std::string& strClassID = pTask->getId();
+ std::string strClassID;
+ if (pGlass != nullptr) {
+ strClassID = pGlass->getID();
+ if (pGlass->getBuddy() != nullptr) {
+ strClassID += "/";
+ strClassID += pGlass->getBuddy()->getID();
+ }
+ }
// 日志输出与状态处理
switch (code) {
@@ -191,11 +211,12 @@
break;
case ROBOT_EVENT_ERROR:
LOGE("<CModel>onRobotTaskEvent: 任务错误(%s, ClassID=%s).", strDesc.c_str(), strClassID.c_str());
- pTask->error();
break;
case ROBOT_EVENT_ABORT:
LOGE("<CModel>onRobotTaskEvent: 任务停止(%s, ClassID=%s).", strDesc.c_str(), strClassID.c_str());
- pTask->abort();
+ break;
+ case ROBOT_EVENT_RESTORE:
+ LOGE("<CModel>onRobotTaskEvent: 任务回撤(%s, ClassID=%s).", strDesc.c_str(), strClassID.c_str());
break;
default:
LOGE("<CModel>onRobotTaskEvent: 未知事件 code=%d, 任务=%s", code, strDesc.c_str());
@@ -204,7 +225,7 @@
// 安全格式化时间
auto format_time = [](time_t t) -> std::string {
- if (t < 0 || t == _I64_MIN || t == _I64_MAX) {
+ if (t <= 0 || t == _I64_MIN || t == _I64_MAX) {
return "";
}
@@ -232,23 +253,26 @@
// 状态映射
static const char* STATUS_STR[] = {
- "Unknown", "Ready", "Running", "Error", "Abort", "Completed"
+ "Ready", "Running", "Picking", "Picked", "Placing", "Restoring", "Error", "Abort", "Restored", "Completed"
};
auto state = pTask->getState();
int index = static_cast<int>(state);
- if (index > 0 && index < static_cast<int>(std::size(STATUS_STR))) {
+ if (index >= 0 && index < static_cast<int>(std::size(STATUS_STR))) {
data.strStatus = STATUS_STR[index];
}
else {
- data.strStatus = STATUS_STR[0];
+ data.strStatus = "Unknown";
}
// 写入数据库
- int nRecordId = 0;
- TransferManager::getInstance().addTransferRecord(data, nRecordId);
-
+ if (code == ROBOT_EVENT_FINISH || code == ROBOT_EVENT_ERROR
+ || code == ROBOT_EVENT_ABORT || code == ROBOT_EVENT_RESTORE) {
+ int nRecordId = 0;
+ TransferManager::getInstance().addTransferRecord(data, nRecordId);
+ LOGI("<CModel>onRobotTaskEvent: 任务记录已保存,RecordID=%d", nRecordId);
+ }
notifyPtrAndInt(RX_CODE_EQ_ROBOT_TASK, pTask, nullptr, code);
- LOGI("<CModel>onRobotTaskEvent: 任务记录已保存,RecordID=%d", nRecordId);
+
};
m_master.setListener(masterListener);
--
Gitblit v1.9.3