1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

hook-pmu_dft: fix timetagging of phasor

This commit is contained in:
Steffen Vogel 2022-04-08 17:28:57 +02:00
parent 849876a349
commit 6ab0fbdf13

View file

@ -201,7 +201,7 @@ public:
/* Add signals */
auto freqSig = std::make_shared<Signal>("frequency", "Hz", SignalType::FLOAT);
auto amplSig = std::make_shared<Signal>("amplitude", "V", SignalType::FLOAT);
auto phaseSig = std::make_shared<Signal>("phase", "rad", SignalType::FLOAT);
auto phaseSig = std::make_shared<Signal>("phase", (angleUnitFactor)?"rad":"deg", SignalType::FLOAT);//angleUnitFactor==1 means rad
auto rocofSig = std::make_shared<Signal>("rocof", "Hz/s", SignalType::FLOAT);
if (!freqSig || !amplSig || !phaseSig || !rocofSig)
@ -393,7 +393,6 @@ public:
#ifdef DFT_MEM_DUMP
ppsMemory[smpMemPos % windowSize] = smp->data[ppsIndex].f;
#endif
smpMemPos++;
bool run = false;
double smpNsec = smp->ts.origin.tv_sec * 1e9 + smp->ts.origin.tv_nsec;
@ -451,7 +450,7 @@ public:
}
}
if (windowSize < smpMemPos) {
if (windowSize <= smpMemPos) {
smp->data[i * 4 + 0].f = currentResult.frequency + frequencyOffset; /* Frequency */
smp->data[i * 4 + 1].f = (currentResult.amplitude / pow(2, 0.5)) + amplitudeOffset; /* Amplitude */
@ -477,7 +476,7 @@ public:
else if (timeAlignType == TimeAlign::RIGHT)
tsPos = ((smpMemPos % windowSize) > 0)? (smpMemPos % windowSize) - 1 : windowSize;
else if (timeAlignType == TimeAlign::CENTER) {
tsPos = ((smpMemPos % windowSize) > (windowSize / 2))?
tsPos = ((smpMemPos % windowSize) >= (windowSize / 2))?
(smpMemPos % windowSize) - (windowSize / 2) :
(smpMemPos % windowSize) + (windowSize / 2);
}
@ -491,6 +490,8 @@ public:
lastSequence = smp->sequence;
smpMemPos++;
if (run && windowSize < smpMemPos)
return Reason::OK;