From 3ec43c0d199587138cdbb601e3db2e93a87bc329 Mon Sep 17 00:00:00 2001
From: Darker <mr.darker@163.com>
Date: 星期二, 25 二月 2025 15:57:03 +0800
Subject: [PATCH] Merge branch 'clh'

---
 SourceCode/Bond/Servo/CEqStatusStep.h                       |   28 +++
 SourceCode/Bond/Servo/Servo.vcxproj                         |    6 
 SourceCode/Bond/Servo/CCLinkPerformance/PerformanceMelsec.h |    6 
 SourceCode/Bond/Servo/CEqAlarmStep.cpp                      |   67 +++++++
 SourceCode/Bond/Servo/CEqModeStep.h                         |   24 ++
 SourceCode/Bond/Servo/CEqModeStep.cpp                       |   92 ++++++++++
 SourceCode/Bond/Servo/Servo.vcxproj.filters                 |    8 
 SourceCode/Bond/Servo/CEqAlarmStep.h                        |   29 +++
 SourceCode/Bond/Servo/CStep.h                               |    9 
 SourceCode/Bond/Servo/CEqStatusStep.cpp                     |  122 +++++++++++++
 SourceCode/Bond/Servo/CEquipment.cpp                        |   25 +-
 SourceCode/Bond/Servo/CMaster.cpp                           |   60 ++++++
 SourceCode/Bond/Servo/CEquipment.h                          |    4 
 SourceCode/Bond/Servo/CStep.cpp                             |   53 +++--
 14 files changed, 493 insertions(+), 40 deletions(-)

diff --git a/SourceCode/Bond/Servo/CCLinkPerformance/PerformanceMelsec.h b/SourceCode/Bond/Servo/CCLinkPerformance/PerformanceMelsec.h
index 21a8281..07a4b32 100644
--- a/SourceCode/Bond/Servo/CCLinkPerformance/PerformanceMelsec.h
+++ b/SourceCode/Bond/Servo/CCLinkPerformance/PerformanceMelsec.h
@@ -203,6 +203,12 @@
 	// 鑷畾涔夋瀯閫犲嚱鏁帮紝瑕嗙洊榛樿鍊�
 	explicit StationIdentifier(const short net, const short st) : nNetNo(net), nStNo(st) {}
 
+	StationIdentifier() 
+	{
+		nNetNo = 0;
+		nStNo = 255;
+	}
+
 	// 灏嗏�滅綉缁滃彿鈥濆拰鈥滅珯鐐瑰彿鈥濈粍鍚堟垚涓�涓渶缁堢紪鐮�
 	short StationIdentifier::toNetworkStationCode() const {
 		return static_cast<short>(nStNo | ((nNetNo << 8) & 0xFF00));
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/CEqModeStep.cpp b/SourceCode/Bond/Servo/CEqModeStep.cpp
new file mode 100644
index 0000000..149075d
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqModeStep.cpp
@@ -0,0 +1,92 @@
+#include "stdafx.h"
+#include "CEqModeStep.h"
+#include "Log.h"
+
+
+namespace SERVO {
+	CEqModeStep::CEqModeStep() : CStep()
+	{
+		m_nModeDev = 0;
+		m_nMode = 0;
+	}
+
+	CEqModeStep::~CEqModeStep()
+	{
+
+	}
+
+	int CEqModeStep::onReadData()
+	{
+		CStep::onReadData();
+
+		DWordContainer dc;
+		if (0 == m_pCclink->ReadDWordData(m_station, DeviceType::W, m_nModeDev, 1, dc)
+			&& dc.size() >= 1) {
+			m_nMode = dc.at(0);
+			std::string strTemp;
+			LOGI("<CEqModeStep> Equipment Mode Changed<%s>\n",
+				getModeDescription(strTemp).c_str());
+		}
+
+
+		return 0;
+	}
+
+	int CEqModeStep::onComplete()
+	{
+		CStep::onComplete();
+		LOGI("<CEqModeStep> onComplete.");
+
+		return 0;
+	}
+
+	int CEqModeStep::onTimeout()
+	{
+		CStep::onTimeout();
+		LOGI("<CEqModeStep> onTimeout.");
+
+		return 0;
+	}
+
+	void CEqModeStep::setModeDev(int nDev)
+	{
+		m_nModeDev = nDev;
+	}
+
+	/*
+	0: No Equipment Mode exist
+		1: Normal Mode
+		2 : Recovery(Force Clean Out)  Mode
+		3 : Skip Mode
+		4 : Cold Run Mode
+		5 : ETC."
+	*/
+	std::string& CEqModeStep::getModeDescription(std::string& strDescription)
+	{
+		switch (m_nMode) {
+		case 0:
+			strDescription = _T("No Equipment Mode exist");
+			break;
+		case 1:
+			strDescription = _T("Normal Mode");
+			break;
+		case 2:
+			strDescription = _T("Recovery(Force Clean Out) Mode");
+			break;
+		case 3:
+			strDescription = _T("Skip Mode");
+			break;
+		case 4:
+			strDescription = _T("Cold Run Mode");
+			break;
+		case 5:
+			strDescription = _T("ETC.");
+			break;
+		default:
+			strDescription = _T("");
+			break;
+		}
+
+		return strDescription;
+	}
+}
diff --git a/SourceCode/Bond/Servo/CEqModeStep.h b/SourceCode/Bond/Servo/CEqModeStep.h
new file mode 100644
index 0000000..c91c5fa
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqModeStep.h
@@ -0,0 +1,24 @@
+#pragma once
+#include "CStep.h"
+
+
+namespace SERVO {
+	class CEqModeStep : public CStep
+	{
+	public:
+		CEqModeStep();
+		~CEqModeStep();
+
+	public:
+		virtual int onReadData();
+		virtual int onComplete();
+		virtual int onTimeout();
+		void setModeDev(int nDev);
+		std::string& getModeDescription(std::string& strDescription);
+
+	private:
+		int m_nModeDev;
+		int m_nMode;
+	};
+}
+
diff --git a/SourceCode/Bond/Servo/CEqStatusStep.cpp b/SourceCode/Bond/Servo/CEqStatusStep.cpp
new file mode 100644
index 0000000..edf4572
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqStatusStep.cpp
@@ -0,0 +1,122 @@
+#include "stdafx.h"
+#include "CEqStatusStep.h"
+#include "Log.h"
+#include "ToolUnits.h"
+
+
+namespace SERVO {
+	CEqStatusStep::CEqStatusStep() : CStep()
+	{
+		m_nStatusDev = 0;
+		for (int i = 0; i < STATUS_MAX; i++) {
+			m_nStatus[i] = 7;
+			m_nReasonCode[i] = 0;
+		}
+	
+
+	}
+
+	CEqStatusStep::~CEqStatusStep()
+	{
+
+	}
+
+	int CEqStatusStep::onReadData()
+	{
+		CStep::onReadData();
+
+		char szBuffer[64];
+		int nRet = m_pCclink->ReadData2(m_station, DeviceType::W,
+			m_nStatusDev, 64, szBuffer);
+		if (0 == nRet) {
+			unsigned int unitId = (unsigned int)CToolUnits::toInt16(&szBuffer[0]);
+			if (unitId < STATUS_MAX) {
+				if (unitId == 0) {
+					m_nStatus[unitId] = CToolUnits::toInt16(&szBuffer[2 + unitId * 4]);
+					m_nReasonCode[unitId] = CToolUnits::toInt16(&szBuffer[2 + unitId * 4 + 2]);
+				}
+				else {
+					m_nStatus[unitId] = CToolUnits::toInt16(&szBuffer[2 + 3 * 2 + unitId * 4]);
+					m_nReasonCode[unitId] = CToolUnits::toInt16(&szBuffer[2 + 3 * 2 + unitId * 4 + 2]);
+				}
+
+				for (int i = 0; i < 64; i++) {
+					TRACE("bbb %d, %x\n", i, szBuffer[i]);
+				}
+				TRACE("cccc %d %d %d\n", unitId, m_nStatus[unitId], m_nReasonCode[unitId]);
+				std::string strTemp;
+				LOGI("<CEqStatusStep> Equipment Status Changed<Unit:%d, %s, ReasonCode=%d>\n",
+					unitId, getStatusDescription(unitId, strTemp).c_str(), m_nReasonCode[unitId]);
+			}
+		}
+
+
+		return 0;
+	}
+
+	int CEqStatusStep::onComplete()
+	{
+		CStep::onComplete();
+		LOGI("<CEqStatusStep> onComplete.");
+
+		return 0;
+	}
+
+	int CEqStatusStep::onTimeout()
+	{
+		CStep::onTimeout();
+		LOGI("<CEqStatusStep> onTimeout.");
+
+		return 0;
+	}
+
+	void CEqStatusStep::setStatusDev(int nDev)
+	{
+		m_nStatusDev = nDev;
+	}
+
+	/*
+	Lower (1byte, 0~7) : Status
+	1 : PM
+	2 : Down(BM)
+	3 : Pause
+	4 : Idle
+	5: Run
+	6: Job Change
+	7 : ETC 
+	*/
+	std::string& CEqStatusStep::getStatusDescription(unsigned int unid, std::string& strDescription)
+	{
+		if (unid < STATUS_MAX) {
+			switch (m_nStatus[unid]) {
+			case 1:
+				strDescription = _T("PM");
+				break;
+			case 2:
+				strDescription = _T("Down(BM)");
+				break;
+			case 3:
+				strDescription = _T("Pause");
+				break;
+			case 4:
+				strDescription = _T("Idle");
+				break;
+			case 5:
+				strDescription = _T("Run");
+				break;
+			case 6:
+				strDescription = _T("Job Change");
+				break;
+			case 7:
+				strDescription = _T("ETC");
+				break;
+			default:
+				strDescription = _T("");
+				break;
+			}
+		}
+
+
+		return strDescription;
+	}
+}
diff --git a/SourceCode/Bond/Servo/CEqStatusStep.h b/SourceCode/Bond/Servo/CEqStatusStep.h
new file mode 100644
index 0000000..09fc8f4
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqStatusStep.h
@@ -0,0 +1,28 @@
+#pragma once
+#include "CStep.h"
+
+
+namespace SERVO {
+#define UNIT_MAX		6
+#define STATUS_MAX		(UNIT_MAX + 1)
+
+	class CEqStatusStep : public CStep
+	{
+	public:
+		CEqStatusStep();
+		~CEqStatusStep();
+
+	public:
+		virtual int onReadData();
+		virtual int onComplete();
+		virtual int onTimeout();
+		void setStatusDev(int nDev);
+		std::string& getStatusDescription(unsigned int unid, std::string& strDescription);
+
+	private:
+		int m_nStatusDev;
+		int m_nStatus[STATUS_MAX];
+		int m_nReasonCode[STATUS_MAX];
+	};
+}
+
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index fcc8002..82c261e 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -67,12 +67,8 @@
 
 	void CEquipment::init()
 	{
-		CStep* pStep = new CStep();
-		if (addStep(0x360, pStep) == 0) {
-			pStep->init();
-		}
-		else {
-			delete pStep;
+		for (auto item : m_mapStep) {
+			item.second->init();
 		}
 	}
 
@@ -244,13 +240,18 @@
 
 
 		// 以下根据信号做流程处理
+		CStep* pStep;
 
-		// Equipment Mode Change Report
-		index = 0x360;
-		bFlag = isBitOn(pszData, size, index);
-		CStep* pStep = getStep(0x360);
-		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 731fcf9..2bdbc4d 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -1,7 +1,9 @@
 #pragma once
 #include "Log.h"
 #include "CCLinkIEControl.h"
-#include "CStep.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 2bbfe86..5e0cb50 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -71,6 +71,66 @@
 			pEquipment->setStation(0, 255);
 			addEquipment(pEquipment);
 
+
+			// 添加 step
+			{
+				CEqModeStep* pStep = new CEqModeStep();
+				pStep->setWriteSignalDev(0x30);
+				pStep->setModeDev(0x4a8c);
+				if (pEquipment->addStep(0x360, pStep) != 0) {
+					delete pStep;
+				}
+			}
+			{
+				CEqStatusStep* pStep = new CEqStatusStep();
+				pStep->setWriteSignalDev(0x31);
+				pStep->setStatusDev(0x4a68);
+				if (pEquipment->addStep(0x361, pStep) != 0) {
+					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/CStep.cpp b/SourceCode/Bond/Servo/CStep.cpp
index 3873ddf..74e072c 100644
--- a/SourceCode/Bond/Servo/CStep.cpp
+++ b/SourceCode/Bond/Servo/CStep.cpp
@@ -7,8 +7,8 @@
 
 	unsigned __stdcall StepWorkThreadFunction(LPVOID lpParam)
 	{
-		CStep* pScale = (CStep*)lpParam;
-		return pScale->WorkingProc();
+		CStep* pStep = (CStep*)lpParam;
+		return pStep->WorkingProc();
 	}
 
 	CStep::CStep()
@@ -20,6 +20,7 @@
 		m_hSignalOff = ::CreateEvent(NULL, TRUE, FALSE, NULL);
 		m_nCurStep = 0;
 		m_pCclink = nullptr;
+		m_nWriteSignalDev = 0;
 		InitializeCriticalSection(&m_criticalSection);
 	}
 
@@ -39,6 +40,11 @@
 	void CStep::setCcLink(CCCLinkIEControl* pCcLink)
 	{
 		m_pCclink = pCcLink;
+	}
+
+	void CStep::setWriteSignalDev(int dev)
+	{
+		m_nWriteSignalDev = dev;
 	}
 
 	void CStep::init()
@@ -86,23 +92,20 @@
 				// 1.读取数据
 				nextStep();
 				ASSERT(m_pCclink);
-				StationIdentifier station(0, 255);
-				DWordContainer dc;
-				m_pCclink->ReadDWordData(station, DeviceType::W, 0x4a8c, 1, dc);
-				int nState = dc.at(0);
-				TRACE(">> nState:%d\n", nState);
+				onReadData();
+
 
 				// 2.给对方写ON
 				nextStep();
-				m_pCclink->SetBitDevice(station, DeviceType::B, 0x30);
+				m_pCclink->SetBitDevice(m_station, DeviceType::B, m_nWriteSignalDev);
 
 
 				// 3.等待对方OFF
 				nextStep();
 				int nStep3Ret = ::WaitForSingleObject(m_hSignalOff, TIMEOUT * 1000);
 				if (nStep3Ret == WAIT_TIMEOUT) {
-					timeout();
-					m_pCclink->ResetBitDevice(station, DeviceType::B, 0x30);
+					m_pCclink->ResetBitDevice(m_station, DeviceType::B, m_nWriteSignalDev);
+					onTimeout();
 					goto RESET;
 				}
 				ResetEvent(m_hSignalOff);
@@ -110,18 +113,12 @@
 
 				// 4.给对方写OFF
 				nextStep();
-				m_pCclink->ResetBitDevice(station, DeviceType::B, 0x30);
-				TRACE("m_nCurStep:%d\n", m_nCurStep);
-
-
-				// 5.对接CIM等
-				nextStep();
-				TRACE("m_nCurStep:%d\n", m_nCurStep);
+				m_pCclink->ResetBitDevice(m_station, DeviceType::B, m_nWriteSignalDev);
 
 
 				// 6.完成
 				nextStep();
-				TRACE("m_nCurStep:%d\n", m_nCurStep);
+				onComplete();
 			}
 		}
 
@@ -147,6 +144,21 @@
 		Unlock();
 	}
 
+	int CStep::onReadData()
+	{
+		return 0;
+	}
+
+	int CStep::onComplete()
+	{
+		return 0;
+	}
+
+	int CStep::onTimeout()
+	{
+		return 0;
+	}
+
 	void CStep::resetStep()
 	{
 		Lock();
@@ -159,11 +171,6 @@
 		Lock();
 		m_nCurStep++;
 		Unlock();
-	}
-
-	void CStep::timeout()
-	{
-		TRACE(">>>>>>>>>>>>>>>> timeout:%d\n", m_nCurStep);
 	}
 }
 
diff --git a/SourceCode/Bond/Servo/CStep.h b/SourceCode/Bond/Servo/CStep.h
index ec87aa0..052d4e4 100644
--- a/SourceCode/Bond/Servo/CStep.h
+++ b/SourceCode/Bond/Servo/CStep.h
@@ -12,18 +12,22 @@
 	public:
 		unsigned WorkingProc();
 		void setCcLink(CCCLinkIEControl* pCcLink);
+		virtual void setWriteSignalDev(int dev);
 		virtual void init();
 		virtual void CStep::term();
 		virtual void onSignal(BOOL bSignal);
+		virtual int onReadData();
+		virtual int onComplete();
+		virtual int onTimeout();
 
 	protected:
 		inline void Lock() { EnterCriticalSection(&m_criticalSection); }
 		inline void Unlock() { LeaveCriticalSection(&m_criticalSection); }
 		inline void nextStep();
 		inline void resetStep();
-		void timeout();
 
-	private:
+	protected:
+		StationIdentifier m_station;
 		CCCLinkIEControl* m_pCclink;
 		CRITICAL_SECTION m_criticalSection;
 		std::string strName;
@@ -33,6 +37,7 @@
 		HANDLE m_hSignalOn;
 		HANDLE m_hSignalOff;
 		int m_nCurStep;
+		int m_nWriteSignalDev;			// 对方BIT地址
 	};
 }
 
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index 2784b6e..1e7a588 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -201,6 +201,9 @@
     <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" />
     <ClInclude Include="DevicePropertyDlg.h" />
     <ClInclude Include="CEFEM.h" />
@@ -233,6 +236,9 @@
     <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" />
     <ClCompile Include="DevicePropertyDlg.cpp" />
     <ClCompile Include="CEFEM.cpp" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index 272d23b..842dad9 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -37,7 +37,9 @@
     <ClCompile Include="ToolUnits.cpp" />
     <ClCompile Include="DevicePropertyDlg.cpp" />
     <ClCompile Include="CStep.cpp" />
-    <ClCompile Include="AlarmDlg.cpp" />
+    <ClCompile Include="CEqModeStep.cpp" />
+    <ClCompile Include="CEqStatusStep.cpp" />
+    <ClCompile Include="CEqAlarmStep.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="AlarmManager.h" />
@@ -73,7 +75,9 @@
     <ClInclude Include="ToolUnits.h" />
     <ClInclude Include="DevicePropertyDlg.h" />
     <ClInclude Include="CStep.h" />
-    <ClInclude Include="AlarmDlg.h" />
+    <ClInclude Include="CEqModeStep.h" />
+    <ClInclude Include="CEqStatusStep.h" />
+    <ClInclude Include="CEqAlarmStep.h" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="Servo.rc" />

--
Gitblit v1.9.3