83 lines
1.4 KiB
C#
83 lines
1.4 KiB
C#
|
using System;
|
||
|
using System.Runtime.Serialization;
|
||
|
|
||
|
namespace MECF.Framework.Common.CommonData
|
||
|
{
|
||
|
[Serializable]
|
||
|
[DataContract]
|
||
|
public class FdcDataItem
|
||
|
{
|
||
|
[DataMember]
|
||
|
public string Name { get; set; }
|
||
|
|
||
|
[DataMember]
|
||
|
public float MaxValue { get; set; }
|
||
|
|
||
|
[DataMember]
|
||
|
public float MinValue { get; set; }
|
||
|
|
||
|
[DataMember]
|
||
|
public float MeanValue
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (SampleCount == 0)
|
||
|
{
|
||
|
return 0f;
|
||
|
}
|
||
|
return Total / (float)SampleCount;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[DataMember]
|
||
|
public float StdValue
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (SampleCount <= 1)
|
||
|
{
|
||
|
return 0f;
|
||
|
}
|
||
|
return (float)Math.Sqrt(Math.Abs((SqrtTotal - 2f * (Total / (float)SampleCount) * Total + (float)SampleCount * (Total / (float)SampleCount) * (Total / (float)SampleCount)) / (float)(SampleCount - 1)));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[DataMember]
|
||
|
public float SetPoint { get; set; }
|
||
|
|
||
|
[DataMember]
|
||
|
public float Total { get; set; }
|
||
|
|
||
|
[DataMember]
|
||
|
public float SqrtTotal { get; set; }
|
||
|
|
||
|
[DataMember]
|
||
|
public int SampleCount { get; set; }
|
||
|
|
||
|
public void Clear()
|
||
|
{
|
||
|
MaxValue = float.MinValue;
|
||
|
MinValue = float.MaxValue;
|
||
|
SetPoint = 0f;
|
||
|
Total = 0f;
|
||
|
SampleCount = 0;
|
||
|
SqrtTotal = 0f;
|
||
|
}
|
||
|
|
||
|
public void Update(float value)
|
||
|
{
|
||
|
if (value < MinValue)
|
||
|
{
|
||
|
MinValue = value;
|
||
|
}
|
||
|
if (value > MaxValue)
|
||
|
{
|
||
|
MaxValue = value;
|
||
|
}
|
||
|
Total += value;
|
||
|
SqrtTotal += value * value;
|
||
|
SampleCount++;
|
||
|
}
|
||
|
}
|
||
|
}
|