From b54cb6d1d8742e94bd79623d4f410b3ff5abde86 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 26 六月 2025 08:47:12 +0800
Subject: [PATCH] 6.定时轮询比特位,修改为只轮询EFEM, Bonder1, Bonder2, BakeCooling, VacuuumBake, Measurent, 其它只是以上的子单元,共用CC-Link的数据块。 7.修改一处转换机械手的放置目标POS时的错误 问题。 8.增加机械手状态和托盘是否有物料的信息打印,以便于创建搬送任务时观察和调试

---
 SourceCode/Bond/Servo/Servo.vcxproj  |    1 +
 SourceCode/Bond/Servo/CEquipment.cpp |    1 +
 SourceCode/Bond/Servo/CRobotTask.cpp |    8 ++++----
 SourceCode/Bond/Servo/CEFEM.cpp      |    8 ++++++++
 SourceCode/Bond/Servo/CMaster.cpp    |   34 ++++++++--------------------------
 SourceCode/Bond/Servo/CEFEM.h        |    1 +
 SourceCode/Bond/Servo/ServoDlg.cpp   |    2 ++
 7 files changed, 25 insertions(+), 30 deletions(-)

diff --git a/SourceCode/Bond/Servo/CEFEM.cpp b/SourceCode/Bond/Servo/CEFEM.cpp
index 901e3ae..8175eed 100644
--- a/SourceCode/Bond/Servo/CEFEM.cpp
+++ b/SourceCode/Bond/Servo/CEFEM.cpp
@@ -880,4 +880,12 @@
 	{
 		return 10000;
 	}
+
+	void CEFEM::printDebugRobotState()
+	{
+		LOGI("<CEFEM>Robot status:%d, ARM1:%s, ARM2:%s",
+			m_robotData.status,
+			m_robotData.armState[1] ? _T("ON") : _T("OFF"),
+			m_robotData.armState[2] ? _T("ON") : _T("OFF"));
+	}
 }
diff --git a/SourceCode/Bond/Servo/CEFEM.h b/SourceCode/Bond/Servo/CEFEM.h
index 4e0d202..12603d3 100644
--- a/SourceCode/Bond/Servo/CEFEM.h
+++ b/SourceCode/Bond/Servo/CEFEM.h
@@ -59,6 +59,7 @@
         int robotSendTransferAndHome(int seq, int armNo, int fromPos, int toPos, int fromSlot, int toSlot, ONWRITED onWritedBlock = nullptr);
         int robotSendGetAndPut(int seq, int armNo, int getPos, int getSlot, int putPos, int putSlot, ONWRITED onWritedBlock = nullptr);
         int robotSendPutAndHome(int seq, int armNo, int putPos, int putSlot, ONWRITED onWritedBlock = nullptr);
+        void printDebugRobotState();
 
     private:
         CLoadPort* m_pPort[4];
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index 5336a26..5518246 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -41,6 +41,7 @@
 		m_nBaseAlarmId = 0;
 		m_pArm = nullptr;
 		m_processState = PROCESS_STATE::Ready;
+		m_blockReadBit = { 0 };
 		InitializeCriticalSection(&m_criticalSection);
 	}
 
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 5023f98..9cbcbd7 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -779,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);
+					}
 				}
 			}
 		}
@@ -1028,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);
 
@@ -1063,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);
 
@@ -1190,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) {
diff --git a/SourceCode/Bond/Servo/CRobotTask.cpp b/SourceCode/Bond/Servo/CRobotTask.cpp
index 582e63c..b549782 100644
--- a/SourceCode/Bond/Servo/CRobotTask.cpp
+++ b/SourceCode/Bond/Servo/CRobotTask.cpp
@@ -368,25 +368,25 @@
 			break;
 		case EQ_ID_Bonder1:
 			if (1 <= srcSlot && srcSlot <= 2) {
-				tarPos = 9 + srcSlot;
+				tarPos = 9 + srcSlot - 1;
 				tarSlot = 1;
 			}
 			break;
 		case EQ_ID_Bonder2:
 			if (1 <= srcSlot && srcSlot <= 2) {
-				tarPos = 11 + srcSlot;
+				tarPos = 11 + srcSlot - 1;
 				tarSlot = 1;
 			}
 			break;
 		case EQ_ID_VACUUMBAKE:
 			if (1 <= srcSlot && srcSlot <= 2) {
-				tarPos = 13 + srcSlot;
+				tarPos = 13 + srcSlot - 1;
 				tarSlot = 1;
 			}
 			break;
 		case EQ_ID_BAKE_COOLING:
 			if (1 <= srcSlot && srcSlot <= 4) {
-				tarPos = 15 + srcSlot;
+				tarPos = 15 + srcSlot - 1;
 				tarSlot = 1;
 			}
 			break;
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index 3b20373..e754738 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -46,6 +46,7 @@
     <PlatformToolset>v142</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
     <UseOfMfc>Dynamic</UseOfMfc>
+    <EnableASAN>true</EnableASAN>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
diff --git a/SourceCode/Bond/Servo/ServoDlg.cpp b/SourceCode/Bond/Servo/ServoDlg.cpp
index dde6456..de985ad 100644
--- a/SourceCode/Bond/Servo/ServoDlg.cpp
+++ b/SourceCode/Bond/Servo/ServoDlg.cpp
@@ -899,11 +899,13 @@
 	}
 	else if (id == IDC_BUTTON_SETTINGS) {
 		SERVO::CEquipment* pEq = theApp.m_model.m_master.getEquipment(EQ_ID_EFEM);
+		((SERVO::CEFEM*)pEq)->printDebugRobotState();
 		pEq->printDebugString001();
 		pEq = theApp.m_model.m_master.getEquipment(EQ_ID_Bonder1);
 		pEq->printDebugString001();
 		pEq = theApp.m_model.m_master.getEquipment(EQ_ID_Bonder2);
 		pEq->printDebugString001();
+
 	}
 	else if (id == IDC_BUTTON_OPERATOR) {
 		int menuId = (int)wParam;

--
Gitblit v1.9.3