From 1ea724d777948a9e70ba30a06d3db28641d61d0c Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 21 二月 2025 17:43:57 +0800
Subject: [PATCH] 1.添加警告CEqAlarmStep

---
 SourceCode/Bond/Servo/Servo.vcxproj         |    2 
 SourceCode/Bond/Servo/Servo.vcxproj.filters |    2 
 SourceCode/Bond/Servo/CEqAlarmStep.h        |   29 +++++++++
 SourceCode/Bond/Servo/CEqAlarmStep.cpp      |   67 ++++++++++++++++++++++
 SourceCode/Bond/Servo/CEquipment.cpp        |   24 +++----
 SourceCode/Bond/Servo/CMaster.cpp           |   42 +++++++++++++
 SourceCode/Bond/Servo/CEquipment.h          |    1 
 7 files changed, 152 insertions(+), 15 deletions(-)

diff --git a/SourceCode/Bond/Servo/CEqAlarmStep.cpp b/SourceCode/Bond/Servo/CEqAlarmStep.cpp
new file mode 100644
index 0000000..9d2b593
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqAlarmStep.cpp
@@ -0,0 +1,67 @@
+#include "stdafx.h"
+#include "CEqAlarmStep.h"
+#include "Log.h"
+#include "ToolUnits.h"
+
+
+namespace SERVO {
+	CEqAlarmStep::CEqAlarmStep() : CStep()
+	{
+		m_nAlarmDev = 0;
+		m_nAlarmState = 0;
+		m_nUnitId = 0;
+		m_nAlarmLevel = 0;
+		m_nAlarmCode = 0;
+		m_nAlarmId = 0;
+	}
+
+	CEqAlarmStep::~CEqAlarmStep()
+	{
+
+	}
+	int CEqAlarmStep::onReadData()
+	{
+		CStep::onReadData();
+
+		char szBuffer[64];
+		int nRet = m_pCclink->ReadData2(m_station, DeviceType::W,
+			m_nAlarmDev, 64, szBuffer);
+		if (0 == nRet) {
+			m_nAlarmState = (unsigned int)CToolUnits::toInt16(&szBuffer[0]);
+			m_nUnitId = (unsigned int)CToolUnits::toInt16(&szBuffer[2]);
+			m_nAlarmId = (unsigned int)CToolUnits::toInt16(&szBuffer[4]);
+			m_nAlarmCode = (unsigned int)CToolUnits::toInt16(&szBuffer[6]);
+			m_nAlarmLevel = (unsigned int)CToolUnits::toInt16(&szBuffer[8]);
+
+			LOGI("<CEqAlarmStep> Equipment Alarm state Changed<State:%d, Unit:%d, Level:%d, Code:%d, ID:%d>\n",
+				m_nAlarmState, m_nUnitId, m_nAlarmLevel, m_nAlarmCode, m_nAlarmId,
+				m_strText.c_str(), m_strDescription.c_str());
+		}
+
+
+		return 0;
+	}
+
+	int CEqAlarmStep::onComplete()
+	{
+		CStep::onComplete();
+		LOGI("<CEqAlarmStep> onComplete.");
+
+		return 0;
+	}
+
+	int CEqAlarmStep::onTimeout()
+	{
+		CStep::onTimeout();
+		LOGI("<CEqAlarmStep> onTimeout.");
+
+		return 0;
+	}
+
+	void CEqAlarmStep::setAlarmDev(int nDev)
+	{
+		m_nAlarmDev = nDev;
+	}
+
+
+}
diff --git a/SourceCode/Bond/Servo/CEqAlarmStep.h b/SourceCode/Bond/Servo/CEqAlarmStep.h
new file mode 100644
index 0000000..45510bf
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqAlarmStep.h
@@ -0,0 +1,29 @@
+#pragma once
+#include "CStep.h"
+
+
+namespace SERVO {
+	class CEqAlarmStep : public CStep
+	{
+	public:
+		CEqAlarmStep();
+		~CEqAlarmStep();
+
+	public:
+		virtual int onReadData();
+		virtual int onComplete();
+		virtual int onTimeout();
+		void setAlarmDev(int nDev);
+
+	private:
+		int m_nAlarmDev;
+		int m_nAlarmState;
+		int m_nUnitId;
+		int m_nAlarmLevel;
+		int m_nAlarmCode;
+		int m_nAlarmId;
+		std::string m_strText;
+		std::string m_strDescription;
+	};
+}
+
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index d3bc8da..82c261e 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -242,20 +242,16 @@
 		// 以下根据信号做流程处理
 		CStep* pStep;
 
-		// Equipment Mode Change Report
-		index = 0x360;
-		bFlag = isBitOn(pszData, size, index);
-		pStep = getStep(index);
-		if (pStep != nullptr) {
-			pStep->onSignal(bFlag);
-		}
-
-		// Equipment Status Change Report
-		index = 0x361;
-		bFlag = isBitOn(pszData, size, index);
-		pStep = getStep(index);
-		if (pStep != nullptr) {
-			pStep->onSignal(bFlag);
+		// Equipment Mode Change Report(0x360)
+		// Equipment Status Change Report(0x361)
+		// Equipment Alarm Change Report(0x362 ~ 0x366)
+		for (int i = 0; i < 7; i++) {
+			index = 0x360 + i;;
+			bFlag = isBitOn(pszData, size, index);
+			pStep = getStep(index);
+			if (pStep != nullptr) {
+				pStep->onSignal(bFlag);
+			}
 		}
 	}
 
diff --git a/SourceCode/Bond/Servo/CEquipment.h b/SourceCode/Bond/Servo/CEquipment.h
index c10084a..2bdbc4d 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -3,6 +3,7 @@
 #include "CCLinkIEControl.h"
 #include "CEqModeStep.h"
 #include "CEqStatusStep.h"
+#include "CEqAlarmStep.h"
 #include <map>
 
 
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 248d0dc..5e0cb50 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -89,7 +89,47 @@
 					delete pStep;
 				}
 			}
-
+			{
+				CEqAlarmStep* pStep = new CEqAlarmStep();
+				pStep->setWriteSignalDev(0x32);
+				pStep->setAlarmDev(0x4c1d);
+				if (pEquipment->addStep(0x362, pStep) != 0) {
+					delete pStep;
+				}
+			}
+			{
+				CEqAlarmStep* pStep = new CEqAlarmStep();
+				pStep->setWriteSignalDev(0x33);
+				pStep->setAlarmDev(0x4c4a);
+				if (pEquipment->addStep(0x363, pStep) != 0) {
+					delete pStep;
+				}
+			}
+			{
+				CEqAlarmStep* pStep = new CEqAlarmStep();
+				pStep->setWriteSignalDev(0x34);
+				pStep->setAlarmDev(0x4c77);
+				if (pEquipment->addStep(0x364, pStep) != 0) {
+					delete pStep;
+				}
+			}
+			{
+				CEqAlarmStep* pStep = new CEqAlarmStep();
+				pStep->setWriteSignalDev(0x35);
+				pStep->setAlarmDev(0x4ca4);
+				if (pEquipment->addStep(0x365, pStep) != 0) {
+					delete pStep;
+				}
+			}
+			{
+				CEqAlarmStep* pStep = new CEqAlarmStep();
+				pStep->setWriteSignalDev(0x36);
+				pStep->setAlarmDev(0x4cd1);
+				if (pEquipment->addStep(0x366, pStep) != 0) {
+					delete pStep;
+				}
+			}
+			
 
 			pEquipment->init();
 			LOGE("已添加“EFEM(ROBOT)”.");
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index a607a04..352aab2 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -200,6 +200,7 @@
     <ClInclude Include="CBonder.h" />
     <ClInclude Include="CCLinkPerformance\CCLinkIEControl.h" />
     <ClInclude Include="CCLinkPerformance\PerformanceMelsec.h" />
+    <ClInclude Include="CEqAlarmStep.h" />
     <ClInclude Include="CEqModeStep.h" />
     <ClInclude Include="CEqStatusStep.h" />
     <ClInclude Include="CStep.h" />
@@ -233,6 +234,7 @@
     <ClCompile Include="CBonder.cpp" />
     <ClCompile Include="CCLinkPerformance\CCLinkIEControl.cpp" />
     <ClCompile Include="CCLinkPerformance\PerformanceMelsec.cpp" />
+    <ClCompile Include="CEqAlarmStep.cpp" />
     <ClCompile Include="CEqModeStep.cpp" />
     <ClCompile Include="CEqStatusStep.cpp" />
     <ClCompile Include="CStep.cpp" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index ae2ad88..842dad9 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -39,6 +39,7 @@
     <ClCompile Include="CStep.cpp" />
     <ClCompile Include="CEqModeStep.cpp" />
     <ClCompile Include="CEqStatusStep.cpp" />
+    <ClCompile Include="CEqAlarmStep.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="AlarmManager.h" />
@@ -76,6 +77,7 @@
     <ClInclude Include="CStep.h" />
     <ClInclude Include="CEqModeStep.h" />
     <ClInclude Include="CEqStatusStep.h" />
+    <ClInclude Include="CEqAlarmStep.h" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="Servo.rc" />

--
Gitblit v1.9.3