mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-09 00:00:00 +01:00
add capability to compensate for phase, amplitude, frequency and rocof offset
This commit is contained in:
parent
53f94dad46
commit
7fc87985a7
1 changed files with 19 additions and 7 deletions
|
@ -134,6 +134,10 @@ protected:
|
|||
Dumper phasorFreq;
|
||||
|
||||
double angleUnitFactor;
|
||||
double phaseOffset;
|
||||
double frequencyOffset;
|
||||
double amplitudeOffset;
|
||||
double rocofOffset;
|
||||
|
||||
public:
|
||||
PmuDftHook(Path *p, Node *n, int fl, int prio, bool en = true) :
|
||||
|
@ -181,7 +185,11 @@ public:
|
|||
phasorPhase(dumperPrefix + "phasorPhase"),
|
||||
phasorAmplitude(dumperPrefix + "phasorAmplitude"),
|
||||
phasorFreq(dumperPrefix + "phasorFreq"),
|
||||
angleUnitFactor(1)
|
||||
angleUnitFactor(1),
|
||||
phaseOffset(0.0),
|
||||
frequencyOffset(0.0),
|
||||
amplitudeOffset(0.0),
|
||||
rocofOffset(0.0)
|
||||
{ }
|
||||
|
||||
virtual void prepare()
|
||||
|
@ -285,7 +293,7 @@ public:
|
|||
|
||||
Hook::parse(json);
|
||||
|
||||
ret = json_unpack_ex(json, &err, 0, "{ s?: i, s?: F, s?: F, s?: F, s?: i, s?: i, s?: s, s?: s, s?: s, s?: b, s?: i, s?: s, s?: b, s?: s}",
|
||||
ret = json_unpack_ex(json, &err, 0, "{ s?: i, s?: F, s?: F, s?: F, s?: i, s?: i, s?: s, s?: s, s?: s, s?: b, s?: i, s?: s, s?: b, s?: s, s?: F, s?: F, s?: F, s?: F}",
|
||||
"sample_rate", &sampleRate,
|
||||
"start_freqency", &startFrequency,
|
||||
"end_freqency", &endFreqency,
|
||||
|
@ -299,7 +307,11 @@ public:
|
|||
"pps_index", &ppsIndex,
|
||||
"angle_unit", &angleUnitC,
|
||||
"add_channel_name", &channelNameEnable,
|
||||
"timestamp", &timeAlignC
|
||||
"timestamp", &timeAlignC,
|
||||
"phase_offset", &phaseOffset,
|
||||
"amplitude_offset", &litudeOffset,
|
||||
"frequency_offset", &frequencyOffset,
|
||||
"rocof_offset", &rocofOffset
|
||||
);
|
||||
if (ret)
|
||||
throw ConfigError(json, err, "node-config-hook-dft");
|
||||
|
@ -446,10 +458,10 @@ public:
|
|||
|
||||
if (windowSize < smpMemPos) {
|
||||
|
||||
smp->data[i * 4 + 0].f = currentResult.frequency; /* Frequency */
|
||||
smp->data[i * 4 + 1].f = (currentResult.amplitude / pow(2, 0.5)); /* Amplitude */
|
||||
smp->data[i * 4 + 2].f = currentResult.phase; /* Phase */
|
||||
smp->data[i * 4 + 3].f = (currentResult.frequency - lastResult[i].frequency) * (double)rate; /* ROCOF */;
|
||||
smp->data[i * 4 + 0].f = currentResult.frequency + frequencyOffset; /* Frequency */
|
||||
smp->data[i * 4 + 1].f = (currentResult.amplitude / pow(2, 0.5)) + amplitudeOffset; /* Amplitude */
|
||||
smp->data[i * 4 + 2].f = currentResult.phase + phaseOffset; /* Phase */
|
||||
smp->data[i * 4 + 3].f = ((currentResult.frequency - lastResult[i].frequency) * (double)rate) + rocofOffset; /* ROCOF */;
|
||||
lastResult[i] = currentResult;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue