public sealed class RollingPhaseEstimatorPublic NotInheritable Class RollingPhaseEstimatorpublic ref class RollingPhaseEstimator sealedGemstone.PhasorProtocols.SelCWS.RollingPhaseEstimator = function();
Type.createClass(
'Gemstone.PhasorProtocols.SelCWS.RollingPhaseEstimator');This class implements a real-time phasor measurement algorithm suitable for power system applications. It uses a Sliding Discrete Fourier Transform (SDFT) approach to efficiently compute phasors at each sample with O(1) complexity.
Frequency estimation is performed by tracking the rate of change of phase angle from the reference channel (VA by default). The SDFT twiddle factor rotation removes the nominal bin frequency component, so residual phase changes between samples directly represent frequency deviation from nominal. The frequency and ROCOF outputs are smoothed using exponential moving average filters.
The algorithm is designed for nominal 50Hz or 60Hz systems sampled at 3000Hz, but can be configured for other sample rates.
Magnitude Output:
The magnitude output represents the RMS value of the fundamental frequency component.
If input data is already normalized (per-unit values with peak ≈ 1.0), the output RMS
magnitudes will be approximately 1/√2 ≈ 0.707 per unit. To obtain actual engineering
units, multiply output magnitudes by the appropriate scaling factor (e.g., VT/CT ratios
or nominal voltage/current values).
| RollingPhaseEstimator | Initializes a new instance of the RollingPhaseEstimator class with independent input sample rate and output publish rate, plus smoothing expressed as time constants (τ). |
| IsReady | Gets whether the estimator has filled its window and is producing valid estimates. |
| NominalFrequencyHz | Gets the nominal frequency in Hz. |
| OutputRateHz | Gets the configured output publish rate in Hz. |
| ReferenceChannel | Gets the reference channel index used for frequency tracking (typically VA). |
| SampleRateHz | Gets the configured sample rate in Hz. |
| TotalSamplesProcessed | Gets the total number of samples processed. |
| WindowSamples | Gets the number of samples in the analysis window. |
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object) |
| GetHashCode | Serves as the default hash function. (Inherited from Object) |
| GetType | Gets the Type of the current instance. (Inherited from Object) |
| Reset | Resets the estimator to its initial state. |
| Step | Push one interleaved sample-group (IA, IB, IC, VA, VB, VC) with its epoch nanoseconds. |
| ToString | Returns a string that represents the current object. (Inherited from Object) |
| DefaultEnableIntervalAveraging | Default value for determining if interval averaging is enabled. |
| DefaultEnablePublishEMA | Default value for determining if EMA publishing is enabled. |
| DefaultPublishAnglesTauSeconds | Default value for EMA time constant τ (seconds) published angles. |
| DefaultPublishFrequencyTauSeconds | Default value for EMA time constant τ (seconds) published frequency. |
| DefaultPublishMagnitudesTauSeconds | Default value for EMA time constant τ (seconds) published RMS magnitudes. |
| DefaultPublishRocofTauSeconds | Default value for EMA time constant τ (seconds) published ROCOF. |
| DefaultRecalculationCycles | Default value for number of recalculation cycles. |
| DefaultReferenceChannel | Default value for reference channel. |
| DefaultSampleFrequencyTauSeconds | Default value for EMA time constant τ (seconds) published for the internal per-sample frequency smoothing. |
| DefaultSampleRocofTauSeconds | Default value for EMA time constant τ (seconds) published for the internal per-sample ROCOF smoothing. |
| DefaultTargetCycles | Default value for number of target cycles. |