LAPTOP-SNT8I5JK\Boounion
2025-02-21 2d7e131c2e7f547df8d5e0d56fcea85cd49c712e
1.增加Equipment Status(机器和机器单元状态)获取;
已添加2个文件
已修改6个文件
180 ■■■■■ 文件已修改
SourceCode/Bond/Servo/CEqModeStep.cpp 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqStatusStep.cpp 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqStatusStep.h 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj.filters 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqModeStep.cpp
@@ -20,11 +20,14 @@
        CStep::onReadData();
        DWordContainer dc;
        m_pCclink->ReadDWordData(m_station, DeviceType::W, m_nModeDev, 1, dc);
        if (0 == m_pCclink->ReadDWordData(m_station, DeviceType::W, m_nModeDev, 1, dc)
            && dc.size() >= 1) {
        m_nMode = dc.at(0);
        std::string strTemp;
        LOGI("<CEqModeStep> Equipment Mode Changed<%s>\n",
            getModeDescription(strTemp).c_str());
        }
        return 0;
    }
@@ -58,7 +61,6 @@
        4 : Cold Run Mode
        5 : ETC."
    */
    std::string& CEqModeStep::getModeDescription(std::string& strDescription)
    {
        switch (m_nMode) {
SourceCode/Bond/Servo/CEqStatusStep.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
#include "stdafx.h"
#include "CEqStatusStep.h"
#include "Log.h"
#include "ToolUnits.h"
namespace SERVO {
    CEqStatusStep::CEqStatusStep() : CStep()
    {
        m_nStatusDev = 0;
        for (int i = 0; i < STATUS_MAX; i++) {
            m_nStatus[i] = 7;
            m_nReasonCode[i] = 0;
        }
    }
    CEqStatusStep::~CEqStatusStep()
    {
    }
    int CEqStatusStep::onReadData()
    {
        CStep::onReadData();
        char szBuffer[64];
        int nRet = m_pCclink->ReadData2(m_station, DeviceType::W,
            m_nStatusDev, 64, szBuffer);
        if (0 == nRet) {
            unsigned int unitId = (unsigned int)CToolUnits::toInt16(&szBuffer[0]);
            if (unitId < STATUS_MAX) {
                if (unitId == 0) {
                    m_nStatus[unitId] = CToolUnits::toInt16(&szBuffer[2 + unitId * 4]);
                    m_nReasonCode[unitId] = CToolUnits::toInt16(&szBuffer[2 + unitId * 4 + 2]);
                }
                else {
                    m_nStatus[unitId] = CToolUnits::toInt16(&szBuffer[2 + 3 * 2 + unitId * 4]);
                    m_nReasonCode[unitId] = CToolUnits::toInt16(&szBuffer[2 + 3 * 2 + unitId * 4 + 2]);
                }
                for (int i = 0; i < 64; i++) {
                    TRACE("bbb %d, %x\n", i, szBuffer[i]);
                }
                TRACE("cccc %d %d %d\n", unitId, m_nStatus[unitId], m_nReasonCode[unitId]);
                std::string strTemp;
                LOGI("<CEqStatusStep> Equipment Status Changed<Unit:%d, %s, ReasonCode=%d>\n",
                    unitId, getStatusDescription(unitId, strTemp).c_str(), m_nReasonCode[unitId]);
            }
        }
        return 0;
    }
    int CEqStatusStep::onComplete()
    {
        CStep::onComplete();
        LOGI("<CEqStatusStep> onComplete.");
        return 0;
    }
    int CEqStatusStep::onTimeout()
    {
        CStep::onTimeout();
        LOGI("<CEqStatusStep> onTimeout.");
        return 0;
    }
    void CEqStatusStep::setStatusDev(int nDev)
    {
        m_nStatusDev = nDev;
    }
    /*
    Lower (1byte, 0~7) : Status
    1 : PM
    2 : Down(BM)
    3 : Pause
    4 : Idle
    5: Run
    6: Job Change
    7 : ETC
    */
    std::string& CEqStatusStep::getStatusDescription(unsigned int unid, std::string& strDescription)
    {
        if (unid < STATUS_MAX) {
            switch (m_nStatus[unid]) {
            case 1:
                strDescription = _T("PM");
                break;
            case 2:
                strDescription = _T("Down(BM)");
                break;
            case 3:
                strDescription = _T("Pause");
                break;
            case 4:
                strDescription = _T("Idle");
                break;
            case 5:
                strDescription = _T("Run");
                break;
            case 6:
                strDescription = _T("Job Change");
                break;
            case 7:
                strDescription = _T("ETC");
                break;
            default:
                strDescription = _T("");
                break;
            }
        }
        return strDescription;
    }
}
SourceCode/Bond/Servo/CEqStatusStep.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
#pragma once
#include "CStep.h"
namespace SERVO {
#define UNIT_MAX        6
#define STATUS_MAX        (UNIT_MAX + 1)
    class CEqStatusStep : public CStep
    {
    public:
        CEqStatusStep();
        ~CEqStatusStep();
    public:
        virtual int onReadData();
        virtual int onComplete();
        virtual int onTimeout();
        void setStatusDev(int nDev);
        std::string& getStatusDescription(unsigned int unid, std::string& strDescription);
    private:
        int m_nStatusDev;
        int m_nStatus[STATUS_MAX];
        int m_nReasonCode[STATUS_MAX];
    };
}
SourceCode/Bond/Servo/CEquipment.cpp
@@ -240,11 +240,20 @@
        // ä»¥ä¸‹æ ¹æ®ä¿¡å·åšæµç¨‹å¤„理
        CStep* pStep;
        // Equipment Mode Change Report
        index = 0x360;
        bFlag = isBitOn(pszData, size, index);
        CStep* pStep = getStep(0x360);
        pStep = getStep(index);
        if (pStep != nullptr) {
            pStep->onSignal(bFlag);
        }
        // Equipment Status Change Report
        index = 0x361;
        bFlag = isBitOn(pszData, size, index);
        pStep = getStep(index);
        if (pStep != nullptr) {
            pStep->onSignal(bFlag);
        }
SourceCode/Bond/Servo/CEquipment.h
@@ -2,6 +2,7 @@
#include "Log.h"
#include "CCLinkIEControl.h"
#include "CEqModeStep.h"
#include "CEqStatusStep.h"
#include <map>
SourceCode/Bond/Servo/CMaster.cpp
@@ -81,6 +81,14 @@
                    delete pStep;
                }
            }
            {
                CEqStatusStep* pStep = new CEqStatusStep();
                pStep->setWriteSignalDev(0x31);
                pStep->setStatusDev(0x4a68);
                if (pEquipment->addStep(0x361, pStep) != 0) {
                    delete pStep;
                }
            }
            pEquipment->init();
SourceCode/Bond/Servo/Servo.vcxproj
@@ -201,6 +201,7 @@
    <ClInclude Include="CCLinkPerformance\CCLinkIEControl.h" />
    <ClInclude Include="CCLinkPerformance\PerformanceMelsec.h" />
    <ClInclude Include="CEqModeStep.h" />
    <ClInclude Include="CEqStatusStep.h" />
    <ClInclude Include="CStep.h" />
    <ClInclude Include="DevicePropertyDlg.h" />
    <ClInclude Include="CEFEM.h" />
@@ -233,6 +234,7 @@
    <ClCompile Include="CCLinkPerformance\CCLinkIEControl.cpp" />
    <ClCompile Include="CCLinkPerformance\PerformanceMelsec.cpp" />
    <ClCompile Include="CEqModeStep.cpp" />
    <ClCompile Include="CEqStatusStep.cpp" />
    <ClCompile Include="CStep.cpp" />
    <ClCompile Include="DevicePropertyDlg.cpp" />
    <ClCompile Include="CEFEM.cpp" />
SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -38,6 +38,7 @@
    <ClCompile Include="DevicePropertyDlg.cpp" />
    <ClCompile Include="CStep.cpp" />
    <ClCompile Include="CEqModeStep.cpp" />
    <ClCompile Include="CEqStatusStep.cpp" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="AlarmManager.h" />
@@ -74,6 +75,7 @@
    <ClInclude Include="DevicePropertyDlg.h" />
    <ClInclude Include="CStep.h" />
    <ClInclude Include="CEqModeStep.h" />
    <ClInclude Include="CEqStatusStep.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="Servo.rc" />