Definition at line 7 of file PSPModel.cpp.
◆ 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 }
◆ 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
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
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 }
◆ a1
| double PhasorEstimator::a1 |
|
private |
◆ a2
| double PhasorEstimator::a2 |
|
private |
◆ b0
| double PhasorEstimator::b0 |
|
private |
◆ b1
| double PhasorEstimator::b1 |
|
private |
◆ b2
| double PhasorEstimator::b2 |
|
private |
◆ Fs
| double PhasorEstimator::Fs |
|
private |
◆ Id
| double PhasorEstimator::Id |
|
private |
◆ Iq
| double PhasorEstimator::Iq |
|
private |
◆ lastFreq
| double PhasorEstimator::lastFreq |
|
private |
| double PhasorEstimator::r |
|
private |
◆ x1Id
| double PhasorEstimator::x1Id |
|
private |
◆ x1Iq
| double PhasorEstimator::x1Iq |
|
private |
◆ x2Id
| double PhasorEstimator::x2Id |
|
private |
◆ x2Iq
| double PhasorEstimator::x2Iq |
|
private |
◆ y1Id
| double PhasorEstimator::y1Id |
|
private |
◆ y1Iq
| double PhasorEstimator::y1Iq |
|
private |
◆ y2Id
| double PhasorEstimator::y2Id |
|
private |
◆ y2Iq
| double PhasorEstimator::y2Iq |
|
private |
The documentation for this class was generated from the following file: