private void InitializePhasors() { if (m_phasorType.Equals("Voltage")) { m_inputPhasor = new PhasorMeasurement(m_magnitudeInputKey, m_angleInputKey, SynchrophasorAnalytics.Measurements.PhasorType.VoltagePhasor, new VoltageLevel(1, m_baseKv)); m_outputPhasor = new PhasorEstimate(m_magnitudeOutputKey, m_angleOutputKey, SynchrophasorAnalytics.Measurements.PhasorType.VoltagePhasor, new VoltageLevel(1, m_baseKv)); } else if (m_phasorType.Equals("Current")) { m_inputPhasor = new PhasorMeasurement(m_magnitudeInputKey, m_angleInputKey, SynchrophasorAnalytics.Measurements.PhasorType.CurrentPhasor, new VoltageLevel(1, m_baseKv)); m_outputPhasor = new PhasorEstimate(m_magnitudeOutputKey, m_angleOutputKey, SynchrophasorAnalytics.Measurements.PhasorType.CurrentPhasor, new VoltageLevel(1, m_baseKv)); } }
/// <summary> /// A constructor method for the <see cref="LinearStateEstimator.DataConditioning.Smoothing.Smoother"/> class. /// </summary> /// <param name="destinationPhasor">The <see cref="LinearStateEstimator.Measurements.PhasorEstimate"/> where the results will be pushed to.</param> /// <param name="tolerance">The tolerance, in per unit, for the algorithm.</param> /// <param name="numericalTolerance">The numerical tolerance for repeated values.</param> /// <param name="maxNumberOfBadDataBeforeReset">The number of sub optimal predictions that can be made before the algorithm will reset itself.</param> public Smoother(PhasorEstimate destinationPhasor, double tolerance, double numericalTolerance, int maxNumberOfBadDataBeforeReset) { m_output = destinationPhasor; m_tolerance = tolerance; m_numericalToleranceForRepeatedValues = numericalTolerance; m_maxNumberOfSubOptimalDataPoints = maxNumberOfBadDataBeforeReset; // Allow the Kalman filter to begin tracking before imposing data quality restrictions m_isStable = false; m_countdownToStabilization = 10; Initialize(); }
/// <summary> /// The default constructor for the <see cref="SynchrophasorAnalytics.DataConditioning.Smoothing.Smoother"/> class. Uses a default tolerance of 0.05 p.u. /// </summary> /// <param name="destinationPhasor">The <see cref="SynchrophasorAnalytics.Measurements.PhasorEstimate"/> where the results will be pushed to.</param> public Smoother(PhasorEstimate destinationPhasor) : this(destinationPhasor, 0.05, 0.000001, MAX_BUFFER_SIZE) { }