From 9aaa9a97e9c12a433ba4b39b88a7d426a6910d70 Mon Sep 17 00:00:00 2001
From: XingCheng3 <1773407212@qq.com>
Date: Sat, 16 May 2026 13:51:45 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE=E8=B7=B3?=
=?UTF-8?q?=E8=BF=87=E9=87=8D=E9=87=8F=E5=89=8DN=E4=B8=AA=E7=82=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
SCADA/App.config | 10 ++++++----
SCADA/Funtion/MIS_CurveCollector.cs | 11 ++++++++---
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/SCADA/App.config b/SCADA/App.config
index e2bc4c9..ac6d2ff 100644
--- a/SCADA/App.config
+++ b/SCADA/App.config
@@ -30,10 +30,12 @@
-
-
-
-
+
+
+
+
+
+
diff --git a/SCADA/Funtion/MIS_CurveCollector.cs b/SCADA/Funtion/MIS_CurveCollector.cs
index 071774e..200a8e9 100644
--- a/SCADA/Funtion/MIS_CurveCollector.cs
+++ b/SCADA/Funtion/MIS_CurveCollector.cs
@@ -39,6 +39,10 @@ namespace MesWork
ConfigurationManager.AppSettings["CurveStableWindowSize"], out int _stableWindowSize)
? _stableWindowSize : 20;
+ private static readonly int CurveStableSkipStartPointCount = int.TryParse(
+ ConfigurationManager.AppSettings["CurveStableSkipStartPointCount"], out int _skipStartPointCount)
+ ? _skipStartPointCount : 0;
+
///
/// 允许工作后启动曲线采集,每个工位同一时间只保留一个采集段。
///
@@ -236,18 +240,19 @@ namespace MesWork
}
///
- /// 找连续20点中极差最小的一段,去掉一个最大值和一个最小值后取平均。
+ /// 跳过前置配置点数后,找连续稳定窗口中极差最小的一段,去掉一个最大值和一个最小值后取平均。
///
private bool CurveCollector_CalculateStableWeight(List weights, out decimal stableWeight, out int startSeq, out int endSeq)
{
stableWeight = 0;
startSeq = 0;
endSeq = 0;
- if (weights == null || weights.Count < CurveStableWindowSize) return false;
+ int skipStartPointCount = Math.Max(0, CurveStableSkipStartPointCount);
+ if (weights == null || weights.Count - skipStartPointCount < CurveStableWindowSize) return false;
int bestStart = 0; // 0-based窗口起点,保存时转成1-based序号
decimal bestRange = decimal.MaxValue;
- for (int i = 0; i <= weights.Count - CurveStableWindowSize; i++)
+ for (int i = skipStartPointCount; i <= weights.Count - CurveStableWindowSize; i++)
{
decimal min = weights[i];
decimal max = weights[i];