1.添加CEqReadStep, 以后大部分读数据可能要使用这个类,可以简单程序。
2.文档;
| | |
| | | namespace SERVO { |
| | | CBonder::CBonder() : CEquipment() |
| | | { |
| | | |
| | | m_nIndex = 0; |
| | | } |
| | | |
| | | CBonder::~CBonder() |
| | |
| | | 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); |
| | |
| | | |
| | | return m_glassList.empty(); |
| | | } |
| | | |
| | | void CBonder::setIndex(unsigned int index) |
| | | { |
| | | m_nIndex = index; |
| | | } |
| | | |
| | | unsigned int CBonder::getIndex() |
| | | { |
| | | return m_nIndex; |
| | | } |
| | | } |
| | |
| | | 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; |
| | | }; |
| | | } |
| | | |
| | |
| | | #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() |
| | | { |
| | |
| | | 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); |
| | |
| | | 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 |
| | | */ |
| | | } |
| | | } |
| | | |
| | |
| | | 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); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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; |
| | | } |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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; |
| | | }; |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #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; |
| | | }; |
| | | } |
| | | |
| | |
| | | void CEquipment::init() |
| | | { |
| | | initPins(); |
| | | initSteps(); |
| | | for (auto item : m_mapStep) { |
| | | item.second->init(); |
| | | } |
| | |
| | | for (auto item : m_mapStep) { |
| | | item.second->term(); |
| | | } |
| | | } |
| | | |
| | | void CEquipment::initSteps() |
| | | { |
| | | |
| | | } |
| | | |
| | | void CEquipment::setID(int nID) |
| | |
| | | |
| | | // 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); |
| | |
| | | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | #include "CEqJobEventStep.h" |
| | | #include "CEqVcrEventStep.h" |
| | | #include "CEqCurrentRecipeChangeStep.h" |
| | | #include "CEqWriteStep.h" |
| | | #include "CEqReadStep.h" |
| | | #include <vector> |
| | | #include <map> |
| | | #include <list> |
| | |
| | | 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); |
| | |
| | | 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: |
| | | BOOL isAlive(); |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | #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; |
| | | |
| | |
| | | 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]; |
| | |
| | | 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(); |
| | |
| | | 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)â."); |
| | | |
| | |
| | | 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(); |
| | |
| | | #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 */ |
| | |
| | | #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 |
| | |
| | | #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 |
| | |
| | | <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" /> |
| | |
| | | <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" /> |
| | |
| | | <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" /> |
| | |
| | | <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" /> |