From fc881732b096f1c5a6dfcb9751c89f0ffca90768 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 28 四月 2025 14:49:20 +0800
Subject: [PATCH] 1.LoadPort增加 mode, type, cassette type, transfer mode等属性值,并增加对应属性页;
---
SourceCode/Bond/Servo/CLoadPort.cpp | 274 +++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 237 insertions(+), 37 deletions(-)
diff --git a/SourceCode/Bond/Servo/CLoadPort.cpp b/SourceCode/Bond/Servo/CLoadPort.cpp
index 5b54636..9aab4ad 100644
--- a/SourceCode/Bond/Servo/CLoadPort.cpp
+++ b/SourceCode/Bond/Servo/CLoadPort.cpp
@@ -5,7 +5,12 @@
namespace SERVO {
CLoadPort::CLoadPort() : CEquipment()
{
-
+ m_nType = 0;
+ m_nMode = 0;
+ m_nCassetteType = 0;
+ m_nTransferMode = 4;
+ m_bEnable = FALSE;
+ m_bAutoChangeEnable = FALSE;
}
CLoadPort::~CLoadPort()
@@ -52,58 +57,253 @@
void CLoadPort::getAttributeVector(CAttributeVector& attrubutes)
{
__super::getAttributeVector(attrubutes);
-
- for (auto item : m_inputPins) {
- attrubutes.addAttribute(new CAttribute(item->getName().c_str(),
- std::to_string((int)item->getType()).c_str(), ""));
- }
-
- for (auto item : m_outputPins) {
- attrubutes.addAttribute(new CAttribute(item->getName().c_str(),
- std::to_string((int)item->getType()).c_str(), ""));
- }
-
- for (auto item : m_panelList) {
- attrubutes.addAttribute(new CAttribute("Panel",
- item->getID().c_str(), ""));
- }
}
- void CLoadPort::outputPanel()
+ int CLoadPort::recvIntent(CPin* pPin, CIntent* pIntent)
{
- CPin* pOutPin = getPin("Out");
+ return __super::recvIntent(pPin, pIntent);
+ }
-
+ int CLoadPort::outputGlass(int port)
+ {
// 如果列表中没有Panel,模拟生成10张
- if (m_panelList.empty()) {
+ if (m_glassList.empty()) {
static int ii = 0;
char szBuffer[64];
LOGI("<CLoadPort>模拟生成10张PANEL");
for (int i = 0; i < 10; i++) {
sprintf_s(szBuffer, "P20250320A1A%d", ++ii);
- CPanel* pPanel = new CPanel();
- pPanel->setID(szBuffer);
- addPanelToList(pPanel);
+ CGlass* pGlass = new CGlass();
+ pGlass->setID(szBuffer);
+ addGlassToList(pGlass);
}
}
+ return __super::outputGlass(port);
+ }
- // 模拟取出第一张Panel,传送到下一环节
+ BOOL CLoadPort::glassWillArrive(CGlass* pGlass)
+ {
+ BOOL bRet = __super::glassWillArrive(pGlass);
+ if (!bRet) {
+ return FALSE;
+ }
+
+ return (m_glassList.size() < 8);
+ }
+
+ int CLoadPort::sendCassetteCtrlCmd(short cmd,
+ short* jobExistence,
+ int jobExistenceSize,
+ short slotProcess,
+ short jopCount,
+ CJobDataA* pJobDataA)
+ {
+ int id = getID();
+ if ( !(id == EQ_ID_LOADPORT1 || id == EQ_ID_LOADPORT2) ) {
+ return -1;
+ }
+
+
+ SERVO::CEqCassetteCtrlCmdStep* pStep = (SERVO::CEqCassetteCtrlCmdStep*)getCassetteCtrlCmdStep();
+ ASSERT(pStep);
+ return pStep->sendCtrlCmd(cmd, jobExistence, jobExistenceSize, slotProcess, jopCount, pJobDataA);
+ }
+
+ CStep* CLoadPort::getCassetteCtrlCmdStep()
+ {
+ CStep* pStep = nullptr;
Lock();
- CPanel* pContext = m_panelList.front();
- pContext->addRef();
-
- CIntent intent(FLOW_MOVE_MATERIAL, "", pContext);
- int nRet = pOutPin->sendIntent(&intent);
- if (nRet == FLOW_REJECT) {
- AfxMessageBox("对方拒绝接受");
+ for (auto item : m_mapStep) {
+ if (item.second->getName().find(STEP_EQ_P1_CASSETTE_CTRL_CMD) == 0
+ || item.second->getName().find(STEP_EQ_P2_CASSETTE_CTRL_CMD) == 0
+ || item.second->getName().find(STEP_EQ_P3_CASSETTE_CTRL_CMD) == 0
+ || item.second->getName().find(STEP_EQ_P4_CASSETTE_CTRL_CMD) == 0) {
+ pStep = item.second;
+ }
}
- else if (nRet == FLOW_ACCEPT) {
- m_panelList.pop_front();
- pContext->release(); // 添加到列队时addRef, 取出时release
- }
-
- pContext->release();
Unlock();
+
+ return pStep;
+ }
+
+ BOOL CLoadPort::isEnable()
+ {
+ return m_bEnable;
+ }
+
+ int CLoadPort::getPortType()
+ {
+ return m_nType;
+ }
+
+ int CLoadPort::getPortMode()
+ {
+ return m_nMode;
+ }
+
+ int CLoadPort::getCessetteType()
+ {
+ return m_nCassetteType;
+ }
+
+ int CLoadPort::getTransferMode()
+ {
+ return m_nTransferMode;
+ }
+
+ BOOL CLoadPort::isAutoChange()
+ {
+ return m_bAutoChangeEnable;
+ }
+
+ /*
+ 1: Loading Port
+ 2: Unloading Port
+ 3: Both Port
+ 4: Buffer Port-Buffer Type
+ 5: Buffer Port-Loader in Buffer Type
+ 6: Buffer Port-Un-loader in Buffer Type
+ 7: Unloading Partial Port
+ */
+ std::string& CLoadPort::getPortTypeDescription(int portType, std::string& strDescription)
+ {
+ switch (portType) {
+ case 1:
+ strDescription = _T("Loading Port");
+ break;
+ case 2:
+ strDescription = _T("Unloading Port");
+ break;
+ case 3:
+ strDescription = _T("Both Port");
+ break;
+ case 4:
+ strDescription = _T("Buffer Port - Buffer Type");
+ break;
+ case 5:
+ strDescription = _T("Buffer Port - Loader in Buffer Type");
+ break;
+ case 6:
+ strDescription = _T("Buffer Port - Un-loader in Buffer Type");
+ break;
+ case 7:
+ strDescription = _T("Unloading Partial Port");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
+ }
+
+ /*
+ 0: OutOfService
+ 1: TransferBlocked
+ 2: ReadyToLoad
+ 3: ReadyToUnload
+ 4: InService
+ 5: TransferReady
+ */
+ std::string& CLoadPort::getPortModeDescription(int portMode, std::string& strDescription)
+ {
+ switch (portMode) {
+ case 0:
+ strDescription = _T("OutOfService");
+ break;
+ case 1:
+ strDescription = _T("TransferBlocked");
+ break;
+ case 2:
+ strDescription = _T("ReadyToLoad");
+ break;
+ case 3:
+ strDescription = _T("ReadyToUnload");
+ break;
+ case 4:
+ strDescription = _T("InService");
+ break;
+ case 5:
+ strDescription = _T("TransferReady");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
+ }
+
+ /*
+ 1: G1
+ 2: G2
+ 3: G1&G2
+ */
+ std::string& CLoadPort::getPortCassetteTypeDescription(int casseteType, std::string& strDescription)
+ {
+ switch (casseteType) {
+ case 1:
+ strDescription = _T("G1");
+ break;
+ case 2:
+ strDescription = _T("G2");
+ break;
+ case 3:
+ strDescription = _T("G1&G2");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
+ }
+
+ /*
+ 1: MGV Mode
+ 2: AGV Mode
+ 3: Stocker Inline Mode
+ */
+ std::string& CLoadPort::getPortTransferModeDescription(int mode, std::string& strDescription)
+ {
+ switch (mode) {
+ case 1:
+ strDescription = _T("MGV Mode");
+ break;
+ case 2:
+ strDescription = _T("AGV Mode");
+ break;
+ case 3:
+ strDescription = _T("Stocker Inline Mode");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
+ }
+
+
+ /*
+ 1 : Enable
+ 2 : Disable
+ */
+ std::string& CLoadPort::getEnableModeDescription(int mode, std::string& strDescription)
+ {
+ switch (mode) {
+ case 1:
+ strDescription = _T("Enable");
+ break;
+ case 2:
+ strDescription = _T("Disable");
+ break;
+ default:
+ strDescription = _T("");
+ break;
+ }
+
+ return strDescription;
}
}
--
Gitblit v1.9.3