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];