添加配置跳过重量前N个点
This commit is contained in:
@@ -32,6 +32,8 @@
|
|||||||
<add key="CurveCollectorSampleIntervalMs" value="200"/>
|
<add key="CurveCollectorSampleIntervalMs" value="200"/>
|
||||||
<!--曲线稳定窗口点数-->
|
<!--曲线稳定窗口点数-->
|
||||||
<add key="CurveStableWindowSize" value="20"/>
|
<add key="CurveStableWindowSize" value="20"/>
|
||||||
|
<!--最终重量计算时跳过前置称重点数,0=不跳过-->
|
||||||
|
<add key="CurveStableSkipStartPointCount" value="0"/>
|
||||||
|
|
||||||
</appSettings>
|
</appSettings>
|
||||||
<startup>
|
<startup>
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ namespace MesWork
|
|||||||
ConfigurationManager.AppSettings["CurveStableWindowSize"], out int _stableWindowSize)
|
ConfigurationManager.AppSettings["CurveStableWindowSize"], out int _stableWindowSize)
|
||||||
? _stableWindowSize : 20;
|
? _stableWindowSize : 20;
|
||||||
|
|
||||||
|
private static readonly int CurveStableSkipStartPointCount = int.TryParse(
|
||||||
|
ConfigurationManager.AppSettings["CurveStableSkipStartPointCount"], out int _skipStartPointCount)
|
||||||
|
? _skipStartPointCount : 0;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 允许工作后启动曲线采集,每个工位同一时间只保留一个采集段。
|
/// 允许工作后启动曲线采集,每个工位同一时间只保留一个采集段。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -236,18 +240,19 @@ namespace MesWork
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 找连续20点中极差最小的一段,去掉一个最大值和一个最小值后取平均。
|
/// 跳过前置配置点数后,找连续稳定窗口中极差最小的一段,去掉一个最大值和一个最小值后取平均。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private bool CurveCollector_CalculateStableWeight(List<decimal> weights, out decimal stableWeight, out int startSeq, out int endSeq)
|
private bool CurveCollector_CalculateStableWeight(List<decimal> weights, out decimal stableWeight, out int startSeq, out int endSeq)
|
||||||
{
|
{
|
||||||
stableWeight = 0;
|
stableWeight = 0;
|
||||||
startSeq = 0;
|
startSeq = 0;
|
||||||
endSeq = 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序号
|
int bestStart = 0; // 0-based窗口起点,保存时转成1-based序号
|
||||||
decimal bestRange = decimal.MaxValue;
|
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 min = weights[i];
|
||||||
decimal max = weights[i];
|
decimal max = weights[i];
|
||||||
|
|||||||
Reference in New Issue
Block a user