Power System Platform  2026w23a-beta
Loading...
Searching...
No Matches
PhasorEstimator Class Reference

Public Member Functions

 PhasorEstimator (double sampleRate=1e6, double notchRadius=0.5)
 
void Reset ()
 
void UpdateFrequency (double freq)
 
void Update (double current, double phase, double freq)
 
double GetId () const
 
double GetIq () const
 
double GetMagnitude () const
 
double GetAngle () const
 

Private Attributes

double Fs
 
double r
 
double lastFreq
 
double b0
 
double b1
 
double b2
 
double a1
 
double a2
 
double x1Id
 
double x2Id
 
double y1Id
 
double y2Id
 
double x1Iq
 
double x2Iq
 
double y1Iq
 
double y2Iq
 
double Id
 
double Iq
 

Detailed Description

Definition at line 7 of file PSPModel.cpp.

Constructor & Destructor Documentation

◆ PhasorEstimator()

PhasorEstimator::PhasorEstimator ( double  sampleRate = 1e6,
double  notchRadius = 0.5 
)
inline

Definition at line 11 of file PSPModel.cpp.

11 : Fs(sampleRate), r(notchRadius)
12 {
13 Reset();
14 UpdateFrequency(60.0);
15 }

Member Function Documentation

◆ GetAngle()

double PhasorEstimator::GetAngle ( ) const
inline

Definition at line 113 of file PSPModel.cpp.

114 {
115 return atan2(GetIq(),GetId());
116 }

◆ GetId()

double PhasorEstimator::GetId ( ) const
inline

Definition at line 95 of file PSPModel.cpp.

96 {
97 return sqrt(2.0)*Id;
98 }

◆ GetIq()

double PhasorEstimator::GetIq ( ) const
inline

Definition at line 100 of file PSPModel.cpp.

101 {
102 return sqrt(2.0)*Iq;
103 }

◆ GetMagnitude()

double PhasorEstimator::GetMagnitude ( ) const
inline

Definition at line 105 of file PSPModel.cpp.

106 {
107 double ir = GetId();
108 double ii = GetIq();
109
110 return sqrt(ir*ir+ii*ii);
111 }

◆ Reset()

void PhasorEstimator::Reset ( )
inline

Definition at line 17 of file PSPModel.cpp.

18 {
19 x1Id = x2Id = 0.0;
20 y1Id = y2Id = 0.0;
21
22 x1Iq = x2Iq = 0.0;
23 y1Iq = y2Iq = 0.0;
24
25 Id = 0.0;
26 Iq = 0.0;
27
28 lastFreq = -1.0;
29 }

◆ Update()

void PhasorEstimator::Update ( double  current,
double  phase,
double  freq 
)
inline

Definition at line 58 of file PSPModel.cpp.

61 {
62 UpdateFrequency(freq);
63
64 double s = sin(phase);
65 double c = cos(phase);
66
67 double IdRaw = current*s;
68 double IqRaw = current*c;
69
70 //-----------------------------------
71 // Id
72 //-----------------------------------
73
74 Id = b0*IdRaw + b1*x1Id + b2*x2Id - a1*y1Id - a2*y2Id;
75
76 x2Id = x1Id;
77 x1Id = IdRaw;
78
79 y2Id = y1Id;
80 y1Id = Id;
81
82 //-----------------------------------
83 // Iq
84 //-----------------------------------
85
86 Iq = b0*IqRaw + b1*x1Iq + b2*x2Iq - a1*y1Iq - a2*y2Iq;
87
88 x2Iq = x1Iq;
89 x1Iq = IqRaw;
90
91 y2Iq = y1Iq;
92 y1Iq = Iq;
93 }

◆ UpdateFrequency()

void PhasorEstimator::UpdateFrequency ( double  freq)
inline

Definition at line 31 of file PSPModel.cpp.

32 {
33 if(std::abs(freq-lastFreq) < 1e-9)
34 return;
35
36 lastFreq = freq;
37
38 double w0 = 2.0*M_PI*(2.0*freq)/Fs;
39
40 double c = cos(w0);
41
42 double bb0 = 1.0;
43 double bb1 = -2.0*c;
44 double bb2 = 1.0;
45
46 a1 = -2.0*r*c;
47 a2 = r*r;
48
49 double gain =
50 (1.0+a1+a2)/
51 (bb0+bb1+bb2);
52
53 b0 = gain*bb0;
54 b1 = gain*bb1;
55 b2 = gain*bb2;
56 }

Member Data Documentation

◆ a1

double PhasorEstimator::a1
private

Definition at line 126 of file PSPModel.cpp.

◆ a2

double PhasorEstimator::a2
private

Definition at line 126 of file PSPModel.cpp.

◆ b0

double PhasorEstimator::b0
private

Definition at line 125 of file PSPModel.cpp.

◆ b1

double PhasorEstimator::b1
private

Definition at line 125 of file PSPModel.cpp.

◆ b2

double PhasorEstimator::b2
private

Definition at line 125 of file PSPModel.cpp.

◆ Fs

double PhasorEstimator::Fs
private

Definition at line 120 of file PSPModel.cpp.

◆ Id

double PhasorEstimator::Id
private

Definition at line 144 of file PSPModel.cpp.

◆ Iq

double PhasorEstimator::Iq
private

Definition at line 145 of file PSPModel.cpp.

◆ lastFreq

double PhasorEstimator::lastFreq
private

Definition at line 123 of file PSPModel.cpp.

◆ r

double PhasorEstimator::r
private

Definition at line 121 of file PSPModel.cpp.

◆ x1Id

double PhasorEstimator::x1Id
private

Definition at line 132 of file PSPModel.cpp.

◆ x1Iq

double PhasorEstimator::x1Iq
private

Definition at line 139 of file PSPModel.cpp.

◆ x2Id

double PhasorEstimator::x2Id
private

Definition at line 132 of file PSPModel.cpp.

◆ x2Iq

double PhasorEstimator::x2Iq
private

Definition at line 139 of file PSPModel.cpp.

◆ y1Id

double PhasorEstimator::y1Id
private

Definition at line 133 of file PSPModel.cpp.

◆ y1Iq

double PhasorEstimator::y1Iq
private

Definition at line 140 of file PSPModel.cpp.

◆ y2Id

double PhasorEstimator::y2Id
private

Definition at line 133 of file PSPModel.cpp.

◆ y2Iq

double PhasorEstimator::y2Iq
private

Definition at line 140 of file PSPModel.cpp.


The documentation for this class was generated from the following file: