FB_PMA_Harmonics_Period_3Ph
Der Funktionsbaustein FB_PMA_Harmonics_Period_3Ph 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_3Ph 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_3Ph bereitgestellt. Dieser kann sowohl eine oder mehrere Signalperioden beinhalten oder auch einzelne Fragmente aus Oversampling-Werten.
Syntax
Definition:
FUNCTION BLOCK FB_PMA_PowerValues_Period_3Ph
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;
aTHD_U : ARRAY[0..2] OF LREAL;
aTHD_U_Min : ARRAY[0..2] OF LREAL;
aTHD_U_Max : ARRAY[0..2] OF LREAL;
aTHD_I : ARRAY[0..2] OF LREAL;
aTHD_I_Min : ARRAY[0..2] OF LREAL;
aTHD_I_Max : ARRAY[0..2] OF 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. |
aTHD_U | ARRAY[0..2] OF LREAL | THD der Spannung. Die Ausgabe erfolgt in Prozent. |
aTHD_U_Min | ARRAY[0..2] OF LREAL | Kleinster aufgetretener Wert von aTHD_U. Kann über bResetStatistics der Call-Methode zurückgesetzt werden. |
aTHD_U_Max | ARRAY[0..2] OF LREAL | Größter aufgetretener Wert von aTHD_U. Kann über bResetStatistics der Call-Methode zurückgesetzt werden. |
aTHD_I | ARRAY[0..2] OF LREAL | THD des Stroms. Die Ausgabe erfolgt in Prozent. |
aTHD_U_Min | ARRAY[0..2] OF LREAL | Kleinster aufgetretener Wert von aTHD_U. Kann über bResetStatistics der Call-Methode zurückgesetzt werden. |
aTHD_U_Max | ARRAY[0..2] OF LREAL | Größter aufgetretener Wert von aTHD_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);
cPowerValuesInitPars : ST_PMA_PowerValues_Period_InitPars := (
nBufferLength := cOversamples,
fSampleRate := cOversamples * 1000,
fMinInputCurrent := 0.01,
nPeriods := 1);
END_VAR
VAR
aVoltage AT%I* : ARRAY[0..2] OF ARRAY [1..cOversamples] OF LREAL;
aCurrent AT%I* : ARRAY[0..2] OF ARRAY [1..cOversamples] OF LREAL;
fbSource : FB_PMA_Source_3Ph := (nOwnID := 1, aDestIDs := [2,3], stInitPars := cSourceInitPars);
fbFrequency : FB_PMA_Frequency_Period_3Ph := (nOwnID := 2, stInitPars := cFrequencyInitPars);
fbPowerValues : FB_PMA_PowerValues_Period_3Ph := (nOwnID := 3, stInitPars := cPowerValuesInitPars);
END_VAR
// Call source
fbSource.Call(
ADR(aVoltage[0]),
ADR(aVoltage[1]),
ADR(aVoltage[2]),
ADR(aCurrent[0]),
ADR(aCurrent[1]),
ADR(aCurrent[2]),
SIZEOF(aVoltage[0]),
0);
// Call algorithms
fbFrequency.Call(FALSE);
fbPowerValues.Call(fbFrequency.aFreq[0], FALSE, FALSE);
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4024.0 | PC oder CX (x86, x64) | Tc3_PowerMonitoring |