Esempio n. 1
0
        protected override ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue)
        {
            if (!(condition is ICpkCondition cpkCondition))
            {
                _parameters.Logger.Error($"No {nameof(cpkCondition)} condition received for settings creation.");
                return(null);
            }

            if (!(referenceValue is IReferenceValue <double>))
            {
                throw new ArgumentException($"The received reference value is not {nameof(IReferenceValue<double>)}");
            }

            List <double> validElementList = GetValidElementList(measurementSerieData);

            double average = GetAverage(validElementList);
            double std     = GetStandardDeviation(validElementList, average);
            double usl     = average + cpkCondition.HalfTolerance;
            double lsl     = average - cpkCondition.HalfTolerance;
            double cp      = (usl - lsl) / (6 * std);

            _parameters.Logger.LogMethodTrace($"{nameof(StdCalculation1D)}: Calculated  Cp: {cp}, USL: {usl}, LSL: {lsl}, average: {average}");

            return(new QCellsCalculationResult(_parameters.DateTimeProvider.GetDateTime(),
                                               true,
                                               measurementSerieData,
                                               cp,
                                               usl,
                                               lsl,
                                               average));
        }
Esempio n. 2
0
 protected CalculationResult(DateTime creationTime, bool successful, IMeasurementSerie measurementSerie, T result, T average)
     : base(creationTime, successful)
 {
     MeasurementSerie = measurementSerie;
     ResultValue      = result;
     Average          = average;
 }
Esempio n. 3
0
        protected override ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue)
        {
            List <double> validElementList = GetValidElementList(measurementSerieData);
            double        average          = GetAverage(validElementList);

            _parameters.Logger.LogTrace($"{nameof(AverageCalculation1D)}: Calculated average: {average}.");

            return(new SimpleCalculationResult(_parameters.DateTimeProvider.GetDateTime(),
                                               true,
                                               measurementSerieData,
                                               average,
                                               average));
        }
Esempio n. 4
0
        protected override ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue)
        {
            List <double> validElementList = measurementSerieData.MeasuredPoints.Where(p => p.Valid).Select(p => p.Value).ToList();

            double average = GetAverage(validElementList);

            double std = GetStandardDeviation(validElementList, average);

            _parameters.Logger.LogTrace($"{nameof(StdCalculation1D)}: Calculated standard devaition: {std}, average: {average}");

            return(new SimpleCalculationResult(_parameters.DateTimeProvider.GetDateTime(),
                                               true,
                                               measurementSerieData,
                                               std,
                                               average));
        }
Esempio n. 5
0
        public ICalculationResult Calculate(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue)
        {
            if (measurementSerieData?.MeasuredPoints == null)
            {
                _parameters.Logger.LogError("Received measdata is null.");
                return(null);
            }

            try
            {
                if (condition.CalculationTypeHandler.CalculationType != CalculationType)
                {
                    throw new ArgumentException($"The current calculation (type: {CalculationType}) can not run with the received condition {condition.CalculationTypeHandler}");
                }

                return(InternalCalculation(measurementSerieData, condition, referenceValue));
            }
            catch (Exception ex)
            {
                _parameters.Logger.LogError($"Exception occured:{ex.Message}");
                return(null);
            }
        }
Esempio n. 6
0
        protected override ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue)
        {
            if (!(condition is ICpkCondition cpkCondition))
            {
                throw new ArgumentNullException($"No {nameof(ICpkCondition)} condition received for {CalculationType} settings creation.");
            }

            // CpkCalculation changes into CpCalculation
            if (referenceValue == null)
            {
                return(base.InternalCalculation(measurementSerieData, condition, null));
            }

            if (!(referenceValue is IReferenceValue <double> doubleReferenceValue))
            {
                throw new ArgumentException($"The received reference value is not {nameof(IReferenceValue<double>)}");
            }

            List <double> validElementList = GetValidElementList(measurementSerieData);

            double average = GetAverage(validElementList);
            double std     = GetStandardDeviation(validElementList, average);
            double usl     = doubleReferenceValue.Value + cpkCondition.HalfTolerance;
            double lsl     = doubleReferenceValue.Value - cpkCondition.HalfTolerance;
            double cpk     = Math.Min((average - usl) / (3 * std), (lsl - average) / (3 * std));

            _parameters.Logger.LogMethodTrace($"{nameof(StdCalculation1D)}: Calculated  Cp: {cpk}, USL: {usl}, LSL: {lsl}, average:{average}");

            return(new QCellsCalculationResult(_parameters.DateTimeProvider.GetDateTime(),
                                               true,
                                               measurementSerieData,
                                               cpk,
                                               usl,
                                               lsl,
                                               average));
        }
Esempio n. 7
0
 protected virtual List <double> GetValidElementList(IMeasurementSerie measurementSerieData)
 {
     return(measurementSerieData.MeasuredPoints.Where(p => p.Valid).Select(p => p.Value).ToList());
 }
Esempio n. 8
0
 protected abstract ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue);
Esempio n. 9
0
 public SimpleCalculationResult(DateTime creationTime, bool successful, IMeasurementSerie measurementSerie, double result, double average)
     : base(creationTime, successful, measurementSerie, result, average)
 {
 }
Esempio n. 10
0
 public QCellsCalculationResult(DateTime creationTime, bool successful, IMeasurementSerie measurementSerie, double result, double usl, double lsl, double average)
     : base(creationTime, successful, measurementSerie, result, average)
 {
     USL = usl;
     LSL = lsl;
 }