From e8a27bb203fe2aff70390a5eca002d7438da9b0f Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 22 十月 2025 14:24:34 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang
---
SourceCode/Bond/Servo/ServoCommo.h | 133 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 130 insertions(+), 3 deletions(-)
diff --git a/SourceCode/Bond/Servo/ServoCommo.h b/SourceCode/Bond/Servo/ServoCommo.h
index 5cfc30d..8c4c7ea 100644
--- a/SourceCode/Bond/Servo/ServoCommo.h
+++ b/SourceCode/Bond/Servo/ServoCommo.h
@@ -1,11 +1,57 @@
#pragma once
+#include <string>
+#include <vector>
+
+#define CHECK_READ_STEP_SIGNAL(addr, data, size) { \
+ BOOL bFlag = isBitOn(data, size, addr); \
+ SERVO::CStep* pStep = getStep(addr); \
+ if (pStep != nullptr) { \
+ ((CReadStep*)pStep)->onReadSignal(bFlag ? addr : 0); \
+ } \
+}
+
+#define CHECK_WRITE_STEP_SIGNAL(addr, data, size) { \
+ BOOL bFlag = isBitOn(data, size, addr); \
+ SERVO::CStep* pStep = getStep(addr); \
+ if (pStep != nullptr) { \
+ ((CWriteStep*)pStep)->onRecvSignal(bFlag ? addr : 0); \
+ } \
+}
+
+#define CHECK_RUN_ACTIVE_ROBOT_TASK(art) { \
+ if (art != nullptr) { \
+ art->pick(); \
+ std::string strDescription = art->getDescription(); \
+ unlock(); \
+ if (m_listener.onRobotTaskEvent != nullptr) { \
+ m_listener.onRobotTaskEvent(this, art, ROBOT_EVENT_CREATE); \
+ } \
+ LOGI("创建新任务<%s>...", strDescription.c_str()); \
+ continue; \
+ } \
+}
namespace SERVO {
#define BLOCK_BUFFER_MAX 1024
#define ALIVE_TIMEOUT 15
#define VCR_MAX 1
+#define PATH_MAX 8
+#define SIGNAL_MAX 8
#define ARM_ALL 99
+
+ enum class RET {
+ OK = 1,
+ NG,
+ };
+ using JobDataRequestAck = RET;
+
+ enum class InspResult
+ {
+ NotInspected = 0, // 初始化状态,尚未检测
+ Pass, // 检测合格
+ Fail // 检测不合格
+ };
enum class PortType {
Loading = 1,
@@ -27,9 +73,10 @@
};
enum class MaterialsType {
- G1 = 0,
- G2 = 1,
- G1G2 = 2
+ G0 = 0,
+ G1 = 1,
+ G2 = 2,
+ G1G2 = 3
};
typedef MaterialsType CassetteType;
@@ -108,9 +155,89 @@
enum class ROBOT_TASK_STATE {
Ready = 0,
Running,
+ Picking,
+ Picked,
+ Placing,
+ Restoring,
Error,
Abort,
+ Restored,
Completed
};
+
+ enum class ROBOT_STATUS {
+ Setup = 0,
+ Idle,
+ Run,
+ Pause,
+ Stop,
+ Moving,
+ };
+
+ enum class ROBOT_POSITION {
+ Port1 = 0,
+ Port2,
+ Port3,
+ Port4,
+ Aligner,
+ Fliper,
+ Bonder1,
+ Bonder2,
+ Bake,
+ Cooling,
+ Measurement
+ };
+
+ /* Indexer Monitoring Status */
+ /* Robot Monitoring Data */
+ typedef struct _ROBOT_MONITORING_DATA {
+ ROBOT_STATUS status;
+ ROBOT_POSITION position;
+ BOOL armState[2];
+ } ROBOT_MONITORING_DATA, RMDATA;
+
+ /* 工艺(加工处理)状态 */
+ enum class PROCESS_STATE {
+ Ready = 0,
+ Processing,
+ Complete,
+ Error
+ };
+
+ /* Port Status */
+ struct SlotConfig {
+ int nSlotID = 0;
+ bool isEnabled = false;
+ };
+
+ struct PortConfig {
+ int nMaterialType; // 物料类型,1: G1, 2: G2, 3: G1+G2
+ std::string strPortName; // 例如 "Port 1"
+ std::string strRecipe; // 例如 "P1001"
+ std::string strLotID;
+ std::string strProductID;
+ std::string strOperationID;
+ std::vector<SlotConfig> vecSlot;
+ };
+
+ /* EQ Data changed code */
+#define EDCC_FETCHOUT_JOB 1000 /* 取片 */
+#define EDCC_STORED_JOB 1001 /* 放片 */
+
+
+ /* Cassette Ctrl CMD */
+#define CCC_MAP_DOWNLOAD 1
+#define CCC_CLAMP 2
+#define CCC_UNCLAMP 3
+#define CCC_RECLAMP 4
+#define CCC_PROCESS_START 5
+#define CCC_PROCESS_START_BY_COUNT 6
+#define CCC_PROCESS_PAUSE 7
+#define CCC_PROCESS_RESUME 8
+#define CCC_PROCESS_ABORT 9
+#define CCC_PROCESS_CANCEL 10
+#define CCC_PROCESS_END 11
+#define CCC_ID_UPDATE 12
+#define CCC_MAP_UPDATE 13
}
--
Gitblit v1.9.3