From d38d98d99e873d0a48e75aa9f8472cff4574c132 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 30 四月 2025 17:46:50 +0800
Subject: [PATCH] 1.添加CEqReadStep, 以后大部分读数据可能要使用这个类,可以简单程序。 2.文档;
---
Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.5(5).xlsx | 0
SourceCode/Bond/Servo/Servo.vcxproj | 4
Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.5(4).xlsx | 0
SourceCode/Bond/Servo/CLoadPort.h | 1
SourceCode/Bond/Servo/CEFEM.h | 1
SourceCode/Bond/Servo/CLoadPort.cpp | 114 ++++
SourceCode/Bond/Servo/CEqWriteStep.h | 32 +
SourceCode/Bond/Servo/Servo.vcxproj.filters | 4
SourceCode/Bond/Servo/CEqWriteStep.cpp | 66 ++
SourceCode/Bond/Servo/CEquipment.cpp | 30 +
SourceCode/Bond/Servo/CEFEM.cpp | 237 ++++++++++
SourceCode/Bond/Servo/CMaster.cpp | 504 ---------------------
SourceCode/Bond/Servo/CEqReadStep.cpp | 82 +++
SourceCode/Bond/Servo/CEquipment.h | 8
SourceCode/Bond/Servo/CBonder.h | 8
SourceCode/Bond/Servo/CBonder.cpp | 209 +++++++++
SourceCode/Bond/Servo/CEqReadStep.h | 35 +
SourceCode/Bond/Servo/Common.h | 4
18 files changed, 828 insertions(+), 511 deletions(-)
diff --git "a/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.5\0504\051.xlsx" "b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.5\0504\051.xlsx"
new file mode 100644
index 0000000..0a62420
--- /dev/null
+++ "b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.5\0504\051.xlsx"
Binary files differ
diff --git "a/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.5\0505\051.xlsx" "b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.5\0505\051.xlsx"
new file mode 100644
index 0000000..35d3f51
--- /dev/null
+++ "b/Document/ESWIN_EAS_Bonder_Inline_Mapping_Address_v1.1.5\0505\051.xlsx"
Binary files differ
diff --git a/SourceCode/Bond/Servo/CBonder.cpp b/SourceCode/Bond/Servo/CBonder.cpp
index 1bb185f..5276f30 100644
--- a/SourceCode/Bond/Servo/CBonder.cpp
+++ b/SourceCode/Bond/Servo/CBonder.cpp
@@ -5,7 +5,7 @@
namespace SERVO {
CBonder::CBonder() : CEquipment()
{
-
+ m_nIndex = 0;
}
CBonder::~CBonder()
@@ -38,6 +38,203 @@
addPin(SERVO::PinType::OUTPUT, _T("Out"));
}
+ void CBonder::initSteps()
+ {
+ CEquipment::initSteps();
+
+
+ {
+ // eq mode
+ CEqModeStep* pStep = new CEqModeStep();
+ pStep->setName(STEP_MODE);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x350 : 0x650);
+ pStep->setModeDev(m_nIndex == 0 ? 0x9d7d : 0xdd7d);
+ if (addStep(STEP_ID_EQMODE_CHANGED, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // eq status
+ CEqStatusStep* pStep = new CEqStatusStep();
+ pStep->setName(STEP_STATUS);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x351 : 0x651);
+ pStep->setStatusDev(m_nIndex == 0 ? 0x9d59 : 0xdd59);
+ if (addStep(STEP_ID_EQSTATUS_CHANGED, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // Eq Alarm
+ static char* pszName[] = { STEP_ALARM_BLOCK1, STEP_ALARM_BLOCK2, STEP_ALARM_BLOCK3, STEP_ALARM_BLOCK4, STEP_ALARM_BLOCK5 };
+ static int dev[2][5] = { { 0x9f0e , 0x9f3b, 0x9f68, 0x9f95, 0x9fc2 },
+ { 0xdf0e , 0xdf3b, 0xdf68, 0xdf95, 0xdfc2 } };
+ static int writeSignalDev[2][5] = { { 0x352, 0x353, 0x354, 0x355, 0x356 },
+ { 0x652, 0x653, 0x654, 0x655, 0x656 } };
+ static int addr[] = { STEP_ID_EQALARM1, STEP_ID_EQALARM2, STEP_ID_EQALARM3, STEP_ID_EQALARM4, STEP_ID_EQALARM5 };
+
+ for (int i = 0; i < 5; i++) {
+ CEqAlarmStep* pStep = new CEqAlarmStep();
+ pStep->setName(pszName[i]);
+ pStep->setWriteSignalDev(writeSignalDev[m_nIndex][i]);
+ pStep->setAlarmDev(dev[m_nIndex][i]);
+ if (addStep(addr[i], pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ }
+
+ {
+ // eq process
+ CEqProcessStep* pStep = new CEqProcessStep();
+ pStep->setName(STEP_PROCESS);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x357 : 0x657);
+ pStep->setProcessDev(m_nIndex == 0 ? 0xab55 : 0xeb55);
+ if (addStep(STEP_ID_PROCESS_DATA_REPORT, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // eq cim mode change
+ CEqCimModeChangeStep* pStep = new CEqCimModeChangeStep();
+ pStep->setName(STEP_CIM_MODE_CHANGE);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x370 : 0x670);
+ pStep->setCimModeDev(m_nIndex == 0 ? 0x965 : 0x12b5);
+ if (addStep(STEP_ID_CIMMODE_CHANGED_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // eq cim message cmd
+ CEqCimMessageCmdStep* pStep = new CEqCimMessageCmdStep();
+ pStep->setName(STEP_CIM_MESSAGE_CMD);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x371 : 0x671);
+ pStep->setCimMessageDev(m_nIndex == 0 ? 0x950 : 0x12a0);
+ if (addStep(STEP_ID_CIM_MSG_SET_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // eq current recipe change
+ CEqCurrentRecipeChangeStep* pStep = new CEqCurrentRecipeChangeStep();
+ pStep->setName(STEP_EQ_RURRENT_RECIPE_CHANGE);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x348 : 0x648);
+ pStep->setDataDev(m_nIndex == 0 ? 0xa850 : 0xe850);
+ if (addStep(STEP_ID_CURRENT_RECIPE_CHANGE_REPORT, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // CIM Message Confirm
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, m_nIndex == 0 ? 0x9d80 : 0xdd80);
+ pStep->setName(STEP_EQ_CIM_MESSAGE_CONFIRM);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x359 : 0x659);
+ if (addStep(STEP_ID_CIM_MSG_CONFIRM_REPORT, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ CEqCimMessageClearStep* pStep = new CEqCimMessageClearStep();
+ pStep->setName(STEP_CIM_MESSAGE_CLEAR);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x372 : 0x672);
+ pStep->setClearCimMessageDev(m_nIndex == 0 ? 0x963 : 0x12b3);
+ if (addStep(STEP_ID_CIM_MSG_CLEAR_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+
+ {
+ CEqDateTimeSetCmdStep* pStep = new CEqDateTimeSetCmdStep();
+ pStep->setName(STEP_DATETIME_SET_CMD);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x373 : 0x673);
+ pStep->setDateTimeDev(m_nIndex == 0 ? 0x966 : 0x12b6);
+ if (addStep(STEP_ID_DATETIME_SET_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ CEqModeChangeStep* pStep = new CEqModeChangeStep();
+ pStep->setName(STEP_EQ_MODE_CHANGE);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x375 : 0x675);
+ pStep->setEqModeDev(m_nIndex == 0 ? 0x96E : 0x12be);
+ if (addStep(STEP_ID_EQMODE_CHANGE_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // 请求主配方列表的step
+ CEqWriteStep* pStep = new CEqWriteStep();
+ pStep->setName(STEP_EQ_MASTER_RECIPE_LIST_REQ);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x366 : 0x666);
+ pStep->setDataDev(m_nIndex == 0 ? 0x125a : 0x1baa);
+ if (addStep(STEP_ID_MASTER_RECIPE_LIST_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // master recipe list report
+ CEqReadStep* pStep = new CEqReadStep(m_nIndex == 0 ? 0xa955 : 0xe955, 255 * 2,
+ [&](int code, const char* pszData, size_t size) -> int {
+ if (code == ROK && pszData != nullptr && size > 0) {
+ // 此处解释配方数据
+ }
+ });
+ pStep->setName(STEP_EQ_MASTER_RECIPE_LIST);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x34b : 0x64b);
+ if (addStep(STEP_ID_MASTER_RECIPE_LIST_REPORT, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ CEqJobEventStep* pStep = new CEqJobEventStep();
+ pStep->setName(STEP_EQ_RECEIVED_JOB_UPS1);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x300 : 0x600);
+ pStep->setJobDataDev(m_nIndex == 0 ? 0x8c90 : 0xcc90);
+ if (addStep(STEP_ID_RECIVE_JOB_UPS1, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqJobEventStep* pStep = new CEqJobEventStep();
+ pStep->setName(STEP_EQ_RECEIVED_JOB_UPS2);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x301 : 0x601);
+ pStep->setJobDataDev(m_nIndex == 0 ? 0x8dd0 : 0xcdd0);
+ if (addStep(STEP_ID_RECIVE_JOB_UPS2, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqJobEventStep* pStep = new CEqJobEventStep();
+ pStep->setName(STEP_EQ_SENT_OUT_JOB_DOWNS1);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x310 : 0x610);
+ pStep->setJobDataDev(m_nIndex == 0 ? 0x8000 : 0xc000);
+ if (addStep(STEP_ID_SENT_OUT_JOB_DOWNS1, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ {
+ CEqJobEventStep* pStep = new CEqJobEventStep();
+ pStep->setName(STEP_EQ_SENT_OUT_JOB_DOWNS2);
+ pStep->setWriteSignalDev(m_nIndex == 0 ? 0x311 : 0x611);
+ pStep->setJobDataDev(m_nIndex == 0 ? 0x8140 : 0xc140);
+ if (addStep(STEP_ID_SENT_OUT_JOB_DOWNS2, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ }
+
void CBonder::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
@@ -67,4 +264,14 @@
return m_glassList.empty();
}
+
+ void CBonder::setIndex(unsigned int index)
+ {
+ m_nIndex = index;
+ }
+
+ unsigned int CBonder::getIndex()
+ {
+ return m_nIndex;
+ }
}
diff --git a/SourceCode/Bond/Servo/CBonder.h b/SourceCode/Bond/Servo/CBonder.h
index e6f9843..04785d3 100644
--- a/SourceCode/Bond/Servo/CBonder.h
+++ b/SourceCode/Bond/Servo/CBonder.h
@@ -15,11 +15,19 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSteps();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
virtual int recvIntent(CPin* pPin, CIntent* pIntent);
virtual BOOL glassWillArrive(CGlass* pGlass);
+
+ public:
+ void setIndex(unsigned int index);
+ unsigned int getIndex();
+
+ private:
+ unsigned int m_nIndex;
};
}
diff --git a/SourceCode/Bond/Servo/CEFEM.cpp b/SourceCode/Bond/Servo/CEFEM.cpp
index 635b445..4520495 100644
--- a/SourceCode/Bond/Servo/CEFEM.cpp
+++ b/SourceCode/Bond/Servo/CEFEM.cpp
@@ -2,6 +2,16 @@
#include "CEFEM.h"
+#define ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(name,ws,index,psd) { \
+ CEqCassetteTransferStateStep* pStep = new CEqCassetteTransferStateStep(); \
+ pStep->setName(name); \
+ pStep->setWriteSignalDev(ws); \
+ pStep->setPortStatusDev(psd); \
+ if (addStep(index, pStep) != 0) { \
+ delete pStep; \
+ } \
+}
+
namespace SERVO {
CEFEM::CEFEM() : CEquipment()
{
@@ -46,6 +56,226 @@
LOGI("<CEFEM>initPins");
}
+ void CEFEM::initSteps()
+ {
+ CEquipment::initSteps();
+
+
+ {
+ // Eq mode
+ CEqModeStep* pStep = new CEqModeStep();
+ pStep->setName(STEP_MODE);
+ pStep->setWriteSignalDev(0x50);
+ pStep->setModeDev(0x5d7d);
+ if (addStep(STEP_ID_EQMODE_CHANGED, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // Eq Status
+ CEqStatusStep* pStep = new CEqStatusStep();
+ pStep->setName(STEP_STATUS);
+ pStep->setWriteSignalDev(0x51);
+ pStep->setStatusDev(0x5d59);
+ if (addStep(STEP_ID_EQSTATUS_CHANGED, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // Eq Alarm
+ static char* pszName[] = { STEP_ALARM_BLOCK1, STEP_ALARM_BLOCK2, STEP_ALARM_BLOCK3, STEP_ALARM_BLOCK4, STEP_ALARM_BLOCK5 };
+ static int dev[] = { 0x5f0e , 0x5f3b, 0x5f68, 0x5f95, 0x5fc2 };
+ static int writeSignalDev[] = { 0x52, 0x53, 0x54, 0x55, 0x56 };
+ static int addr[] = { STEP_ID_EQALARM1, STEP_ID_EQALARM2, STEP_ID_EQALARM3, STEP_ID_EQALARM4, STEP_ID_EQALARM5 };
+
+ for (int i = 0; i < 5; i++) {
+ CEqAlarmStep* pStep = new CEqAlarmStep();
+ pStep->setName(pszName[i]);
+ pStep->setWriteSignalDev(writeSignalDev[i]);
+ pStep->setAlarmDev(dev[i]);
+ if (addStep(addr[i], pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ }
+
+ {
+ // eq process
+ CEqProcessStep* pStep = new CEqProcessStep();
+ pStep->setName(STEP_PROCESS);
+ pStep->setWriteSignalDev(0x57);
+ pStep->setProcessDev(0x6b55);
+ if (addStep(STEP_ID_PROCESS_DATA_REPORT, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // eq cim mode change
+ CEqCimModeChangeStep* pStep = new CEqCimModeChangeStep();
+ pStep->setName(STEP_CIM_MODE_CHANGE);
+ pStep->setWriteSignalDev(0x70);
+ pStep->setCimModeDev(0x15);
+ if (addStep(STEP_ID_CIMMODE_CHANGED_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // eq cim message
+ CEqCimMessageCmdStep* pStep = new CEqCimMessageCmdStep();
+ pStep->setName(STEP_CIM_MESSAGE_CMD);
+ pStep->setWriteSignalDev(0x71);
+ pStep->setCimMessageDev(0x0);
+ if (addStep(STEP_ID_CIM_MSG_SET_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+
+ {
+ // CIM Message Confirm
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x5f80);
+ pStep->setName(STEP_EQ_CIM_MESSAGE_CONFIRM);
+ pStep->setWriteSignalDev(0x59);
+ if (addStep(STEP_ID_CIM_MSG_CONFIRM_REPORT, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // VCR1 Event Report
+ CEqVcrEventStep* pStep = new CEqVcrEventStep();
+ pStep->setName(STEP_EQ_VCR1_EVENT_REPORT);
+ pStep->setWriteSignalDev(0x4a);
+ pStep->setReturnDev(0x91e);
+ pStep->setVcrEventReportDev(0x5fef);
+ if (addStep(STEP_ID_VCR1_EVENT_REPORT, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // eq cim message clear
+ CEqCimMessageClearStep* pStep = new CEqCimMessageClearStep();
+ pStep->setName(STEP_CIM_MESSAGE_CLEAR);
+ pStep->setWriteSignalDev(0x72);
+ pStep->setClearCimMessageDev(0x13);
+ if (addStep(STEP_ID_CIM_MSG_CLEAR_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // datetime set cmd
+ CEqDateTimeSetCmdStep* pStep = new CEqDateTimeSetCmdStep();
+ pStep->setName(STEP_DATETIME_SET_CMD);
+ pStep->setWriteSignalDev(0x73);
+ pStep->setDateTimeDev(0x16);
+ if (addStep(STEP_ID_DATETIME_SET_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // vcr enable
+ CEqVCREnableStep* pStep = new CEqVCREnableStep();
+ pStep->setName(STEP_EQ_VCR_ENABLE);
+ pStep->setWriteSignalDev(0x74);
+ pStep->setEqVCRModeDev(0x1F);
+ if (addStep(STEP_ID_VCR_ENABLE_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // eq mode change
+ CEqModeChangeStep* pStep = new CEqModeChangeStep();
+ pStep->setName(STEP_EQ_MODE_CHANGE);
+ pStep->setWriteSignalDev(0x75);
+ pStep->setEqModeDev(0x1E);
+ if (addStep(STEP_ID_EQMODE_CHANGE_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // current recipe change
+ CEqCurrentRecipeChangeStep* pStep = new CEqCurrentRecipeChangeStep();
+ pStep->setName(STEP_EQ_RURRENT_RECIPE_CHANGE);
+ pStep->setWriteSignalDev(0x48);
+ pStep->setDataDev(0x6850);
+ if (addStep(STEP_ID_CURRENT_RECIPE_CHANGE_REPORT, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+
+ {
+ // 请求主配方列表的step
+ CEqWriteStep* pStep = new CEqWriteStep();
+ pStep->setName(STEP_EQ_MASTER_RECIPE_LIST_REQ);
+ pStep->setWriteSignalDev(0x66);
+ pStep->setDataDev(0x90a);
+ if (addStep(STEP_ID_MASTER_RECIPE_LIST_CMD_REPLY, pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ // CEqCassetteTranserStateStep
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_EMPTY, 0xd8,
+ STEP_ID_PORT1_CASSETTIE_EMPTY, 0x6050);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_LOAD_EADY, 0xe0,
+ STEP_ID_PORT1_CASSETTIE_LOAD_READY, 0x6050);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_LOADED, 0xe8,
+ STEP_ID_PORT1_CASSETTIE_LOADED, 0x6050);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_INUSE, 0xf0,
+ STEP_ID_PORT1_CASSETTIE_INUSE, 0x6050);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_UNLOAD_EADY, 0xf8,
+ STEP_ID_PORT1_CASSETTIE_UNLOAD_READY, 0x60f50);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_BLOCKED, 0x100,
+ STEP_ID_PORT1_CASSETTIE_BLOCKED, 0x6050);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_EMPTY, 0xd9,
+ STEP_ID_PORT2_CASSETTIE_EMPTY, 0x6070);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_LOAD_EADY, 0xe1,
+ STEP_ID_PORT2_CASSETTIE_LOAD_READY, 0x6070);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_LOADED, 0xe9,
+ STEP_ID_PORT2_CASSETTIE_LOADED, 0x6070);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_INUSE, 0xf1,
+ STEP_ID_PORT2_CASSETTIE_INUSE, 0x6070);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_UNLOAD_EADY, 0xf9,
+ STEP_ID_PORT2_CASSETTIE_UNLOAD_READY, 0x6070);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_BLOCKED, 0x101,
+ STEP_ID_PORT2_CASSETTIE_BLOCKED, 0x6070);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_EMPTY, 0xda,
+ STEP_ID_PORT3_CASSETTIE_EMPTY, 0x6090);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_LOAD_EADY, 0xe2,
+ STEP_ID_PORT3_CASSETTIE_LOAD_READY, 0x6090);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_LOADED, 0xea,
+ STEP_ID_PORT3_CASSETTIE_INUSE, 0x6090);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_INUSE, 0xf2,
+ STEP_ID_PORT3_CASSETTIE_INUSE, 0x6090);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_UNLOAD_EADY, 0xfa,
+ STEP_ID_PORT3_CASSETTIE_UNLOAD_READY, 0x6090);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_BLOCKED, 0x102,
+ STEP_ID_PORT3_CASSETTIE_BLOCKED, 0x6090);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_EMPTY, 0xdb,
+ STEP_ID_PORT4_CASSETTIE_EMPTY, 0x60b0);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_LOAD_EADY, 0xe3,
+ STEP_ID_PORT4_CASSETTIE_LOAD_READY, 0x60b0);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_LOADED, 0xeb,
+ STEP_ID_PORT4_CASSETTIE_LOADED, 0x60b0);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_INUSE, 0xf3,
+ STEP_ID_PORT4_CASSETTIE_INUSE, 0x60b0);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_UNLOAD_EADY, 0xfb,
+ STEP_ID_PORT4_CASSETTIE_UNLOAD_READY, 0x60b0);
+ ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_BLOCKED, 0x103,
+ STEP_ID_PORT4_CASSETTIE_BLOCKED, 0x60b0);
+ }
+
int CEFEM::onStepEvent(CStep* pStep, int code)
{
int nRet = CEquipment::onStepEvent(pStep, code);
@@ -58,13 +288,6 @@
if (id == STEP_ID_PORT1_CASSETTIE_EMPTY) {
}
-/*
- #define STEP_ID_PORT1_CASSETTIE_LOAD_READY 0x420
- #define STEP_ID_PORT1_CASSETTIE_LOADED 0x428
- #define STEP_ID_PORT1_CASSETTIE_INUSE 0x430
- #define STEP_ID_PORT1_CASSETTIE_UNLOAD_READY 0x438
- #define STEP_ID_PORT1_CASSETTIE_BLOCKED 0x440
-*/
}
}
diff --git a/SourceCode/Bond/Servo/CEFEM.h b/SourceCode/Bond/Servo/CEFEM.h
index 034c571..2d7cc4b 100644
--- a/SourceCode/Bond/Servo/CEFEM.h
+++ b/SourceCode/Bond/Servo/CEFEM.h
@@ -16,6 +16,7 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSteps();
virtual int onStepEvent(CStep* pStep, int code);
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
diff --git a/SourceCode/Bond/Servo/CEqReadStep.cpp b/SourceCode/Bond/Servo/CEqReadStep.cpp
new file mode 100644
index 0000000..854338e
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqReadStep.cpp
@@ -0,0 +1,82 @@
+#include "stdafx.h"
+#include "CEqReadStep.h"
+#include "Log.h"
+
+
+namespace SERVO {
+ CEqReadStep::CEqReadStep() : CReadStep()
+ {
+ m_nDataDev = 0;
+ m_nReadSize = 0;
+ m_onReadBlock = nullptr;
+ }
+
+ CEqReadStep::CEqReadStep(int dev, size_t readSize, ONREAD onReadBlock)
+ {
+ m_nDataDev = dev;
+ m_nReadSize = readSize;
+ m_onReadBlock = onReadBlock;
+ }
+
+ CEqReadStep::~CEqReadStep()
+ {
+
+ }
+
+ void CEqReadStep::getAttributeVector(CAttributeVector& attrubutes)
+ {
+ CReadStep::getAttributeVector(attrubutes);
+
+ std::string strTemp;
+ attrubutes.addAttribute(new CAttribute("Dev",
+ ("W" + CToolUnits::toHexString(m_nDataDev, strTemp)).c_str(), ""));
+ }
+
+ int CEqReadStep::onReadData()
+ {
+ CReadStep::onReadData();
+
+
+ char szBuffer[READ_BUFFER_MAX];
+ int nRet = m_pCclink->ReadData2(m_station, DeviceType::W, m_nDataDev,
+ (long)min(READ_BUFFER_MAX, m_nReadSize), szBuffer);
+ if (0 != nRet) {
+ LOGI("<CEqReadStep>Read data error.");
+ if (m_onReadBlock != nullptr) {
+ m_onReadBlock(RERROR, nullptr, 0);
+ }
+ return -1;
+ }
+
+ LOGI("<CEqReadStep>read data succeed.");
+ if (m_onReadBlock != nullptr) {
+ m_onReadBlock(ROK, szBuffer, m_nReadSize);
+ }
+
+
+ return 0;
+ }
+
+ int CEqReadStep::onComplete()
+ {
+ CReadStep::onComplete();
+ LOGI("<CEqReadStep> onComplete.");
+ if (m_onReadBlock != nullptr) {
+ m_onReadBlock(RCOMPLETE, nullptr, 0);
+ }
+
+ return 0;
+ }
+
+ int CEqReadStep::onTimeout()
+ {
+ CReadStep::onTimeout();
+ LOGI("<CEqReadStep> onTimeout.");
+ if (m_onReadBlock != nullptr) {
+ m_onReadBlock(RTIMEOUT, nullptr, 0);
+ }
+
+ return 0;
+ }
+}
+
diff --git a/SourceCode/Bond/Servo/CEqReadStep.h b/SourceCode/Bond/Servo/CEqReadStep.h
new file mode 100644
index 0000000..fa9a2b3
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqReadStep.h
@@ -0,0 +1,35 @@
+#pragma once
+#include "CReadStep.h"
+#include <functional>
+
+
+#define READ_BUFFER_MAX 1024
+
+#define ROK 0 /* 读数据OK */
+#define RTIMEOUT -1 /* 读数据超时 */
+#define RERROR -2 /* 读数据出错 */
+#define RCOMPLETE 1 /* 读数据流程完成 */
+
+namespace SERVO {
+ typedef std::function<int(int code, const char* pszData, size_t size)> ONREAD;
+
+ class CEqReadStep : public CReadStep
+ {
+ public:
+ CEqReadStep();
+ CEqReadStep(int dev, size_t readSize, ONREAD onReadBlock);
+ ~CEqReadStep();
+
+ public:
+ virtual void getAttributeVector(CAttributeVector& attrubutes);
+ virtual int onReadData();
+ virtual int onComplete();
+ virtual int onTimeout();
+
+ private:
+ ONREAD m_onReadBlock;
+ int m_nDataDev;
+ size_t m_nReadSize;
+ };
+}
+
diff --git a/SourceCode/Bond/Servo/CEqWriteStep.cpp b/SourceCode/Bond/Servo/CEqWriteStep.cpp
new file mode 100644
index 0000000..da4a0cc
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqWriteStep.cpp
@@ -0,0 +1,66 @@
+#include "stdafx.h"
+#include "CEqWriteStep.h"
+
+
+namespace SERVO {
+ CEqWriteStep::CEqWriteStep() : CWriteStep()
+ {
+ m_nDataDev = 0;
+ m_onWritedBlock = nullptr;
+ }
+
+ CEqWriteStep::~CEqWriteStep()
+ {
+
+ }
+
+ void CEqWriteStep::setDataDev(int nDev)
+ {
+ m_nDataDev = nDev;
+ }
+
+ int CEqWriteStep::writeShort(short value, ONWRITED onWritedBlock/* = nullptr*/)
+ {
+ m_onWritedBlock = onWritedBlock;
+ return writeData(m_nDataDev, (const char*)&value, sizeof(short));
+ }
+
+ int CEqWriteStep::writeInt(int value, ONWRITED onWritedBlock/* = nullptr*/)
+ {
+ m_onWritedBlock = onWritedBlock;
+ return writeData(m_nDataDev, (const char*)&value, sizeof(int));
+ }
+
+ int CEqWriteStep::writeDataEx(const char* pszData, int size, ONWRITED onWritedBlock/* = nullptr*/)
+ {
+ m_onWritedBlock = onWritedBlock;
+ return writeData(m_nDataDev, pszData, size);
+ }
+
+ void CEqWriteStep::getAttributeVector(CAttributeVector& attrubutes)
+ {
+ CWriteStep::getAttributeVector(attrubutes);
+
+ std::string strTemp;
+ attrubutes.addAttribute(new CAttribute("Data Dev",
+ ("W" + CToolUnits::toHexString(m_nDataDev, strTemp)).c_str(), ""));
+ }
+
+ int CEqWriteStep::onComplete()
+ {
+ if (m_onWritedBlock != nullptr) {
+ m_onWritedBlock(WOK);
+ }
+
+ return 0;
+ }
+
+ int CEqWriteStep::onTimeout()
+ {
+ if (m_onWritedBlock != nullptr) {
+ m_onWritedBlock(WTIMEOUT);
+ }
+
+ return 0;
+ }
+}
diff --git a/SourceCode/Bond/Servo/CEqWriteStep.h b/SourceCode/Bond/Servo/CEqWriteStep.h
new file mode 100644
index 0000000..602408b
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqWriteStep.h
@@ -0,0 +1,32 @@
+#pragma once
+#include "CWriteStep.h"
+#include <functional>
+
+
+#define WOK 0
+#define WTIMEOUT -1
+
+namespace SERVO {
+ typedef std::function<int(int code)> ONWRITED;
+
+ class CEqWriteStep : public CWriteStep
+ {
+ public:
+ CEqWriteStep();
+ ~CEqWriteStep();
+
+ public:
+ void setDataDev(int nDev);
+ virtual void getAttributeVector(CAttributeVector& attrubutes);
+ int writeShort(short value, ONWRITED onWritedBlock = nullptr);
+ int writeInt(int value, ONWRITED onWritedBlock = nullptr);
+ int writeDataEx(const char* pszData, int size, ONWRITED onWritedBlock = nullptr);
+ virtual int onComplete();
+ virtual int onTimeout();
+
+ private:
+ int m_nDataDev;
+ ONWRITED m_onWritedBlock;
+ };
+}
+
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index d18f1d8..aaf7662 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -132,6 +132,7 @@
void CEquipment::init()
{
initPins();
+ initSteps();
for (auto item : m_mapStep) {
item.second->init();
}
@@ -142,6 +143,11 @@
for (auto item : m_mapStep) {
item.second->term();
}
+ }
+
+ void CEquipment::initSteps()
+ {
+
}
void CEquipment::setID(int nID)
@@ -394,6 +400,9 @@
// EQ mode change cmd reply
CHECK_WRITE_STEP_SIGNAL(STEP_ID_EQMODE_CHANGE_CMD_REPLY, pszData, size);
+
+ // EQ Master recipe request cmd reply
+ CHECK_WRITE_STEP_SIGNAL(STEP_ID_MASTER_RECIPE_LIST_CMD_REPLY, pszData, size);
// CIM Message Confirm
CHECK_READ_STEP_SIGNAL(STEP_ID_CIM_MSG_CONFIRM_REPORT, pszData, size);
@@ -869,4 +878,25 @@
return pStep->setDateTime(year, month, day, hour, minute, second);
}
+
+ int CEquipment::masterRecipeListRequest(short unitNo)
+ {
+ SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(STEP_EQ_MASTER_RECIPE_LIST_REQ);
+ if (pStep == nullptr) {
+ return -1;
+ }
+
+ LOGI("<CEquipment-%s>正在请求单元<%d>主配方列表", m_strName.c_str(), unitNo);
+ pStep->writeShort(unitNo, [&](int code) -> int {
+ if (code == WOK) {
+ LOGI("<CEquipment-%s>请求单元<%d>主配方列表成功,正在等待数据.", m_strName.c_str(), unitNo);
+ }
+ else {
+ LOGI("<CEquipment-%s>请求单元<%d>主配方列表失败,code:%d", m_strName.c_str(), unitNo, code);
+ }
+
+ return 0;
+ });
+ return 0;
+ }
}
\ No newline at end of file
diff --git a/SourceCode/Bond/Servo/CEquipment.h b/SourceCode/Bond/Servo/CEquipment.h
index ba1416f..e16140a 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -20,6 +20,8 @@
#include "CEqJobEventStep.h"
#include "CEqVcrEventStep.h"
#include "CEqCurrentRecipeChangeStep.h"
+#include "CEqWriteStep.h"
+#include "CEqReadStep.h"
#include <vector>
#include <map>
#include <list>
@@ -94,6 +96,7 @@
virtual void init();
virtual void term();
virtual void initPins() = 0;
+ virtual void initSteps();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void onReceiveLBData(const char* pszData, size_t size);
@@ -124,6 +127,11 @@
int setCimMessage(const char* pszMessage, short id, short nTouchPanelNo);
int clearCimMessage(short id, short nTouchPanelNo);
int setDateTime(short year, short month, short day, short hour, short minute, short second);
+
+ // 请求主配方列表
+ // unitNo: 0:local; Others:unit No
+ int masterRecipeListRequest(short unitNo);
+
// 以下为从CC-Link读取到的Bit标志位检测函数
public:
diff --git a/SourceCode/Bond/Servo/CLoadPort.cpp b/SourceCode/Bond/Servo/CLoadPort.cpp
index a51e99c..32ee535 100644
--- a/SourceCode/Bond/Servo/CLoadPort.cpp
+++ b/SourceCode/Bond/Servo/CLoadPort.cpp
@@ -53,6 +53,120 @@
addPin(SERVO::PinType::OUTPUT, _T("Out2"));
}
+ void CLoadPort::initSteps()
+ {
+ CEquipment::initSteps();
+
+
+ ASSERT(m_nIndex == 0 || m_nIndex == 1 || m_nIndex == 2 || m_nIndex == 3);
+
+ {
+ // Cassette Ctrl Cmd
+ static char* pszName[] = { STEP_EQ_P1_CASSETTE_CTRL_CMD, STEP_EQ_P2_CASSETTE_CTRL_CMD, STEP_EQ_P3_CASSETTE_CTRL_CMD, STEP_EQ_P4_CASSETTE_CTRL_CMD };
+ static int writeSignalDev[] = { 0x120, 0x121, 0x122, 0x123 };
+ static int dev[] = { 0x45, 0x1a5, 0x305, 0x465 };
+ static int addr[] = { 0x480, 0x481, 0x482, 0x483 };
+
+ CEqCassetteCtrlCmdStep* pStep = new CEqCassetteCtrlCmdStep();
+ pStep->setName(pszName[m_nIndex]);
+ pStep->setWriteSignalDev(writeSignalDev[m_nIndex]);
+ pStep->setCtrlCmdDev(dev[m_nIndex]);
+ if (addStep(addr[m_nIndex], pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // Type
+ static char* pszName[] = { STEP_EQ_PORT1_TYPE, STEP_EQ_PORT2_TYPE, STEP_EQ_PORT3_TYPE, STEP_EQ_PORT4_TYPE };
+ static int dev[] = { 0x6010 , 0x6020, 0x6030, 0x6040 };
+ static int writeSignalDev[] = { 0xa0, 0xa1, 0xa2, 0xa3 };
+ static int addr[] = { STEP_ID_PORT1_TYPE_CHANGE, STEP_ID_PORT2_TYPE_CHANGE, STEP_ID_PORT3_TYPE_CHANGE, STEP_ID_PORT4_TYPE_CHANGE };
+
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[m_nIndex]);
+ pStep->setName(pszName[m_nIndex]);
+ pStep->setWriteSignalDev(writeSignalDev[m_nIndex]);
+ if (addStep(addr[m_nIndex], pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // Mode
+ static char* pszName[] = { STEP_EQ_PORT1_MODE, STEP_EQ_PORT2_MODE, STEP_EQ_PORT3_MODE, STEP_EQ_PORT4_MODE };
+ static int dev[] = { 0x6011, 0x6021, 0x6031, 0x6041 };
+ static int writeSignalDev[] = { 0xa8, 0xa9, 0xaa, 0xab };
+ static int addr[] = { STEP_ID_PORT1_MODE_CHANGE, STEP_ID_PORT2_MODE_CHANGE, STEP_ID_PORT3_MODE_CHANGE, STEP_ID_PORT4_MODE_CHANGE };
+
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[m_nIndex]);
+ pStep->setName(pszName[m_nIndex]);
+ pStep->setWriteSignalDev(writeSignalDev[m_nIndex]);
+ if (addStep(addr[m_nIndex], pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // Cassette type
+ static char* pszName[] = { STEP_EQ_PORT1_CASSETTE_TYPE, STEP_EQ_PORT2_CASSETTE_TYPE, STEP_EQ_PORT3_CASSETTE_TYPE, STEP_EQ_PORT4_CASSETTE_TYPE };
+ static int dev[] = { 0x6012, 0x6022, 0x6032, 0x6042 };
+ static int writeSignalDev[] = { 0xb0, 0xb1, 0xb2, 0xb3 };
+ static int addr[] = { STEP_ID_PORT1_CASSETTE_TYPE_CHANGE, STEP_ID_PORT2_CASSETTE_TYPE_CHANGE, STEP_ID_PORT3_CASSETTE_TYPE_CHANGE, STEP_ID_PORT4_CASSETTE_TYPE_CHANGE };
+
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[m_nIndex]);
+ pStep->setName(pszName[m_nIndex]);
+ pStep->setWriteSignalDev(writeSignalDev[m_nIndex]);
+ if (addStep(addr[m_nIndex], pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // Transfer type
+ static char* pszName[] = { STEP_EQ_PORT1_TRANSFER_MODE, STEP_EQ_PORT2_TRANSFER_MODE, STEP_EQ_PORT3_TRANSFER_MODE, STEP_EQ_PORT4_TRANSFER_MODE };
+ static int dev[] = { 0x6014, 0x6024, 0x6034, 0x6044 };
+ static int writeSignalDev[] = { 0xb8, 0xb9, 0xba, 0xbb };
+ static int addr[] = { STEP_ID_PORT1_TRANSFER_MODE_CHANGE, STEP_ID_PORT2_TRANSFER_MODE_CHANGE, STEP_ID_PORT3_TRANSFER_MODE_CHANGE, STEP_ID_PORT4_TRANSFER_MODE_CHANGE };
+
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[m_nIndex]);
+ pStep->setName(pszName[m_nIndex]);
+ pStep->setWriteSignalDev(writeSignalDev[m_nIndex]);
+ if (addStep(addr[m_nIndex], pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // Port enable
+ static char* pszName[] = { STEP_EQ_PORT1_ENABLE, STEP_EQ_PORT2_ENABLE, STEP_EQ_PORT3_ENABLE, STEP_EQ_PORT4_ENABLE };
+ static int dev[] = { 0x6015, 0x6025, 0x6035, 0x6045 };
+ static int writeSignalDev[] = { 0xc0, 0xc1, 0xc2, 0xc3 };
+ static int addr[] = { STEP_ID_PORT1_ENABLE_MODE_CHANGE, STEP_ID_PORT2_ENABLE_MODE_CHANGE, STEP_ID_PORT3_ENABLE_MODE_CHANGE, STEP_ID_PORT4_ENABLE_MODE_CHANGE };
+
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[m_nIndex]);
+ pStep->setName(pszName[m_nIndex]);
+ pStep->setWriteSignalDev(writeSignalDev[m_nIndex]);
+ if (addStep(addr[m_nIndex], pStep) != 0) {
+ delete pStep;
+ }
+ }
+
+ {
+ // Type auto change
+ char* pszName[] = { STEP_EQ_PORT1_TYPE_ATUO, STEP_EQ_PORT2_TYPE_ATUO, STEP_EQ_PORT3_TYPE_ATUO, STEP_EQ_PORT4_TYPE_ATUO };
+ static int dev[] = { 0x6016, 0x6026, 0x6036, 0x6046 };
+ static int writeSignalDev[] = { 0xc8, 0xc9, 0xca, 0xcb };
+ static int addr[] = { STEP_ID_PORT1_TYPE_AUTO_CHANGE, STEP_ID_PORT2_TYPE_AUTO_CHANGE, STEP_ID_PORT3_TYPE_AUTO_CHANGE, STEP_ID_PORT4_TYPE_AUTO_CHANGE };
+
+ CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[m_nIndex]);
+ pStep->setName(pszName[m_nIndex]);
+ pStep->setWriteSignalDev(writeSignalDev[m_nIndex]);
+ if (addStep(addr[m_nIndex], pStep) != 0) {
+ delete pStep;
+ }
+ }
+ }
+
void CLoadPort::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CLoadPort.h b/SourceCode/Bond/Servo/CLoadPort.h
index 6e0e288..ae63fe7 100644
--- a/SourceCode/Bond/Servo/CLoadPort.h
+++ b/SourceCode/Bond/Servo/CLoadPort.h
@@ -15,6 +15,7 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSteps();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index d663e6f..40f4705 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -3,16 +3,6 @@
#include "CMaster.h"
-#define ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(name,ws,index,psd) { \
- CEqCassetteTransferStateStep* pStep = new CEqCassetteTransferStateStep(); \
- pStep->setName(name); \
- pStep->setWriteSignalDev(ws); \
- pStep->setPortStatusDev(psd); \
- if (pEquipment->addStep(index, pStep) != 0) { \
- delete pStep; \
- } \
-}
-
namespace SERVO {
CMaster* g_pMaster = NULL;
@@ -246,15 +236,6 @@
CLoadPort* CMaster::addLoadPort(int index)
{
ASSERT(index == 0 || index == 1 || index == 2 || index == 3);
- static char* pszCassetteCtrlCmd[] = {
- STEP_EQ_P1_CASSETTE_CTRL_CMD,
- STEP_EQ_P2_CASSETTE_CTRL_CMD,
- STEP_EQ_P3_CASSETTE_CTRL_CMD,
- STEP_EQ_P4_CASSETTE_CTRL_CMD
- };
- int nWriteSignalDev[] = {0x120, 0x121, 0x122, 0x123};
- int nCtrlCmdDev[] = {0x45, 0x1a5, 0x305, 0x465};
- int nStepDev[] = { 0x480, 0x481, 0x482, 0x483 };
char szName[64];
@@ -265,109 +246,6 @@
pEquipment->setName(szName);
pEquipment->setDescription(szName);
addToEquipmentList(pEquipment);
-
-
- // step
- {
- CEqCassetteCtrlCmdStep* pStep = new CEqCassetteCtrlCmdStep();
- pStep->setName(pszCassetteCtrlCmd[index]);
- pStep->setWriteSignalDev(nWriteSignalDev[index]);
- pStep->setCtrlCmdDev(nCtrlCmdDev[index]);
- if (pEquipment->addStep(nStepDev[index], pStep) != 0) {
- delete pStep;
- }
- }
-
-
- {
- // Type
- char* pszName[] = { STEP_EQ_PORT1_TYPE, STEP_EQ_PORT2_TYPE, STEP_EQ_PORT3_TYPE, STEP_EQ_PORT4_TYPE };
- int dev[] = { 0x6010 , 0x6020, 0x6030, 0x6040 };
- int writeSignalDev[] = { 0xa0, 0xa1, 0xa2, 0xa3 };
- int addr[] = { STEP_ID_PORT1_TYPE_CHANGE, STEP_ID_PORT2_TYPE_CHANGE, STEP_ID_PORT3_TYPE_CHANGE, STEP_ID_PORT4_TYPE_CHANGE };
-
- CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[index]);
- pStep->setName(pszName[index]);
- pStep->setWriteSignalDev(writeSignalDev[index]);
- if (pEquipment->addStep(addr[index], pStep) != 0) {
- delete pStep;
- }
- }
-
- {
- // Mode
- char* pszName[] = { STEP_EQ_PORT1_MODE, STEP_EQ_PORT2_MODE, STEP_EQ_PORT3_MODE, STEP_EQ_PORT4_MODE };
- int dev[] = { 0x6011, 0x6021, 0x6031, 0x6041};
- int writeSignalDev[] = { 0xa8, 0xa9, 0xaa, 0xab };
- int addr[] = { STEP_ID_PORT1_MODE_CHANGE, STEP_ID_PORT2_MODE_CHANGE, STEP_ID_PORT3_MODE_CHANGE, STEP_ID_PORT4_MODE_CHANGE };
-
- CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[index]);
- pStep->setName(pszName[index]);
- pStep->setWriteSignalDev(writeSignalDev[index]);
- if (pEquipment->addStep(addr[index], pStep) != 0) {
- delete pStep;
- }
- }
-
- {
- // Cassette type
- char* pszName[] = { STEP_EQ_PORT1_CASSETTE_TYPE, STEP_EQ_PORT2_CASSETTE_TYPE, STEP_EQ_PORT3_CASSETTE_TYPE, STEP_EQ_PORT4_CASSETTE_TYPE };
- int dev[] = { 0x6012, 0x6022, 0x6032, 0x6042 };
- int writeSignalDev[] = { 0xb0, 0xb1, 0xb2, 0xb3 };
- int addr[] = { STEP_ID_PORT1_CASSETTE_TYPE_CHANGE, STEP_ID_PORT2_CASSETTE_TYPE_CHANGE, STEP_ID_PORT3_CASSETTE_TYPE_CHANGE, STEP_ID_PORT4_CASSETTE_TYPE_CHANGE };
-
- CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[index]);
- pStep->setName(pszName[index]);
- pStep->setWriteSignalDev(writeSignalDev[index]);
- if (pEquipment->addStep(addr[index], pStep) != 0) {
- delete pStep;
- }
- }
-
- {
- // Transfer type
- char* pszName[] = { STEP_EQ_PORT1_TRANSFER_MODE, STEP_EQ_PORT2_TRANSFER_MODE, STEP_EQ_PORT3_TRANSFER_MODE, STEP_EQ_PORT4_TRANSFER_MODE };
- int dev[] = { 0x6014, 0x6024, 0x6034, 0x6044 };
- int writeSignalDev[] = { 0xb8, 0xb9, 0xba, 0xbb };
- int addr[] = { STEP_ID_PORT1_TRANSFER_MODE_CHANGE, STEP_ID_PORT2_TRANSFER_MODE_CHANGE, STEP_ID_PORT3_TRANSFER_MODE_CHANGE, STEP_ID_PORT4_TRANSFER_MODE_CHANGE };
-
- CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[index]);
- pStep->setName(pszName[index]);
- pStep->setWriteSignalDev(writeSignalDev[index]);
- if (pEquipment->addStep(addr[index], pStep) != 0) {
- delete pStep;
- }
- }
-
- {
- // Port enable
- char* pszName[] = { STEP_EQ_PORT1_ENABLE, STEP_EQ_PORT2_ENABLE, STEP_EQ_PORT3_ENABLE, STEP_EQ_PORT4_ENABLE };
- int dev[] = { 0x6015, 0x6025, 0x6035, 0x6045 };
- int writeSignalDev[] = { 0xc0, 0xc1, 0xc2, 0xc3 };
- int addr[] = { STEP_ID_PORT1_ENABLE_MODE_CHANGE, STEP_ID_PORT2_ENABLE_MODE_CHANGE, STEP_ID_PORT3_ENABLE_MODE_CHANGE, STEP_ID_PORT4_ENABLE_MODE_CHANGE };
-
- CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[index]);
- pStep->setName(pszName[index]);
- pStep->setWriteSignalDev(writeSignalDev[index]);
- if (pEquipment->addStep(addr[index], pStep) != 0) {
- delete pStep;
- }
- }
-
- {
- // Type auto change
- char* pszName[] = { STEP_EQ_PORT1_TYPE_ATUO, STEP_EQ_PORT2_TYPE_ATUO, STEP_EQ_PORT3_TYPE_ATUO, STEP_EQ_PORT4_TYPE_ATUO };
- int dev[] = { 0x6016, 0x6026, 0x6036, 0x6046 };
- int writeSignalDev[] = { 0xc8, 0xc9, 0xca, 0xcb };
- int addr[] = { STEP_ID_PORT1_TYPE_AUTO_CHANGE, STEP_ID_PORT2_TYPE_AUTO_CHANGE, STEP_ID_PORT3_TYPE_AUTO_CHANGE, STEP_ID_PORT4_TYPE_AUTO_CHANGE };
-
- CEqReadIntStep* pStep = new CEqReadIntStep(__INT16, dev[index]);
- pStep->setName(pszName[index]);
- pStep->setWriteSignalDev(writeSignalDev[index]);
- if (pEquipment->addStep(addr[index], pStep) != 0) {
- delete pStep;
- }
- }
pEquipment->init();
@@ -440,213 +318,6 @@
addToEquipmentList(pEquipment);
- // 添加 step
- {
- CEqModeStep* pStep = new CEqModeStep();
- pStep->setName(STEP_MODE);
- pStep->setWriteSignalDev(0x50);
- pStep->setModeDev(0x5d7d);
- if (pEquipment->addStep(STEP_ID_EQMODE_CHANGED, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqStatusStep* pStep = new CEqStatusStep();
- pStep->setName(STEP_STATUS);
- pStep->setWriteSignalDev(0x51);
- pStep->setStatusDev(0x5d59);
- if (pEquipment->addStep(STEP_ID_EQSTATUS_CHANGED, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK1);
- pStep->setWriteSignalDev(0x52);
- pStep->setAlarmDev(0x5f0e);
- if (pEquipment->addStep(STEP_ID_EQALARM1, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK2);
- pStep->setWriteSignalDev(0x53);
- pStep->setAlarmDev(0x5f3b);
- if (pEquipment->addStep(STEP_ID_EQALARM2, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK3);
- pStep->setWriteSignalDev(0x54);
- pStep->setAlarmDev(0x5f68);
- if (pEquipment->addStep(STEP_ID_EQALARM3, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK4);
- pStep->setWriteSignalDev(0x55);
- pStep->setAlarmDev(0x5f95);
- if (pEquipment->addStep(STEP_ID_EQALARM4, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK5);
- pStep->setWriteSignalDev(0x56);
- pStep->setAlarmDev(0x5fc2);
- if (pEquipment->addStep(STEP_ID_EQALARM5, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqProcessStep* pStep = new CEqProcessStep();
- pStep->setName(STEP_PROCESS);
- pStep->setWriteSignalDev(0x57);
- pStep->setProcessDev(0x6b55);
- if (pEquipment->addStep(STEP_ID_PROCESS_DATA_REPORT, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqCimModeChangeStep* pStep = new CEqCimModeChangeStep();
- pStep->setName(STEP_CIM_MODE_CHANGE);
- pStep->setWriteSignalDev(0x70);
- pStep->setCimModeDev(0x15);
- if (pEquipment->addStep(STEP_ID_CIMMODE_CHANGED_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqCimMessageCmdStep* pStep = new CEqCimMessageCmdStep();
- pStep->setName(STEP_CIM_MESSAGE_CMD);
- pStep->setWriteSignalDev(0x71);
- pStep->setCimMessageDev(0x0);
- if (pEquipment->addStep(STEP_ID_CIM_MSG_SET_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- // CIM Message Confirm
- CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x5f80);
- pStep->setName(STEP_EQ_CIM_MESSAGE_CONFIRM);
- pStep->setWriteSignalDev(0x59);
- if (pEquipment->addStep(STEP_ID_CIM_MSG_CONFIRM_REPORT, pStep) != 0) {
- delete pStep;
- }
- }
- {
- // VCR1 Event Report
- CEqVcrEventStep* pStep = new CEqVcrEventStep();
- pStep->setName(STEP_EQ_VCR1_EVENT_REPORT);
- pStep->setWriteSignalDev(0x4a);
- pStep->setReturnDev(0x91e);
- pStep->setVcrEventReportDev(0x5fef);
- if (pEquipment->addStep(STEP_ID_VCR1_EVENT_REPORT, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqCimMessageClearStep* pStep = new CEqCimMessageClearStep();
- pStep->setName(STEP_CIM_MESSAGE_CLEAR);
- pStep->setWriteSignalDev(0x72);
- pStep->setClearCimMessageDev(0x13);
- if (pEquipment->addStep(STEP_ID_CIM_MSG_CLEAR_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqDateTimeSetCmdStep* pStep = new CEqDateTimeSetCmdStep();
- pStep->setName(STEP_DATETIME_SET_CMD);
- pStep->setWriteSignalDev(0x73);
- pStep->setDateTimeDev(0x16);
- if (pEquipment->addStep(STEP_ID_DATETIME_SET_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqVCREnableStep* pStep = new CEqVCREnableStep();
- pStep->setName(STEP_EQ_VCR_ENABLE);
- pStep->setWriteSignalDev(0x74);
- pStep->setEqVCRModeDev(0x1F);
- if (pEquipment->addStep(STEP_ID_VCR_ENABLE_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqModeChangeStep* pStep = new CEqModeChangeStep();
- pStep->setName(STEP_EQ_MODE_CHANGE);
- pStep->setWriteSignalDev(0x75);
- pStep->setEqModeDev(0x1E);
- if (pEquipment->addStep(STEP_ID_EQMODE_CHANGE_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqCurrentRecipeChangeStep* pStep = new CEqCurrentRecipeChangeStep();
- pStep->setName(STEP_EQ_RURRENT_RECIPE_CHANGE);
- pStep->setWriteSignalDev(0x48);
- pStep->setDataDev(0x6850);
- if (pEquipment->addStep(STEP_ID_CURRENT_RECIPE_CHANGE_REPORT, pStep) != 0) {
- delete pStep;
- }
- }
-
- // CEqCassetteTranserStateStep
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_EMPTY, 0xd8,
- STEP_ID_PORT1_CASSETTIE_EMPTY, 0x6050);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_LOAD_EADY, 0xe0,
- STEP_ID_PORT1_CASSETTIE_LOAD_READY, 0x6050);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_LOADED, 0xe8,
- STEP_ID_PORT1_CASSETTIE_LOADED, 0x6050);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_INUSE, 0xf0,
- STEP_ID_PORT1_CASSETTIE_INUSE, 0x6050);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_UNLOAD_EADY, 0xf8,
- STEP_ID_PORT1_CASSETTIE_UNLOAD_READY, 0x60f50);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_BLOCKED, 0x100,
- STEP_ID_PORT1_CASSETTIE_BLOCKED, 0x6050);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_EMPTY, 0xd9,
- STEP_ID_PORT2_CASSETTIE_EMPTY, 0x6070);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_LOAD_EADY, 0xe1,
- STEP_ID_PORT2_CASSETTIE_LOAD_READY, 0x6070);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_LOADED, 0xe9,
- STEP_ID_PORT2_CASSETTIE_LOADED, 0x6070);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_INUSE, 0xf1,
- STEP_ID_PORT2_CASSETTIE_INUSE, 0x6070);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_UNLOAD_EADY, 0xf9,
- STEP_ID_PORT2_CASSETTIE_UNLOAD_READY, 0x6070);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P2_CASSETTE_BLOCKED, 0x101,
- STEP_ID_PORT2_CASSETTIE_BLOCKED, 0x6070);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_EMPTY, 0xda,
- STEP_ID_PORT3_CASSETTIE_EMPTY, 0x6090);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_LOAD_EADY, 0xe2,
- STEP_ID_PORT3_CASSETTIE_LOAD_READY, 0x6090);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_LOADED, 0xea,
- STEP_ID_PORT3_CASSETTIE_INUSE, 0x6090);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_INUSE, 0xf2,
- STEP_ID_PORT3_CASSETTIE_INUSE, 0x6090);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_UNLOAD_EADY, 0xfa,
- STEP_ID_PORT3_CASSETTIE_UNLOAD_READY, 0x6090);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P3_CASSETTE_BLOCKED, 0x102,
- STEP_ID_PORT3_CASSETTIE_BLOCKED, 0x6090);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_EMPTY, 0xdb,
- STEP_ID_PORT4_CASSETTIE_EMPTY, 0x60b0);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_LOAD_EADY, 0xe3,
- STEP_ID_PORT4_CASSETTIE_LOAD_READY, 0x60b0);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_LOADED, 0xeb,
- STEP_ID_PORT4_CASSETTIE_LOADED, 0x60b0);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_INUSE, 0xf3,
- STEP_ID_PORT4_CASSETTIE_INUSE, 0x60b0);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_UNLOAD_EADY, 0xfb,
- STEP_ID_PORT4_CASSETTIE_UNLOAD_READY, 0x60b0);
- ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P4_CASSETTE_BLOCKED, 0x103,
- STEP_ID_PORT4_CASSETTIE_BLOCKED, 0x60b0);
-
pEquipment->init();
LOGE("已添加“EFEM(ROBOT)”.");
@@ -667,181 +338,8 @@
pEquipment->setStation(0, 255);
pEquipment->setReadBitBlock(index == 0 ? 0x3b00 : 0x4600,
index == 0 ? 0x5600 : 0x6100);
+ pEquipment->setIndex(index);
addToEquipmentList(pEquipment);
-
-
- // 添加 step
- {
- CEqModeStep* pStep = new CEqModeStep();
- pStep->setName(STEP_MODE);
- pStep->setWriteSignalDev(index == 0 ? 0x350 : 0x650);
- pStep->setModeDev(index == 0 ? 0x9d7d : 0xdd7d);
- if (pEquipment->addStep(STEP_ID_EQMODE_CHANGED, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqStatusStep* pStep = new CEqStatusStep();
- pStep->setName(STEP_STATUS);
- pStep->setWriteSignalDev(index == 0 ? 0x351 : 0x651);
- pStep->setStatusDev(index == 0 ? 0x9d59 : 0xdd59);
- if (pEquipment->addStep(STEP_ID_EQSTATUS_CHANGED, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK1);
- pStep->setWriteSignalDev(index == 0 ? 0x352 : 0x652);
- pStep->setAlarmDev(index == 0 ? 0x9f0e : 0xdf0e);
- if (pEquipment->addStep(STEP_ID_EQALARM1, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK2);
- pStep->setWriteSignalDev(index == 0 ? 0x353 : 0x653);
- pStep->setAlarmDev(index == 0 ? 0x9f3b : 0xdf3b);
- if (pEquipment->addStep(STEP_ID_EQALARM2, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK3);
- pStep->setWriteSignalDev(index == 0 ? 0x354 : 0x654);
- pStep->setAlarmDev(index == 0 ? 0x9f68 : 0xdf68);
- if (pEquipment->addStep(STEP_ID_EQALARM3, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK4);
- pStep->setWriteSignalDev(index == 0 ? 0x355 : 0x655);
- pStep->setAlarmDev(index == 0 ? 0x9f95 : 0xdf95);
- if (pEquipment->addStep(STEP_ID_EQALARM4, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqAlarmStep* pStep = new CEqAlarmStep();
- pStep->setName(STEP_ALARM_BLOCK5);
- pStep->setWriteSignalDev(index == 0 ? 0x356 : 0x656);
- pStep->setAlarmDev(index == 0 ? 0x9fc2 : 0xdfc2);
- if (pEquipment->addStep(STEP_ID_EQALARM5, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqProcessStep* pStep = new CEqProcessStep();
- pStep->setName(STEP_PROCESS);
- pStep->setWriteSignalDev(index == 0 ? 0x357 : 0x657);
- pStep->setProcessDev(index == 0 ? 0xab55 : 0xeb55);
- if (pEquipment->addStep(STEP_ID_PROCESS_DATA_REPORT, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqCimModeChangeStep* pStep = new CEqCimModeChangeStep();
- pStep->setName(STEP_CIM_MODE_CHANGE);
- pStep->setWriteSignalDev(index == 0 ? 0x370 : 0x670);
- pStep->setCimModeDev(index == 0 ? 0x965 : 0x12b5);
- if (pEquipment->addStep(STEP_ID_CIMMODE_CHANGED_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqCimMessageCmdStep* pStep = new CEqCimMessageCmdStep();
- pStep->setName(STEP_CIM_MESSAGE_CMD);
- pStep->setWriteSignalDev(index == 0 ? 0x371 : 0x671);
- pStep->setCimMessageDev(index == 0 ? 0x950 : 0x12a0);
- if (pEquipment->addStep(STEP_ID_CIM_MSG_SET_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqCurrentRecipeChangeStep* pStep = new CEqCurrentRecipeChangeStep();
- pStep->setName(STEP_EQ_RURRENT_RECIPE_CHANGE);
- pStep->setWriteSignalDev(index == 0 ? 0x348 : 0x648);
- pStep->setDataDev(index == 0 ? 0xa850 : 0xe850);
- if (pEquipment->addStep(STEP_ID_CURRENT_RECIPE_CHANGE_REPORT, pStep) != 0) {
- delete pStep;
- }
- }
- {
- // CIM Message Confirm
- CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, index == 0 ? 0x9d80 : 0xdd80);
- pStep->setName(STEP_EQ_CIM_MESSAGE_CONFIRM);
- pStep->setWriteSignalDev(index == 0 ? 0x359 : 0x659);
- if (pEquipment->addStep(STEP_ID_CIM_MSG_CONFIRM_REPORT, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqCimMessageClearStep* pStep = new CEqCimMessageClearStep();
- pStep->setName(STEP_CIM_MESSAGE_CLEAR);
- pStep->setWriteSignalDev(index == 0 ? 0x372 : 0x672);
- pStep->setClearCimMessageDev(index == 0 ? 0x963 : 0x12b3);
- if (pEquipment->addStep(STEP_ID_CIM_MSG_CLEAR_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqDateTimeSetCmdStep* pStep = new CEqDateTimeSetCmdStep();
- pStep->setName(STEP_DATETIME_SET_CMD);
- pStep->setWriteSignalDev(index == 0 ? 0x373 : 0x673);
- pStep->setDateTimeDev(index == 0 ? 0x966 : 0x12b6);
- if (pEquipment->addStep(STEP_ID_DATETIME_SET_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqModeChangeStep* pStep = new CEqModeChangeStep();
- pStep->setName(STEP_EQ_MODE_CHANGE);
- pStep->setWriteSignalDev(index == 0 ? 0x375 : 0x675);
- pStep->setEqModeDev(index == 0 ? 0x96E : 0x12be);
- if (pEquipment->addStep(STEP_ID_EQMODE_CHANGE_CMD_REPLY, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqJobEventStep* pStep = new CEqJobEventStep();
- pStep->setName(STEP_EQ_RECEIVED_JOB_UPS1);
- pStep->setWriteSignalDev(index == 0 ? 0x300 : 0x600);
- pStep->setJobDataDev(index == 0 ? 0x8c90 : 0xcc90);
- if (pEquipment->addStep(STEP_ID_RECIVE_JOB_UPS1, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqJobEventStep* pStep = new CEqJobEventStep();
- pStep->setName(STEP_EQ_RECEIVED_JOB_UPS2);
- pStep->setWriteSignalDev(index == 0 ? 0x301 : 0x601);
- pStep->setJobDataDev(index == 0 ? 0x8dd0 : 0xcdd0);
- if (pEquipment->addStep(STEP_ID_RECIVE_JOB_UPS2, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqJobEventStep* pStep = new CEqJobEventStep();
- pStep->setName(STEP_EQ_SENT_OUT_JOB_DOWNS1);
- pStep->setWriteSignalDev(index == 0 ? 0x310 : 0x610);
- pStep->setJobDataDev(index == 0 ? 0x8000 : 0xc000);
- if (pEquipment->addStep(STEP_ID_SENT_OUT_JOB_DOWNS1, pStep) != 0) {
- delete pStep;
- }
- }
- {
- CEqJobEventStep* pStep = new CEqJobEventStep();
- pStep->setName(STEP_EQ_SENT_OUT_JOB_DOWNS2);
- pStep->setWriteSignalDev(index == 0 ? 0x311 : 0x611);
- pStep->setJobDataDev(index == 0 ? 0x8140 : 0xc140);
- if (pEquipment->addStep(STEP_ID_SENT_OUT_JOB_DOWNS2, pStep) != 0) {
- delete pStep;
- }
- }
pEquipment->init();
diff --git a/SourceCode/Bond/Servo/Common.h b/SourceCode/Bond/Servo/Common.h
index 78351fa..c8ae7ab 100644
--- a/SourceCode/Bond/Servo/Common.h
+++ b/SourceCode/Bond/Servo/Common.h
@@ -139,6 +139,8 @@
#define STEP_EQ_SENT_OUT_JOB_DOWNS2 _T("EQJESentOutJobDowns2")
#define STEP_EQ_VCR1_EVENT_REPORT _T("EQVcr1EventReport")
#define STEP_EQ_RURRENT_RECIPE_CHANGE _T("EQCurrentRecipeChange")
+#define STEP_EQ_MASTER_RECIPE_LIST_REQ _T("EQMasterRecipeListReq")
+#define STEP_EQ_MASTER_RECIPE_LIST _T("EQMasterRecipeListReport")
/* Step ID */
@@ -148,6 +150,7 @@
#define STEP_ID_DATETIME_SET_CMD_REPLY 0x553
#define STEP_ID_VCR_ENABLE_CMD_REPLY 0x554
#define STEP_ID_EQMODE_CHANGE_CMD_REPLY 0x555
+#define STEP_ID_MASTER_RECIPE_LIST_CMD_REPLY 0x556
#define STEP_ID_EQMODE_CHANGED 0x560
#define STEP_ID_EQSTATUS_CHANGED 0x561
#define STEP_ID_EQALARM1 0x562
@@ -159,6 +162,7 @@
#define STEP_ID_CURRENT_RECIPE_CHANGE_REPORT 0x568
#define STEP_ID_CIM_MSG_CONFIRM_REPORT 0x569
#define STEP_ID_VCR1_EVENT_REPORT 0x56A
+#define STEP_ID_MASTER_RECIPE_LIST_REPORT 0x56B
#define STEP_ID_RECIVE_JOB_UPS1 0x580
#define STEP_ID_RECIVE_JOB_UPS2 0x581
#define STEP_ID_SENT_OUT_JOB_DOWNS1 0x590
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index cddacfd..bd2f2f6 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -219,11 +219,13 @@
<ClInclude Include="CEqPortChangeStep.h" />
<ClInclude Include="CEqProcessStep.h" />
<ClInclude Include="CEqReadIntStep.h" />
+ <ClInclude Include="CEqReadStep.h" />
<ClInclude Include="CEqStatusStep.h" />
<ClInclude Include="CEquipmentPage1.h" />
<ClInclude Include="CEquipmentPage2.h" />
<ClInclude Include="CEqVCREnableStep.h" />
<ClInclude Include="CEqVcrEventStep.h" />
+ <ClInclude Include="CEqWriteStep.h" />
<ClInclude Include="CFliper.h" />
<ClInclude Include="CGlass.h" />
<ClInclude Include="CHMPropertyDlg.h" />
@@ -306,11 +308,13 @@
<ClCompile Include="CEqPortChangeStep.cpp" />
<ClCompile Include="CEqProcessStep.cpp" />
<ClCompile Include="CEqReadIntStep.cpp" />
+ <ClCompile Include="CEqReadStep.cpp" />
<ClCompile Include="CEqStatusStep.cpp" />
<ClCompile Include="CEquipmentPage1.cpp" />
<ClCompile Include="CEquipmentPage2.cpp" />
<ClCompile Include="CEqVCREnableStep.cpp" />
<ClCompile Include="CEqVcrEventStep.cpp" />
+ <ClCompile Include="CEqWriteStep.cpp" />
<ClCompile Include="CFliper.cpp" />
<ClCompile Include="CGlass.cpp" />
<ClCompile Include="CHMPropertyDlg.cpp" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index f6f2606..339a1a7 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -93,6 +93,8 @@
<ClCompile Include="CEqVcrEventStep.cpp" />
<ClCompile Include="CPagePortProperty.cpp" />
<ClCompile Include="CEqCurrentRecipeChangeStep.cpp" />
+ <ClCompile Include="CEqWriteStep.cpp" />
+ <ClCompile Include="CEqReadStep.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="AlarmManager.h" />
@@ -184,6 +186,8 @@
<ClInclude Include="CEqVcrEventStep.h" />
<ClInclude Include="CPagePortProperty.h" />
<ClInclude Include="CEqCurrentRecipeChangeStep.h" />
+ <ClInclude Include="CEqWriteStep.h" />
+ <ClInclude Include="CEqReadStep.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Servo.rc" />
--
Gitblit v1.9.3