From da9df9d46ed3fc50e0c03497bd9f76b8aa1a4595 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期三, 14 一月 2026 15:37:48 +0800
Subject: [PATCH] 1.修复以下问题: 作业前置条件不足导致 PJ 验证失败:onPRJobMultiCreate 调 CMaster::setProcessJobs,CProcessJob::validate 要求“当前没有其它 PJ”(issue 1000),且 carrierPresent/slotUsable 必须为真。只要本地还有未结批的 PJ/CJ 或载具/槽位状态未就绪(ID 未绑、Slot 未使能),Host 发送的 CreateMultiPJ 会直接被丢弃(返回 size=0),但当前代码没有向 Host 回 ACK/NAK,Host 会误以为创建成功。
---
SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp | 25 ++++++++++++++++---------
1 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp b/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp
index 4176b59..ab32e61 100644
--- a/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp
+++ b/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp
@@ -1,4 +1,4 @@
-#include "pch.h"
+锘�#include "pch.h"
#include "PLCSignalListener.h"
// === 鏃ュ織鎵撳嵃绫诲瀷 ===
@@ -247,13 +247,10 @@
// 涓婂崌娌胯Е鍙�
switch (i) {
case 0:
+ // Start 鍛戒护
if (m_cbStart) {
m_cbStart();
WriteOutValues(OutValuesArray{ 0.0, 0.0, 0.0, 0.0 });
- if (m_pPlc->SetBitDeviceEx(m_station, PLC_BIT_DEVICE_TYPE, PLC_ACK_BASE_BIT + i) == 0) {
- m_vecAckSent[i] = true;
- m_vecAckCounter[i] = 0;
- }
std::string strProductID;
if (ReadProductID(strProductID)) {
@@ -262,21 +259,31 @@
LOG_MSG(msg, LOG_TYPE_SUCCESS);
}
}
+
+ // 鍙戦�佸簲绛斾俊鍙�
+ if (m_pPlc->SetBitDeviceEx(m_station, PLC_BIT_DEVICE_TYPE, PLC_ACK_BASE_BIT + i) == 0) {
+ m_vecAckSent[i] = true;
+ m_vecAckCounter[i] = 0;
+ }
break;
case 1:
+ // Stop 鍛戒护
if (m_cbStop) {
m_cbStop();
- if (m_pPlc->SetBitDeviceEx(m_station, PLC_BIT_DEVICE_TYPE, PLC_ACK_BASE_BIT + i) == 0) {
- m_vecAckSent[i] = true;
- m_vecAckCounter[i] = 0;
- }
}
+ // Analyze 鍛戒护
if (m_cbAnalyze) {
auto results = m_cbAnalyze();
WriteOutValues(results);
}
+
+ // 鍙戦�佸簲绛斾俊鍙�
+ if (m_pPlc->SetBitDeviceEx(m_station, PLC_BIT_DEVICE_TYPE, PLC_ACK_BASE_BIT + i) == 0) {
+ m_vecAckSent[i] = true;
+ m_vecAckCounter[i] = 0;
+ }
break;
}
}
--
Gitblit v1.9.3