1.CIM Message set(下发CIM消息到PLC),测试成功
2.CIM Message clear(清除PLC中的指定CIM消息), 测试成功
3.CIM Message Confirm(PLC确认CIM消息事件检测和获取),测试成功
已修改6个文件
117 ■■■■■ 文件已修改
SourceCode/Bond/Servo/CEqReadIntStep.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPageGraph2.cpp 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Common.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqReadIntStep.cpp
@@ -53,7 +53,7 @@
            m_nValue = (unsigned int)CToolUnits::toInt32(&szBuffer[0]);
        }
        LOGI("<CEqReadIntStep>Value(%s) Changed<Dev:%d, Value:%d>\n",
        LOGI("<CEqReadIntStep-%s>Value Changed<Dev:%d, Value:%d>\n",
            m_strName.c_str(), m_nValueDev, m_nValue);
        return 0;
SourceCode/Bond/Servo/CEquipment.cpp
@@ -383,6 +383,16 @@
        // CIM Mode
        CHECK_WRITE_STEP_SIGNAL(0x350, pszData, size);
        // CIM Message Set
        CHECK_WRITE_STEP_SIGNAL(0x351, pszData, size);
        // CIM Message Clear
        CHECK_WRITE_STEP_SIGNAL(0x352, pszData, size);
        // CIM Message Confirm
        CHECK_READ_STEP_SIGNAL(0x369, pszData, size);
        // EQ Mode
        CHECK_WRITE_STEP_SIGNAL(0x355, pszData, size);
@@ -504,6 +514,16 @@
                }
                return 1;
            }
            else if (isCimMessageConfirmStep(pStep)) {
                SERVO::CEqReadIntStep* pEqReadIntStep = (SERVO::CEqReadIntStep*)pStep;
                int value = pEqReadIntStep->getValue();
                // 此处将value按高低位拆分为message id和panel no.
                // 可能还需要上报到cim
                short msgId, panelNo;
                msgId = (value & 0xffff0000 >> 16);
                panelNo = (value & 0xffff);
                LOGI("Cim Message Confirm(msgID = %d, panel no.=%d).", msgId, panelNo);
            }
        }
@@ -753,6 +773,11 @@
            && pStep->getName().find("Cassette") != std::string::npos;
    }
    bool CEquipment::isCimMessageConfirmStep(SERVO::CStep* pStep)
    {
        return pStep->getName().compare(STEP_EQ_CIM_MESSAGE_CONFIRM) == 0;
    }
    int CEquipment::setEqMode(short mode)
    {
        SERVO::CEqModeChangeStep* pStep = (SERVO::CEqModeChangeStep*)getStepWithName(STEP_EQ_MODE_CHANGE);
@@ -775,4 +800,34 @@
        else 
            return pStep->cimOff();
    }
    int CEquipment::setCimMessage(const char* pszMessage, short id, short nTouchPanelNo)
    {
        SERVO::CEqCimMessageCmdStep* pStep = (SERVO::CEqCimMessageCmdStep*)getStepWithName(STEP_CIM_MESSAGE_CMD);
        if (pStep == nullptr) {
            return -1;
        }
        return pStep->setCimMessage(pszMessage, id, nTouchPanelNo);
    }
    int CEquipment::clearCimMessage(short id, short nTouchPanelNo)
    {
        SERVO::CEqCimMessageClearStep* pStep = (SERVO::CEqCimMessageClearStep*)getStepWithName(STEP_CIM_MESSAGE_CLEAR);
        if (pStep == nullptr) {
            return -1;
        }
        return pStep->clearCimMessage(id, nTouchPanelNo);
    }
    int CEquipment::setDateTime(short year, short month, short day, short hour, short minute, short second)
    {
        SERVO::CEqDateTimeSetCmdStep* pStep = (SERVO::CEqDateTimeSetCmdStep*)getStepWithName(STEP_DATETIME_SET_CMD);
        if (pStep == nullptr) {
            return -1;
        }
        return pStep->setDateTime(year, month, day, hour, minute, second);
    }
}
SourceCode/Bond/Servo/CEquipment.h
@@ -106,8 +106,12 @@
        BOOL removeClass(CGlass* pGlass);
        bool isAlarmStep(SERVO::CStep* pStep);
        bool isCassetteTransferStateStep(SERVO::CStep* pStep);
        bool isCimMessageConfirmStep(SERVO::CStep* pStep);
        int setEqMode(short mode);
        int setCimMode(BOOL bOn);
        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);
    // 以下为从CC-Link读取到的Bit标志位检测函数
    public:
SourceCode/Bond/Servo/CMaster.cpp
@@ -825,6 +825,15 @@
            }
        }
        {
            // CIM Message Confirm
            CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, index == 0 ? 0x6a8f : 0x8a8f);
            pStep->setName(STEP_EQ_CIM_MESSAGE_CONFIRM);
            pStep->setWriteSignalDev(index == 0 ? 0x339 : 0x639);
            if (pEquipment->addStep(0x369, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqCimMessageClearStep* pStep = new CEqCimMessageClearStep();
            pStep->setName(STEP_CIM_MESSAGE_CLEAR);
            pStep->setWriteSignalDev(index == 0 ? 0x352 : 0x652);
SourceCode/Bond/Servo/CPageGraph2.cpp
@@ -158,12 +158,56 @@
        }
        else if (nCmd == ID_EQSGRAPHITEM_TEST3) {
            SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
            // 测试下发Cim Message
            /*
            if (pEquipment->getID() == EQ_ID_Bonder1
                || pEquipment->getID() == EQ_ID_Bonder2) {
                static int msgId = 0; msgId++;
                if (msgId % 2 == 0) {
                    pEquipment->setCimMessage("Hello!", msgId, 1);
                }
                else {
                    pEquipment->setCimMessage("ABC0123456789", msgId, 2);
                }
            }
            */
            // 测试清除Cim Message
            /*
            if (pEquipment->getID() == EQ_ID_Bonder1
                || pEquipment->getID() == EQ_ID_Bonder2) {
                static int msgId = 0; msgId++;
                if (msgId % 2 == 0) {
                    pEquipment->clearCimMessage(msgId, 1);
                }
                else {
                    pEquipment->clearCimMessage(msgId, 2);
                }
            }
            */
            // 测试设置时间
            if (pEquipment->getID() == EQ_ID_Bonder1
                || pEquipment->getID() == EQ_ID_Bonder2) {
                CTime time = CTime::GetCurrentTime();
                pEquipment->setDateTime((short)time.GetYear(),
                    (short)time.GetMonth(),
                    (short)time.GetDay(),
                    (short)time.GetHour(),
                    (short)time.GetMinute(),
                    (short)time.GetSecond());
            }
            // 测试设置cim mode
            /*
            if (pEquipment->getID() == EQ_ID_Bonder1
                || pEquipment->getID() == EQ_ID_Bonder2) {
                static int ii = 0; ii++;
                pEquipment->setCimMode(ii % 2 == 0);
            }
            */
            /*
            SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
            if (pEquipment->getID() == EQ_ID_Bonder1
SourceCode/Bond/Servo/Common.h
@@ -132,6 +132,7 @@
#define STEP_EQ_P2_CASSETTE_CTRL_CMD    _T("EQPort2CassetteCtrlCmd")
#define STEP_EQ_P3_CASSETTE_CTRL_CMD    _T("EQPort3CassetteCtrlCmd")
#define STEP_EQ_P4_CASSETTE_CTRL_CMD    _T("EQPort4CassetteCtrlCmd")
#define STEP_EQ_CIM_MESSAGE_CONFIRM        _T("EQCimMessageConfirm")
/* Step ID */