From 5b6e648814aa829706cb94e6c44766ee9a6d9f12 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 28 五月 2025 11:06:47 +0800
Subject: [PATCH] 1.机器槽位信息设计(CSlot)

---
 SourceCode/Bond/Servo/CArmTray.h                     |    1 
 SourceCode/Bond/Servo/CArm.cpp                       |    6 
 SourceCode/Bond/Servo/CVacuumBake.cpp                |   10 +
 SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h        |    2 
 SourceCode/Bond/Servo/CEFEM.h                        |    1 
 SourceCode/Bond/Servo/CBakeCooling.cpp               |    9 +
 SourceCode/Bond/Servo/CPath.h                        |    2 
 SourceCode/Bond/Servo/CPortStatusReport.h            |    2 
 SourceCode/Bond/Servo/CAligner.h                     |    1 
 SourceCode/Bond/Servo/CBonder.h                      |    1 
 SourceCode/Bond/Servo/CEqStatusStep.h                |    2 
 SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h   |    2 
 SourceCode/Bond/Servo/CEqCimModeChangeStep.h         |    2 
 SourceCode/Bond/Servo/CEqPortChangeStep.h            |    2 
 SourceCode/Bond/Servo/CLoadPort.cpp                  |   17 ++
 SourceCode/Bond/Servo/CMeasurement.h                 |    1 
 SourceCode/Bond/Servo/CSlot.h                        |   42 ++++++
 SourceCode/Bond/Servo/CEqModeChangeStep.h            |    2 
 SourceCode/Bond/Servo/CEqWriteStep.h                 |    2 
 SourceCode/Bond/Servo/CMeasurement.cpp               |    9 +
 SourceCode/Bond/Servo/Servo.vcxproj.filters          |    2 
 SourceCode/Bond/Servo/CJobDataB.h                    |    2 
 SourceCode/Bond/Servo/CVcrEventReport.h              |    2 
 SourceCode/Bond/Servo/CEFEM.cpp                      |    6 
 SourceCode/Bond/Servo/CEquipment.h                   |   14 +
 SourceCode/Bond/Servo/ServoCommo.h                   |    6 
 SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h       |    2 
 SourceCode/Bond/Servo/CEqCimMessageCmdStep.h         |    2 
 SourceCode/Bond/Servo/Servo.vcxproj                  |    2 
 SourceCode/Bond/Servo/CEqReadIntStep.h               |    2 
 SourceCode/Bond/Servo/CEqVcrEventStep.h              |    2 
 SourceCode/Bond/Servo/CJobDataS.h                    |    2 
 SourceCode/Bond/Servo/CFliper.cpp                    |   10 +
 SourceCode/Bond/Servo/CEqModeStep.h                  |    2 
 SourceCode/Bond/Servo/CMaster.h                      |    2 
 SourceCode/Bond/Servo/CEqAlarmStep.h                 |    2 
 SourceCode/Bond/Servo/CSlot.cpp                      |  104 ++++++++++++++
 SourceCode/Bond/Servo/CBakeCooling.h                 |    1 
 SourceCode/Bond/Servo/CEquipment.cpp                 |   48 ++++++
 SourceCode/Bond/Servo/CEqJobEventStep.h              |    2 
 SourceCode/Bond/Servo/CEqVCREnableStep.h             |    2 
 SourceCode/Bond/Servo/CArm.h                         |    1 
 SourceCode/Bond/Servo/CEqReadStep.h                  |    2 
 SourceCode/Bond/Servo/CGlassPool.h                   |    2 
 SourceCode/Bond/Servo/CLoadPort.h                    |    1 
 SourceCode/Bond/Servo/CProcessData.h                 |    2 
 SourceCode/Bond/Servo/CVacuumBake.h                  |    1 
 SourceCode/Bond/Servo/CAttributeVector.h             |    2 
 SourceCode/Bond/Servo/CAttribute.h                   |    2 
 SourceCode/Bond/Servo/CRobotTask.h                   |    2 
 SourceCode/Bond/Servo/CJobDataA.h                    |    2 
 SourceCode/Bond/Servo/CEqCimMessageClearStep.h       |    2 
 SourceCode/Bond/Servo/CAligner.cpp                   |    9 +
 SourceCode/Bond/Servo/CJobDataC.h                    |    2 
 SourceCode/Bond/Servo/CArmTray.cpp                   |    9 +
 SourceCode/Bond/Servo/CEqProcessStep.h               |    2 
 SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h |    2 
 SourceCode/Bond/Servo/CBonder.cpp                    |   15 ++
 SourceCode/Bond/Servo/CFliper.h                      |    1 
 SourceCode/Bond/Servo/Common.h                       |   28 ++--
 60 files changed, 370 insertions(+), 50 deletions(-)

diff --git a/SourceCode/Bond/Servo/CAligner.cpp b/SourceCode/Bond/Servo/CAligner.cpp
index e07f04e..f656bf6 100644
--- a/SourceCode/Bond/Servo/CAligner.cpp
+++ b/SourceCode/Bond/Servo/CAligner.cpp
@@ -39,6 +39,15 @@
 		addPin(SERVO::PinType::OUTPUT, _T("Out2"));
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CAligner::initSlots()
+	{
+		m_slot[0].enable();
+		m_slot[0].setPosition(m_nID);
+		m_slot[0].setNo(1);
+		m_slot[0].setName("Slot 1");
+	}
+
 	void CAligner::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CAligner.h b/SourceCode/Bond/Servo/CAligner.h
index 66ac974..d48eb87 100644
--- a/SourceCode/Bond/Servo/CAligner.h
+++ b/SourceCode/Bond/Servo/CAligner.h
@@ -15,6 +15,7 @@
         virtual void init();
         virtual void term();
         virtual void initPins();
+        virtual void initSlots();
         virtual void onTimer(UINT nTimerid);
         virtual void serialize(CArchive& ar);
         virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CArm.cpp b/SourceCode/Bond/Servo/CArm.cpp
index 064ab30..77e43d3 100644
--- a/SourceCode/Bond/Servo/CArm.cpp
+++ b/SourceCode/Bond/Servo/CArm.cpp
@@ -34,6 +34,12 @@
 
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CArm::initSlots()
+	{
+
+	}
+
 	void CArm::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CArm.h b/SourceCode/Bond/Servo/CArm.h
index 4a12834..cedb751 100644
--- a/SourceCode/Bond/Servo/CArm.h
+++ b/SourceCode/Bond/Servo/CArm.h
@@ -15,6 +15,7 @@
         virtual void init();
         virtual void term();
         virtual void initPins();
+        virtual void initSlots();
         virtual void onTimer(UINT nTimerid);
         virtual void serialize(CArchive& ar);
         virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CArmTray.cpp b/SourceCode/Bond/Servo/CArmTray.cpp
index ddb8b30..6e74681 100644
--- a/SourceCode/Bond/Servo/CArmTray.cpp
+++ b/SourceCode/Bond/Servo/CArmTray.cpp
@@ -34,6 +34,15 @@
 
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CArmTray::initSlots()
+	{
+		m_slot[0].enable();
+		m_slot[0].setPosition(m_nID);
+		m_slot[0].setNo(1);
+		m_slot[0].setName("Slot 1");
+	}
+
 	void CArmTray::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CArmTray.h b/SourceCode/Bond/Servo/CArmTray.h
index 8a08cf0..7da5d54 100644
--- a/SourceCode/Bond/Servo/CArmTray.h
+++ b/SourceCode/Bond/Servo/CArmTray.h
@@ -14,6 +14,7 @@
         virtual void init();
         virtual void term();
         virtual void initPins();
+        virtual void initSlots();
         virtual void onTimer(UINT nTimerid);
         virtual void serialize(CArchive& ar);
         virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CAttribute.h b/SourceCode/Bond/Servo/CAttribute.h
index ee5098b..b91e6cc 100644
--- a/SourceCode/Bond/Servo/CAttribute.h
+++ b/SourceCode/Bond/Servo/CAttribute.h
@@ -7,7 +7,7 @@
 	public:
 		CAttribute();
 		CAttribute(const char* pszName, const char* pszValue, const char* pszDescription, unsigned int weight);
-		~CAttribute();
+		virtual ~CAttribute();
 
 	public:
 		std::string& getName();
diff --git a/SourceCode/Bond/Servo/CAttributeVector.h b/SourceCode/Bond/Servo/CAttributeVector.h
index fdbb30a..f4cb330 100644
--- a/SourceCode/Bond/Servo/CAttributeVector.h
+++ b/SourceCode/Bond/Servo/CAttributeVector.h
@@ -8,7 +8,7 @@
 	{
 	public:
 		CAttributeVector();
-		~CAttributeVector();
+		virtual ~CAttributeVector();
 
 	public:
 		void addAttribute(CAttribute* pAttribute, BOOL bReplace = FALSE);
diff --git a/SourceCode/Bond/Servo/CBakeCooling.cpp b/SourceCode/Bond/Servo/CBakeCooling.cpp
index 96367ba..7d91de0 100644
--- a/SourceCode/Bond/Servo/CBakeCooling.cpp
+++ b/SourceCode/Bond/Servo/CBakeCooling.cpp
@@ -38,6 +38,15 @@
 		addPin(SERVO::PinType::OUTPUT, _T("Out"));
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CBakeCooling::initSlots()
+	{
+		m_slot[0].enable();
+		m_slot[0].setPosition(m_nID);
+		m_slot[0].setNo(1);
+		m_slot[0].setName("Slot 1");
+	}
+
 	void CBakeCooling::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CBakeCooling.h b/SourceCode/Bond/Servo/CBakeCooling.h
index bea7a17..6ecf093 100644
--- a/SourceCode/Bond/Servo/CBakeCooling.h
+++ b/SourceCode/Bond/Servo/CBakeCooling.h
@@ -15,6 +15,7 @@
         virtual void init();
         virtual void term();
         virtual void initPins();
+        virtual void initSlots();
         virtual void onTimer(UINT nTimerid);
         virtual void serialize(CArchive& ar);
         virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CBonder.cpp b/SourceCode/Bond/Servo/CBonder.cpp
index f485a94..87f4a7d 100644
--- a/SourceCode/Bond/Servo/CBonder.cpp
+++ b/SourceCode/Bond/Servo/CBonder.cpp
@@ -336,6 +336,21 @@
 		}
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CBonder::initSlots()
+	{
+		m_slot[0].enable();
+		m_slot[0].setPosition(m_nID);
+		m_slot[0].setNo(1);
+		m_slot[0].setName("Slot 1(G1)");
+		m_slot[0].setType(MaterialsType::G1);
+		m_slot[1].enable();
+		m_slot[1].setPosition(m_nID);
+		m_slot[1].setNo(2);
+		m_slot[1].setName("Slot 2(G2)");
+		m_slot[1].setType(MaterialsType::G2);
+	}
+
 	void CBonder::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CBonder.h b/SourceCode/Bond/Servo/CBonder.h
index f24e05b..90acdfc 100644
--- a/SourceCode/Bond/Servo/CBonder.h
+++ b/SourceCode/Bond/Servo/CBonder.h
@@ -16,6 +16,7 @@
         virtual void term();
         virtual void initPins();
         virtual void initSteps();
+        virtual void initSlots();
         virtual void onTimer(UINT nTimerid);
         virtual void serialize(CArchive& ar);
         virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEFEM.cpp b/SourceCode/Bond/Servo/CEFEM.cpp
index 3918098..ec044d2 100644
--- a/SourceCode/Bond/Servo/CEFEM.cpp
+++ b/SourceCode/Bond/Servo/CEFEM.cpp
@@ -628,6 +628,12 @@
 		}
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CEFEM::initSlots()
+	{
+
+	}
+
 	void CEFEM::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CEFEM.h b/SourceCode/Bond/Servo/CEFEM.h
index 997f22d..3e10d3f 100644
--- a/SourceCode/Bond/Servo/CEFEM.h
+++ b/SourceCode/Bond/Servo/CEFEM.h
@@ -20,6 +20,7 @@
         virtual void term();
         virtual void initPins();
         virtual void initSteps();
+        virtual void initSlots();
         virtual void onTimer(UINT nTimerid);
         virtual void serialize(CArchive& ar);
         virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqAlarmStep.h b/SourceCode/Bond/Servo/CEqAlarmStep.h
index 7c33958..b00c538 100644
--- a/SourceCode/Bond/Servo/CEqAlarmStep.h
+++ b/SourceCode/Bond/Servo/CEqAlarmStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqAlarmStep();
-		~CEqAlarmStep();
+		virtual ~CEqAlarmStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h b/SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h
index e86ca92..97e2d62 100644
--- a/SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h
+++ b/SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h
@@ -8,7 +8,7 @@
 	{
 	public:
 		CEqCassetteCtrlCmdStep();
-		~CEqCassetteCtrlCmdStep();
+		virtual ~CEqCassetteCtrlCmdStep();
 
 	public:
 		void setCtrlCmdDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h b/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h
index a069226..c136522 100644
--- a/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h
+++ b/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqCassetteTransferStateStep();
-		~CEqCassetteTransferStateStep();
+		virtual ~CEqCassetteTransferStateStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqCimMessageClearStep.h b/SourceCode/Bond/Servo/CEqCimMessageClearStep.h
index b4306f9..3f2f391 100644
--- a/SourceCode/Bond/Servo/CEqCimMessageClearStep.h
+++ b/SourceCode/Bond/Servo/CEqCimMessageClearStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqCimMessageClearStep();
-		~CEqCimMessageClearStep();
+		virtual ~CEqCimMessageClearStep();
 
 	public:
 		void setClearCimMessageDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqCimMessageCmdStep.h b/SourceCode/Bond/Servo/CEqCimMessageCmdStep.h
index 61378ed..fb29f6c 100644
--- a/SourceCode/Bond/Servo/CEqCimMessageCmdStep.h
+++ b/SourceCode/Bond/Servo/CEqCimMessageCmdStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqCimMessageCmdStep();
-		~CEqCimMessageCmdStep();
+		virtual ~CEqCimMessageCmdStep();
 
 	public:
 		void setCimMessageDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqCimModeChangeStep.h b/SourceCode/Bond/Servo/CEqCimModeChangeStep.h
index 22afc6a..c014de0 100644
--- a/SourceCode/Bond/Servo/CEqCimModeChangeStep.h
+++ b/SourceCode/Bond/Servo/CEqCimModeChangeStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqCimModeChangeStep();
-		~CEqCimModeChangeStep();
+		virtual ~CEqCimModeChangeStep();
 
 	public:
 		void setCimModeDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h b/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h
index 7e05701..54cd8e1 100644
--- a/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h
+++ b/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqCurrentRecipeChangeStep();
-		~CEqCurrentRecipeChangeStep();
+		virtual ~CEqCurrentRecipeChangeStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h b/SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h
index b110a05..ea7a070 100644
--- a/SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h
+++ b/SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqDateTimeSetCmdStep();
-		~CEqDateTimeSetCmdStep();
+		virtual ~CEqDateTimeSetCmdStep();
 
 	public:
 		void setDateTimeDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqJobEventStep.h b/SourceCode/Bond/Servo/CEqJobEventStep.h
index 71eb425..c0cbace 100644
--- a/SourceCode/Bond/Servo/CEqJobEventStep.h
+++ b/SourceCode/Bond/Servo/CEqJobEventStep.h
@@ -8,7 +8,7 @@
 	{
 	public:
 		CEqJobEventStep();
-		~CEqJobEventStep();
+		virtual ~CEqJobEventStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqModeChangeStep.h b/SourceCode/Bond/Servo/CEqModeChangeStep.h
index 420014d..6531261 100644
--- a/SourceCode/Bond/Servo/CEqModeChangeStep.h
+++ b/SourceCode/Bond/Servo/CEqModeChangeStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqModeChangeStep();
-		~CEqModeChangeStep();
+		virtual ~CEqModeChangeStep();
 
 	public:
 		void setEqModeDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqModeStep.h b/SourceCode/Bond/Servo/CEqModeStep.h
index 1bc611d..cfd461c 100644
--- a/SourceCode/Bond/Servo/CEqModeStep.h
+++ b/SourceCode/Bond/Servo/CEqModeStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqModeStep();
-		~CEqModeStep();
+		virtual ~CEqModeStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqPortChangeStep.h b/SourceCode/Bond/Servo/CEqPortChangeStep.h
index 27f7a99..b1b3598 100644
--- a/SourceCode/Bond/Servo/CEqPortChangeStep.h
+++ b/SourceCode/Bond/Servo/CEqPortChangeStep.h
@@ -6,7 +6,7 @@
 	{
 	public:
 		CEqPortChangeStep();
-		~CEqPortChangeStep();
+		virtual ~CEqPortChangeStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqProcessStep.h b/SourceCode/Bond/Servo/CEqProcessStep.h
index d16a5a0..972b6c2 100644
--- a/SourceCode/Bond/Servo/CEqProcessStep.h
+++ b/SourceCode/Bond/Servo/CEqProcessStep.h
@@ -8,7 +8,7 @@
 	{
 	public:
 		CEqProcessStep();
-		~CEqProcessStep();
+		virtual ~CEqProcessStep();
 
 	public:
 		void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqReadIntStep.h b/SourceCode/Bond/Servo/CEqReadIntStep.h
index b3206c0..6c6589a 100644
--- a/SourceCode/Bond/Servo/CEqReadIntStep.h
+++ b/SourceCode/Bond/Servo/CEqReadIntStep.h
@@ -11,7 +11,7 @@
 	public:
 		CEqReadIntStep();
 		CEqReadIntStep(int dataType, int dev);
-		~CEqReadIntStep();
+		virtual ~CEqReadIntStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqReadStep.h b/SourceCode/Bond/Servo/CEqReadStep.h
index 567f1cf..bab69cd 100644
--- a/SourceCode/Bond/Servo/CEqReadStep.h
+++ b/SourceCode/Bond/Servo/CEqReadStep.h
@@ -18,7 +18,7 @@
 	public:
 		CEqReadStep();
 		CEqReadStep(int dev, size_t readSize, ONREAD onReadBlock);
-		~CEqReadStep();
+		virtual ~CEqReadStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqStatusStep.h b/SourceCode/Bond/Servo/CEqStatusStep.h
index f99e813..3423e84 100644
--- a/SourceCode/Bond/Servo/CEqStatusStep.h
+++ b/SourceCode/Bond/Servo/CEqStatusStep.h
@@ -10,7 +10,7 @@
 	{
 	public:
 		CEqStatusStep();
-		~CEqStatusStep();
+		virtual ~CEqStatusStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqVCREnableStep.h b/SourceCode/Bond/Servo/CEqVCREnableStep.h
index ebd605d..c4065eb 100644
--- a/SourceCode/Bond/Servo/CEqVCREnableStep.h
+++ b/SourceCode/Bond/Servo/CEqVCREnableStep.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CEqVCREnableStep();
-		~CEqVCREnableStep();
+		virtual ~CEqVCREnableStep();
 
 	public:
 		void setEqVCRModeDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqVcrEventStep.h b/SourceCode/Bond/Servo/CEqVcrEventStep.h
index b7b64a4..6e510a0 100644
--- a/SourceCode/Bond/Servo/CEqVcrEventStep.h
+++ b/SourceCode/Bond/Servo/CEqVcrEventStep.h
@@ -8,7 +8,7 @@
 	{
 	public:
 		CEqVcrEventStep();
-		~CEqVcrEventStep();
+		virtual ~CEqVcrEventStep();
 
 	public:
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqWriteStep.h b/SourceCode/Bond/Servo/CEqWriteStep.h
index 602408b..2ec74ba 100644
--- a/SourceCode/Bond/Servo/CEqWriteStep.h
+++ b/SourceCode/Bond/Servo/CEqWriteStep.h
@@ -13,7 +13,7 @@
 	{
 	public:
 		CEqWriteStep();
-		~CEqWriteStep();
+		virtual ~CEqWriteStep();
 
 	public:
 		void setDataDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index 9a6ebfc..d8cad41 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -1170,6 +1170,54 @@
 		return 0;
 	}
 
+	CSlot* CEquipment::getAvailableSlot()
+	{
+		for (int i = 0; i < SLOT_MAX; i++) {
+			if (!m_slot[i].isEnable()) continue;
+			if (m_slot[i].isLock()) continue;
+			if (!m_slot[i].isEmpty()) continue;
+
+			return &m_slot[i];
+		}
+
+		return nullptr;
+	}
+
+	CSlot* CEquipment::getEmptySlot(MaterialsType type)
+	{
+		for (int i = 0; i < SLOT_MAX; i++) {
+			if (!m_slot[i].isEnable()) continue;
+			if (m_slot[i].isLock()) continue;
+			if (!m_slot[i].isEmpty()) continue;
+
+			MaterialsType slotType = m_slot[i].getType();
+			if (type == MaterialsType::G1 && slotType == MaterialsType::G2) continue;
+			if (type == MaterialsType::G2 && slotType == MaterialsType::G1) continue;
+
+			return &m_slot[i];
+		}
+
+		return nullptr;
+	}
+
+	CSlot* CEquipment::getNonEmptySlot(MaterialsType putSlotType)
+	{
+		for (int i = 0; i < SLOT_MAX; i++) {
+			if (!m_slot[i].isEnable()) continue;
+			if (m_slot[i].isLock()) continue;
+			CGlass* pGlass = (CGlass*)m_slot[i].getContext();
+			if (pGlass == nullptr) continue;
+
+			MaterialsType glassType = pGlass->getType();
+			if (glassType == MaterialsType::G1 && putSlotType == MaterialsType::G2) continue;
+			if (glassType == MaterialsType::G2 && putSlotType == MaterialsType::G1) continue;
+
+			return &m_slot[i];
+		}
+
+		return nullptr;
+	}
+
 	short CEquipment::decodeRecipeListReport(const char* pszData, size_t size)
 	{
 		return m_recipesManager.decodeRecipeListReport(pszData, size);
diff --git a/SourceCode/Bond/Servo/CEquipment.h b/SourceCode/Bond/Servo/CEquipment.h
index c1d73c7..7bdc2b8 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -34,9 +34,11 @@
 #include "CJobDataS.h"
 #include "CProcessData.h"
 #include "CPortStatusReport.h"
+#include "CSlot.h"
 
 
 namespace SERVO {
+#define SLOT_MAX		12
 
 	typedef std::function<void(void* pEiuipment, BOOL bAlive)> ONALIVE;
 	typedef std::function<void(void* pEiuipment, int code)> ONDATACHANGED;
@@ -89,6 +91,7 @@
 		virtual void term();
 		virtual void initPins() = 0;
 		virtual void initSteps();
+		virtual void initSlots() = 0;
 		virtual void onTimer(UINT nTimerid);
 		virtual void serialize(CArchive& ar);
 		virtual void onReceiveLBData(const char* pszData, size_t size);
@@ -145,9 +148,17 @@
 		// unitNo: 0:local; Others:unit No
 		int recipeParameterRequest(short masterRecipeId, short localRecipeId, short unitNo);
 
+		// 获取一个可用的槽位
+		CSlot* getAvailableSlot();
+
+		// 获取一个指定物料类型(G1,G2,G1&G2)的空槽位
+		CSlot* getEmptySlot(MaterialsType type);
+
+		// 获取一个指定物料类型(G1,G2,G1&G2)的非空槽位
+		CSlot* getNonEmptySlot(MaterialsType type);
+
 	public:
 		BOOL isGlassListEmpty();
-
 
 	// 以下为从CC-Link读取到的Bit标志位检测函数
 	public:
@@ -209,6 +220,7 @@
 		std::map<unsigned int, CStep*> m_mapStep;
 		int m_nBaseAlarmId;
 		CRecipesManager m_recipesManager;
+		CSlot m_slot[SLOT_MAX];
 
 	private:
 		CEquipment* m_pArm;
diff --git a/SourceCode/Bond/Servo/CFliper.cpp b/SourceCode/Bond/Servo/CFliper.cpp
index 891aac4..7322d95 100644
--- a/SourceCode/Bond/Servo/CFliper.cpp
+++ b/SourceCode/Bond/Servo/CFliper.cpp
@@ -38,6 +38,16 @@
 		addPin(SERVO::PinType::OUTPUT, _T("Out"));
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CFliper::initSlots()
+	{
+		m_slot[0].enable();
+		m_slot[0].setPosition(m_nID);
+		m_slot[0].setNo(1);
+		m_slot[0].setName("Slot 1(G2)");
+		m_slot[0].setType(MaterialsType::G2);
+	}
+
 	void CFliper::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CFliper.h b/SourceCode/Bond/Servo/CFliper.h
index 4d3c859..fb4df7e 100644
--- a/SourceCode/Bond/Servo/CFliper.h
+++ b/SourceCode/Bond/Servo/CFliper.h
@@ -15,6 +15,7 @@
         virtual void init();
         virtual void term();
         virtual void initPins();
+        virtual void initSlots();
         virtual void onTimer(UINT nTimerid);
         virtual void serialize(CArchive& ar);
         virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CGlassPool.h b/SourceCode/Bond/Servo/CGlassPool.h
index c6e53a9..79cfda6 100644
--- a/SourceCode/Bond/Servo/CGlassPool.h
+++ b/SourceCode/Bond/Servo/CGlassPool.h
@@ -9,7 +9,7 @@
 	{
 	public:
 		CGlassPool();
-		~CGlassPool();
+		virtual ~CGlassPool();
 
 	public:
 		void initPool();
diff --git a/SourceCode/Bond/Servo/CJobDataA.h b/SourceCode/Bond/Servo/CJobDataA.h
index c3879d4..4599707 100644
--- a/SourceCode/Bond/Servo/CJobDataA.h
+++ b/SourceCode/Bond/Servo/CJobDataA.h
@@ -8,7 +8,7 @@
 	{
 	public:
 		CJobDataA();
-		~CJobDataA();
+		virtual ~CJobDataA();
 
 	public:
 		short getPortNo();
diff --git a/SourceCode/Bond/Servo/CJobDataB.h b/SourceCode/Bond/Servo/CJobDataB.h
index 34945c5..703eae5 100644
--- a/SourceCode/Bond/Servo/CJobDataB.h
+++ b/SourceCode/Bond/Servo/CJobDataB.h
@@ -8,7 +8,7 @@
 	public:
 		CJobDataB();
 		CJobDataB::CJobDataB(CJobDataB&& other) noexcept;
-		~CJobDataB();
+		virtual ~CJobDataB();
 
 	public:
 		void copy(CJobDataB* pScr);
diff --git a/SourceCode/Bond/Servo/CJobDataC.h b/SourceCode/Bond/Servo/CJobDataC.h
index 6b8189f..5562466 100644
--- a/SourceCode/Bond/Servo/CJobDataC.h
+++ b/SourceCode/Bond/Servo/CJobDataC.h
@@ -6,7 +6,7 @@
 	{
 	public:
 		CJobDataC();
-		~CJobDataC();
+		virtual ~CJobDataC();
 
 	public:
 		int getCassetteSequenceNo();
diff --git a/SourceCode/Bond/Servo/CJobDataS.h b/SourceCode/Bond/Servo/CJobDataS.h
index 8f5bae6..9dda64a 100644
--- a/SourceCode/Bond/Servo/CJobDataS.h
+++ b/SourceCode/Bond/Servo/CJobDataS.h
@@ -9,7 +9,7 @@
 	public:
 		CJobDataS();
 		CJobDataS::CJobDataS(CJobDataS&& other) noexcept;
-		~CJobDataS();
+		virtual ~CJobDataS();
 
 	public:
 		void copy(CJobDataS* pScr);
diff --git a/SourceCode/Bond/Servo/CLoadPort.cpp b/SourceCode/Bond/Servo/CLoadPort.cpp
index a61e86e..c98dede 100644
--- a/SourceCode/Bond/Servo/CLoadPort.cpp
+++ b/SourceCode/Bond/Servo/CLoadPort.cpp
@@ -55,6 +55,23 @@
 		addPin(SERVO::PinType::OUTPUT, _T("Out2"));
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CLoadPort::initSlots()
+	{
+		m_slot[0].enable();
+		m_slot[0].setPosition(m_nID);
+		m_slot[0].setNo(1);
+		m_slot[0].setName("Slot 1");
+		m_slot[1].enable();
+		m_slot[1].setPosition(m_nID);
+		m_slot[1].setNo(2);
+		m_slot[1].setName("Slot 2");
+		m_slot[2].setPosition(m_nID);
+		m_slot[2].enable();
+		m_slot[2].setNo(3);
+		m_slot[2].setName("Slot 3");
+	}
+
 	void CLoadPort::initSteps()
 	{
 		CEquipment::initSteps();
diff --git a/SourceCode/Bond/Servo/CLoadPort.h b/SourceCode/Bond/Servo/CLoadPort.h
index 3156830..92adfc8 100644
--- a/SourceCode/Bond/Servo/CLoadPort.h
+++ b/SourceCode/Bond/Servo/CLoadPort.h
@@ -17,6 +17,7 @@
 		virtual void term();
 		virtual void initPins();
 		virtual void initSteps();
+		virtual void initSlots();
 		virtual void onTimer(UINT nTimerid);
 		virtual void serialize(CArchive& ar);
 		virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CMaster.h b/SourceCode/Bond/Servo/CMaster.h
index e6cf6fa..2a2b9c0 100644
--- a/SourceCode/Bond/Servo/CMaster.h
+++ b/SourceCode/Bond/Servo/CMaster.h
@@ -43,7 +43,7 @@
     {
     public:
         CMaster();
-        ~CMaster();
+        virtual ~CMaster();
 
 
     public:
diff --git a/SourceCode/Bond/Servo/CMeasurement.cpp b/SourceCode/Bond/Servo/CMeasurement.cpp
index f659453..c74db1e 100644
--- a/SourceCode/Bond/Servo/CMeasurement.cpp
+++ b/SourceCode/Bond/Servo/CMeasurement.cpp
@@ -38,6 +38,15 @@
 		addPin(SERVO::PinType::OUTPUT, _T("Out2"));
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CMeasurement::initSlots()
+	{
+		m_slot[0].enable();
+		m_slot[0].setPosition(m_nID);
+		m_slot[0].setNo(1);
+		m_slot[0].setName("Slot 1");
+	}
+
 	void CMeasurement::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CMeasurement.h b/SourceCode/Bond/Servo/CMeasurement.h
index b6d87bb..896d889 100644
--- a/SourceCode/Bond/Servo/CMeasurement.h
+++ b/SourceCode/Bond/Servo/CMeasurement.h
@@ -15,6 +15,7 @@
         virtual void init();
         virtual void term();
         virtual void initPins();
+        virtual void initSlots();
         virtual void onTimer(UINT nTimerid);
         virtual void serialize(CArchive& ar);
         virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CPath.h b/SourceCode/Bond/Servo/CPath.h
index b9dcf5f..f61c4c3 100644
--- a/SourceCode/Bond/Servo/CPath.h
+++ b/SourceCode/Bond/Servo/CPath.h
@@ -7,7 +7,7 @@
 	public:
 		CPath();
 		CPath(unsigned int nSiteId);
-		~CPath();
+		virtual ~CPath();
 
 	public:
 		void getDescription(std::string& strOut);
diff --git a/SourceCode/Bond/Servo/CPortStatusReport.h b/SourceCode/Bond/Servo/CPortStatusReport.h
index 4aede52..21d5048 100644
--- a/SourceCode/Bond/Servo/CPortStatusReport.h
+++ b/SourceCode/Bond/Servo/CPortStatusReport.h
@@ -9,7 +9,7 @@
 	{
 	public:
 		CPortStatusReport();
-		~CPortStatusReport();
+		virtual ~CPortStatusReport();
 
 	public:
 		void copyEx(CPortStatusReport& other);
diff --git a/SourceCode/Bond/Servo/CProcessData.h b/SourceCode/Bond/Servo/CProcessData.h
index 37b0866..2bae1aa 100644
--- a/SourceCode/Bond/Servo/CProcessData.h
+++ b/SourceCode/Bond/Servo/CProcessData.h
@@ -8,7 +8,7 @@
 	{
 	public:
 		CProcessData();
-		~CProcessData();
+		virtual ~CProcessData();
 
 	public:
 		std::string& getGlassId();
diff --git a/SourceCode/Bond/Servo/CRobotTask.h b/SourceCode/Bond/Servo/CRobotTask.h
index 1f109a3..54e847b 100644
--- a/SourceCode/Bond/Servo/CRobotTask.h
+++ b/SourceCode/Bond/Servo/CRobotTask.h
@@ -7,7 +7,7 @@
 	{
 	public:
 		CRobotTask();
-		~CRobotTask();
+		virtual ~CRobotTask();
 
 	public:
 		std::string& getId();
diff --git a/SourceCode/Bond/Servo/CSlot.cpp b/SourceCode/Bond/Servo/CSlot.cpp
new file mode 100644
index 0000000..0a254cb
--- /dev/null
+++ b/SourceCode/Bond/Servo/CSlot.cpp
@@ -0,0 +1,104 @@
+#include "stdafx.h"
+#include "CSlot.h"
+
+
+namespace SERVO {
+	CSlot::CSlot()
+	{
+		m_nNo = 0;
+		m_materialsType = MaterialsType::G1G2;
+		m_pContext = nullptr;
+		m_bEnable = FALSE;
+		m_bLock = FALSE;
+	}
+
+	CSlot::~CSlot()
+	{
+
+	}
+
+	BOOL CSlot::isEnable()
+	{
+		return m_bEnable;
+	}
+
+	void CSlot::enable()
+	{
+		m_bEnable = TRUE;
+	}
+
+	void CSlot::disable()
+	{
+		m_bEnable = FALSE;
+	}
+
+	BOOL CSlot::isLock()
+	{
+		return m_bLock;
+	}
+
+	void CSlot::lock()
+	{
+		m_bLock = TRUE;
+	}
+
+	void CSlot::unlock()
+	{
+		m_bLock = FALSE;
+	}
+
+	int CSlot::getPosition()
+	{
+		return m_nPosition;
+	}
+
+	void CSlot::setPosition(int position)
+	{
+		m_nPosition = position;
+	}
+
+	int CSlot::getNo()
+	{
+		return m_nNo;
+	}
+
+	void CSlot::setNo(int no)
+	{
+		m_nNo = no;
+	}
+
+	MaterialsType CSlot::getType()
+	{
+		return m_materialsType;
+	}
+
+	void CSlot::setType(MaterialsType type)
+	{
+		m_materialsType = type;
+	}
+
+	std::string& CSlot::getName()
+	{
+		return m_strName;
+	}
+
+	void CSlot::setName(const char* pszName)
+	{
+		m_strName = pszName;
+	}
+
+	BOOL CSlot::isEmpty()
+	{
+		return m_pContext == nullptr;
+	}
+
+	CContext* CSlot::getContext()
+	{
+		return m_pContext;
+	}
+
+	void CSlot::setContext(CContext* pContext)
+	{
+		m_pContext = pContext;
+	}
+}
diff --git a/SourceCode/Bond/Servo/CSlot.h b/SourceCode/Bond/Servo/CSlot.h
new file mode 100644
index 0000000..f7445aa
--- /dev/null
+++ b/SourceCode/Bond/Servo/CSlot.h
@@ -0,0 +1,42 @@
+#pragma once
+#include "Context.h"
+#include "ServoCommo.h"
+
+
+namespace SERVO {
+	class CSlot
+	{
+	public:
+		CSlot();
+		virtual ~CSlot();
+
+	public:
+		BOOL isEnable();
+		void enable();
+		void disable();
+		BOOL isLock();
+		void lock();
+		void unlock();
+		int getPosition();
+		void setPosition(int position);
+		int getNo();
+		void setNo(int no);
+		MaterialsType getType();
+		void setType(MaterialsType type);
+		std::string& getName();
+		void setName(const char* pszName);
+		BOOL isEmpty();
+		CContext* getContext();
+		void setContext(CContext* pContext);
+
+	private:
+		int m_nPosition;
+		int m_nNo;
+		MaterialsType m_materialsType;
+		std::string m_strName;
+		CContext* m_pContext;
+		BOOL m_bEnable;
+		BOOL m_bLock;
+	};
+}
+
diff --git a/SourceCode/Bond/Servo/CVacuumBake.cpp b/SourceCode/Bond/Servo/CVacuumBake.cpp
index 790e3e3..e9a1c9c 100644
--- a/SourceCode/Bond/Servo/CVacuumBake.cpp
+++ b/SourceCode/Bond/Servo/CVacuumBake.cpp
@@ -38,6 +38,16 @@
 		addPin(SERVO::PinType::OUTPUT, _T("Out"));
 	}
 
+	// 必须要实现的虚函数,在此初始化Slot信息
+	void CVacuumBake::initSlots()
+	{
+		m_slot[0].enable();
+		m_slot[0].setPosition(m_nID);
+		m_slot[0].setNo(1);
+		m_slot[0].setName("Slot 1(G1)");
+		m_slot[0].setType(MaterialsType::G1);
+	}
+
 	void CVacuumBake::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CVacuumBake.h b/SourceCode/Bond/Servo/CVacuumBake.h
index ef0e1ea..4530b42 100644
--- a/SourceCode/Bond/Servo/CVacuumBake.h
+++ b/SourceCode/Bond/Servo/CVacuumBake.h
@@ -15,6 +15,7 @@
         virtual void init();
         virtual void term();
         virtual void initPins();
+        virtual void initSlots();
         virtual void onTimer(UINT nTimerid);
         virtual void serialize(CArchive& ar);
         virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CVcrEventReport.h b/SourceCode/Bond/Servo/CVcrEventReport.h
index 8ff3992..409a1f4 100644
--- a/SourceCode/Bond/Servo/CVcrEventReport.h
+++ b/SourceCode/Bond/Servo/CVcrEventReport.h
@@ -8,7 +8,7 @@
 	{
 	public:
 		CVcrEventReport();
-		~CVcrEventReport();
+		virtual ~CVcrEventReport();
 
 	public:
 		std::string& getGlassId();
diff --git a/SourceCode/Bond/Servo/Common.h b/SourceCode/Bond/Servo/Common.h
index 8b7e4c0..df10509 100644
--- a/SourceCode/Bond/Servo/Common.h
+++ b/SourceCode/Bond/Servo/Common.h
@@ -60,22 +60,22 @@
 #define BTN_ALARM_BKGND_PRESS			RGB(133, 203, 225)
 
 /* Equipment ID */
-#define EQ_ID_EFEM				1
-#define EQ_ID_Bonder1			2
-#define EQ_ID_Bonder2			3
-#define EQ_ID_LOADPORT1			4
-#define EQ_ID_LOADPORT2			5
-#define EQ_ID_LOADPORT3			6
-#define EQ_ID_LOADPORT4			7
+#define EQ_ID_LOADPORT1			1
+#define EQ_ID_LOADPORT2			2
+#define EQ_ID_LOADPORT3			3
+#define EQ_ID_LOADPORT4			4
+#define EQ_ID_ARM_TRAY1			5
+#define EQ_ID_ARM_TRAY2			6
+#define EQ_ID_ALIGNER			7
 #define EQ_ID_FLIPER			8
 #define EQ_ID_VACUUMBAKE		9
-#define EQ_ID_ALIGNER			10
-#define EQ_ID_BAKE_COOLING		11
-#define EQ_ID_MEASUREMENT		12
-#define EQ_ID_ARM				13
-#define EQ_ID_ARM_TRAY1			14
-#define EQ_ID_ARM_TRAY2			15
-#define EQ_ID_OPERATOR_REMOVE	999
+#define EQ_ID_Bonder1			10
+#define EQ_ID_Bonder2			11
+#define EQ_ID_BAKE_COOLING		12
+#define EQ_ID_MEASUREMENT		13
+#define EQ_ID_EFEM				100
+#define EQ_ID_ARM				101
+#define EQ_ID_OPERATOR_REMOVE	102
 
 
 /* step name */
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index 795cd89..fd45b3b 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -206,6 +206,7 @@
     <ClInclude Include="CPagePortStatus.h" />
     <ClInclude Include="CPortStatusReport.h" />
     <ClInclude Include="CRobotTask.h" />
+    <ClInclude Include="CSlot.h" />
     <ClInclude Include="HorizontalLine.h" />
     <ClInclude Include="JobSlotGrid.h" />
     <ClInclude Include="MsgDlg.h" />
@@ -317,6 +318,7 @@
     <ClCompile Include="CPagePortStatus.cpp" />
     <ClCompile Include="CPortStatusReport.cpp" />
     <ClCompile Include="CRobotTask.cpp" />
+    <ClCompile Include="CSlot.cpp" />
     <ClCompile Include="HorizontalLine.cpp" />
     <ClCompile Include="JobSlotGrid.cpp" />
     <ClCompile Include="MsgDlg.cpp" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index 368a060..9823fe9 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -116,6 +116,7 @@
     <ClCompile Include="HorizontalLine.cpp" />
     <ClCompile Include="CMyStatusbar.cpp" />
     <ClCompile Include="CRobotTask.cpp" />
+    <ClCompile Include="CSlot.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="AlarmManager.h" />
@@ -231,6 +232,7 @@
     <ClInclude Include="HorizontalLine.h" />
     <ClInclude Include="CMyStatusbar.h" />
     <ClInclude Include="CRobotTask.h" />
+    <ClInclude Include="CSlot.h" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="Servo.rc" />
diff --git a/SourceCode/Bond/Servo/ServoCommo.h b/SourceCode/Bond/Servo/ServoCommo.h
index 5cfc30d..2444aca 100644
--- a/SourceCode/Bond/Servo/ServoCommo.h
+++ b/SourceCode/Bond/Servo/ServoCommo.h
@@ -27,9 +27,9 @@
 	};
 
 	enum class MaterialsType {
-		G1 = 0,
-		G2 = 1,
-		G1G2 = 2
+		G1 = 1,
+		G2 = 2,
+		G1G2 = 3
 	};
 	typedef MaterialsType CassetteType;
 

--
Gitblit v1.9.3