添加配置跳过重量前N个点
This commit is contained in:
@@ -30,10 +30,12 @@
|
||||
|
||||
<!--曲线采样间隔(ms)-->
|
||||
<add key="CurveCollectorSampleIntervalMs" value="200"/>
|
||||
<!--曲线稳定窗口点数-->
|
||||
<add key="CurveStableWindowSize" value="20"/>
|
||||
|
||||
</appSettings>
|
||||
<!--曲线稳定窗口点数-->
|
||||
<add key="CurveStableWindowSize" value="20"/>
|
||||
<!--最终重量计算时跳过前置称重点数,0=不跳过-->
|
||||
<add key="CurveStableSkipStartPointCount" value="0"/>
|
||||
|
||||
</appSettings>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
||||
</startup>
|
||||
|
||||
@@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// 允许工作后启动曲线采集,每个工位同一时间只保留一个采集段。
|
||||
/// </summary>
|
||||
@@ -236,18 +240,19 @@ namespace MesWork
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 找连续20点中极差最小的一段,去掉一个最大值和一个最小值后取平均。
|
||||
/// 跳过前置配置点数后,找连续稳定窗口中极差最小的一段,去掉一个最大值和一个最小值后取平均。
|
||||
/// </summary>
|
||||
private bool CurveCollector_CalculateStableWeight(List<decimal> 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];
|
||||
|
||||
Reference in New Issue
Block a user