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