From 874993222ab785bedd1525ef3335f6714a3ca6e0 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期四, 11 九月 2025 09:16:42 +0800
Subject: [PATCH] 1. SG精度检写入日志文件 2. SG精度检结果可以是负数 3. 添加读取产品ID功能
---
SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp b/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp
index bef7669..d5869c7 100644
--- a/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp
+++ b/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp
@@ -31,6 +31,10 @@
#define PLC_RESULT_ADDR_START 0x37B0 // PLC结果寄存器起始地址(如W37B0)
#define PLC_RESULT_ADDR_COUNT 4 // 结果寄存器数量(如W37B0, W37B2, W37B4, W37B6)
+// === PLC 产品ID配置(PLC -> PC)===
+#define PLC_PRODUCT_ID_ADDR 0x1B160 // 产品ID起始地址 (W1B160)
+#define PLC_PRODUCT_ID_WORDS 10 // 产品ID长度(10个Word)
+
#define IS_RISING_EDGE(prev, curr) (!(prev) && (curr))
CPLCSignalListener::CPLCSignalListener() = default;
@@ -250,6 +254,13 @@
m_vecAckSent[i] = true;
m_vecAckCounter[i] = 0;
}
+
+ std::string strProductID;
+ if (ReadProductID(strProductID)) {
+ CString msg;
+ msg.Format(_T("读取到产品ID:%s"), strProductID.c_str());
+ LOG_MSG(msg, LOG_TYPE_SUCCESS);
+ }
}
break;
@@ -306,4 +317,39 @@
}
return true;
+}
+
+bool CPLCSignalListener::ReadProductID(std::string& strProductID)
+{
+ if (!m_pPlc || !m_bConnected) {
+ LOG_MSG(_T("PLC未连接或未初始化,无法读取产品ID。"), LOG_TYPE_ERROR);
+ return false;
+ }
+
+ WordContainer vec;
+ int ret = m_pPlc->ReadWordDataEx(m_station, PLC_WORD_DEVICE_TYPE, PLC_PRODUCT_ID_ADDR, PLC_PRODUCT_ID_WORDS, vec);
+ if (ret != 0 || vec.size() != PLC_PRODUCT_ID_WORDS) {
+ CString msg;
+ msg.Format(_T("读取产品ID失败,错误码=%d"), ret);
+ LOG_MSG(msg, LOG_TYPE_ERROR);
+ return false;
+ }
+
+ strProductID.clear();
+ for (auto w : vec) {
+ char c1 = static_cast<char>(w & 0xFF); // 低字节
+ char c2 = static_cast<char>((w >> 8) & 0xFF); // 高字节
+
+ if (c1 == '\0') {
+ break;
+ }
+ strProductID.push_back(c1);
+
+ if (c2 == '\0') {
+ break;
+ }
+ strProductID.push_back(c2);
+ }
+
+ return true;
}
\ No newline at end of file
--
Gitblit v1.9.3