FB_PMA_Harmonics_Period_1Ph
Der Funktionsbaustein FB_PMA_Harmonics_Period_1Ph berechnet die Harmonischen von Strom und Spannung. Zusätzlich wird aus den Harmonischen der THD der Eingangsgrößen berechnet. Im Gegensatz zum Funktionsbaustein FB_PMA_Harmonics_1Ph beziehen sich die Ergebnisse auf eine konfigurierbare Anzahl von Signalperioden. Die Periodendauer bezieht sich auf die zu Periodenbeginn angegebene Frequenz am Eingang der Call-Methode. Die statistischen Ergebnisse beziehen sich auf die gesamte Laufzeit bzw. den Zeitpunkt, an dem zuletzt das Zurücksetzen der statistischen Ergebnisse erfolgt ist.
Der Eingangspuffer wird über den Funktionsbaustein FB_PMA_Source_1Ph bereitgestellt. Dieser kann sowohl eine oder mehrere Signalperioden beinhalten oder auch einzelne Fragmente aus Oversampling-Werten.
Syntax
Definition:
FUNCTION BLOCK FB_PMA_Harmonics_Period_1Ph
VAR_INPUT
nOwnID : UDINT;
tTransferTimeout : LTIME := LTIME#500US;
stInitPars : ST_PMA_Harmonics_Period_InitPars;
END_VAR
VAR_OUTPUT
bError : BOOL;
ipResultMessage : I_TcMessage;
bNewResult : BOOL;
nCntResults : ULINT;
fTHD_U : LREAL;
fTHD_U_Min : LREAL;
fTHD_U_Max : LREAL;
fTHD_I : LREAL;
fTHD_I_Min : LREAL;
fTHD_I_Max : LREAL;
bValidStatistics : BOOL;
END_VAR
Eingänge
Die Eingangsparameter dieses Bausteins repräsentieren Initialisierungsparameter und müssen bereits bei der Deklaration der Funktionsbausteininstanz zugewiesen werden (alternativ: Init-Methode). Sie dürfen nur einmal zugewiesen werden. Eine Änderung zur Laufzeit ist nicht möglich.
Name | Typ | Beschreibung |
---|---|---|
nOwnID | UDINT | Identifiziert die Bausteininstanz mit einer eindeutigen ID. Diese muss immer größer als null sein. Eine bewährte Vorgehensweise ist die Definition einer Enumeration für diesen Zweck. |
tTransferTimeout | LTIME | Einstellung des synchronen Timeout für interne MultiArray-Weiterleitungen. Siehe Parallelverarbeitung im Transfer Tray. |
stInitPars | Bausteinspezifische Struktur mit Initialisierungsparametern. Die Parameter müssen mit der obigen Definition der Ein- und Ausgangspuffer übereinstimmen. |
Ausgänge
Name | Typ | Beschreibung |
---|---|---|
bError | BOOL | TRUE, falls ein Fehler auftritt. |
ipResultMessage | I_TcMessage | Das Interface bietet detaillierte Informationen über den Rückgabewert. |
bNewResult | BOOL | TRUE, sobald neue Ergebnisse berechnet wurden. |
nCntResults | ULINT | Zählwert wird bei neuen Ausgangsdaten inkrementiert. |
fTHD_U | LREAL | THD der Spannung. Die Ausgabe erfolgt in Prozent. |
fTHD_U_Min | LREAL | Kleinster aufgetretener Wert von fTHD_U. Kann über bResetStatistics der Call-Methode zurückgesetzt werden. |
fTHD_U_Max | LREAL | Größter aufgetretener Wert von fTHD_U. Kann über bResetStatistics der Call-Methode zurückgesetzt werden. |
fTHD_I | LREAL | THD des Stroms. Die Ausgabe erfolgt in Prozent. |
fTHD_U_Min | LREAL | Kleinster aufgetretener Wert von fTHD_U. Kann über bResetStatistics der Call-Methode zurückgesetzt werden. |
fTHD_U_Max | LREAL | Größter aufgetretener Wert von fTHD_U. Kann über bResetStatistics der Call-Methode zurückgesetzt werden. |
bValidStatistics | BOOL | TRUE, wenn die Min- und Max-Werteberechnung durchgeführt wurde. Diese Werte sind gültig. |
Methoden
Name | Beschreibung |
---|---|
Die Methode wird in jedem Zyklus aufgerufen, um die Berechnungen aus dem Eingangspuffer durchzuführen, wenn neue Daten vorhanden sind. | |
Alternative zur Bausteininitialisierung | |
Die Methode kann alternativ zur Call-Methode in jedem Zyklus aufgerufen werden, falls keine Berechnung erfolgen soll. Der ankommende Eingangspuffer wird dann entsprechend weitergeleitet. | |
Mit der Methode werden die aktuellen Berechnungen zurückgesetzt. |
Beispiel
VAR CONSTANT
cOversamples : UDINT := 10;
cSourceInitPars: ST_PMA_Source_InitPars := (
nBufferLength := cOversamples);
cFrequencyInitPars : ST_PMA_Frequency_Period_InitPars := (
nBufferLength := cOversamples,
fSampleRate := cOversamples * 1000,
fMinFreq := 45.0,
fMaxFreq := 55.0,
nPeriods := 1,
nFilterOrder := 2,
fCutOff := 70.0,
eInputSelect := E_PMA_InputSelect.Voltage,
fMinInput := 200.0);
cHarmonicsInitPars : ST_PMA_Harmonics_Period_InitPars := (
nBufferLength := cOversamples,
fSampleRate := cOversamples * 1000,
nNumHarmonics := 20,
nPeriods := 10,
bTransformToPercent := TRUE);
END_VAR
VAR
aVoltage AT%I* : ARRAY[1..cOversamples] OF LREAL;
aCurrent AT%I* : ARRAY[1..cOversamples] OF LREAL;
fbSource : FB_PMA_Source_1Ph := (nOwnID := 1, aDestIDs := [2,3], stInitPars := cSourceInitPars);
fbFrequency : FB_PMA_Frequency_Period_1Ph := (nOwnID := 2, stInitPars := cFrequencyInitPars);
fbHarmonics : FB_PMA_Harmonics_Period_1Ph := (nOwnID := 3, stInitPars := cHarmonicsInitPars);
aHarmonicsVoltage : ARRAY[1..20] OF LREAL;
aHarmonicsCurrent : ARRAY[1..20] OF LREAL;
END_VAR
// Call source
fbSource.Call(ADR(aVoltage), ADR(aCurrent), SIZEOF(aVoltage), 0);
// Call algorithms
fbFrequency.Call(FALSE);
fbHarmonics.Call(fbFrequency.fFreq, ADR(aHarmonicsVoltage), ADR(aHarmonicsCurrent), SIZEOF(aHarmonicsVoltage), FALSE);
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4024.0 | PC oder CX (x86, x64) | Tc3_PowerMonitoring |