FB_PMA_PowerValues_3Ph

The function block FB_PMA_PowerValues_3Ph calculates the power values of the connected consumer in a three-phase grid. These include the fundamental components and the phase shift angle. Internally, the individual harmonics and their phase angle are determined for the calculations.

Alternatively, the function block FB_PMA_PowerValues_Period_3Ph can be used for the calculation. It uses simpler calculation methods for enhanced dynamics.

The input buffer is provided via the function block FB_PMA_Source_3Ph. The size of the input buffer is half the window length.

By way of example, possible FFT and window lengths are shown in the following table:

FFT length

Window length

Buffer length

512

29

400

200

1024

210

800

400

2048

211

1600

800

4096

212

3200

1600

8192

213

6400

3200

16384

214

12800

6400

Memory properties

Since the Welch method is used, in each case the current input buffer together with the last transferred buffer is used for the calculation.

The frequency analysis takes step changes in the time series into account. In order to achieve a correct result, the last two input buffers should therefore be consecutive without step changes.

Syntax

Definition:

FUNCTION BLOCK FB_PMA_PowerValues_3Ph
VAR_INPUT
    nOwnID                 : UDINT;
    tTransferTimeout       : LTIME := LTIME#500US;
    stInitPars             : ST_PMA_PowerValues_InitPars;
END_VAR
VAR_OUTPUT
    bError                 : BOOL;
    ipResultMessage        : I_TcMessage;
    bNewResult             : BOOL;
    nCntResults            : ULINT;
    aApparentPower         : ARRAY[0..2] OF LREAL;
    aApparentPower_1       : ARRAY[0..2] OF LREAL;
    aApparentPower_1_Min   : ARRAY[0..2] OF LREAL;
    aApparentPower_1_Max   : ARRAY[0..2] OF LREAL;
    aActivePower           : ARRAY[0..2] OF LREAL;
    aActivePower_Min       : ARRAY[0..2] OF LREAL;
    aActivePower_Max       : ARRAY[0..2] OF LREAL;
    aReactivePower_d       : ARRAY[0..2] OF LREAL;
    aReactivePower_1       : ARRAY[0..2] OF LREAL;
    aReactivePower_1_Min   : ARRAY[0..2] OF LREAL;
    aReactivePower_1_Max   : ARRAY[0..2] OF LREAL;
    aTotalReactivePower    : ARRAY[0..2] OF LREAL;
    aPhi                   : ARRAY[0..2] OF LREAL;
    aCosPhi                : ARRAY[0..2] OF LREAL;
    aPowerFactor           : ARRAY[0..2] OF LREAL;
    fSumApparentPower      : LREAL;
    fSumActivePower        : LREAL;
    fSumTotalReactivePower : LREAL;
    fSumReactivePower_1    : LREAL;
    bValidStatistics       : BOOL;
END_VAR
VAR_OUTPUT PERSISTENT
    aEnergy_Pos            : ARRAY[0..2] OF ST_PMA_Energy;
    aEnergy_Neg            : ARRAY[0..2] OF ST_PMA_Energy;
    aEnergy_Res            : ARRAY[0..2] OF ST_PMA_Energy;
END_VAR

FB_PMA_PowerValues_3Ph 1: Inputs

The input parameters of this function block represent initialization parameters and must be assigned when declaring the function block instance (alternative: Init method). They may only be assigned once. A change at runtime is not possible.

Name

Type

Description

nOwnID

UDINT

Identifies the function block instance with a unique ID. This must always be greater than zero. A proven approach is to define an enumeration for this purpose.

tTransferTimeout

LTIME

Setting of the synchronous timeout for internal multi-array forwardings. See Parallel Processing in Transfer Tray.

stInitPars

ST_PMA_PowerValues_InitPars

Function-block-specific structure with initialization parameters. The parameters must match the definition of the input and output buffers.

FB_PMA_PowerValues_3Ph 2: Outputs

Name

Type

Description

bError

BOOL

TRUE if an error occurs.

ipResultMessage

I_TcMessage

The interface offers detailed information about the return value.

bNewResult

BOOL

TRUE once new results have been calculated.

nCntResults

ULINT

Count value is incremented with new output data.

aApparentPower

ARRAY[0..2] OF LREAL

Total apparent power

aApparentPower_1

ARRAY[0..2] OF LREAL

Fundamental apparent power

aApparentPower_1_Min

ARRAY[0..2] OF LREAL

Smallest value of fApparentPower_1 that has occurred. Can be reset via bResetStatistics of the Call method.

aApparentPower_1_Max

ARRAY[0..2] OF LREAL

Largest value of fApparentPower_1 that has occurred. Can be reset via bResetStatistics of the Call method.

aActivePower

ARRAY[0..2] OF LREAL

Active power

aActivePower_Min

ARRAY[0..2] OF LREAL

Smallest value of fActivePower that has occurred. Can be reset via bResetStatistics of the Call method.

aActivePower_Max

ARRAY[0..2] OF LREAL

Largest value of fActivePower that has occurred. Can be reset via bResetStatistics of the Call method.

aReactivePower_d

ARRAY[0..2] OF LREAL

Distortion reactive power

aReactivePower_1

ARRAY[0..2] OF LREAL

Fundamental shift reactive power

aReactivePower_1_Min

ARRAY[0..2] OF LREAL

Smallest value of fReactivePower_1 that has occurred. Can be reset via bResetStatistics of the Call method.

aReactivePower_1_Max

ARRAY[0..2] OF LREAL

Largest value of fReactivePower_1 that has occurred. Can be reset via bResetStatistics of the Call method.

aTotalReactivePower

ARRAY[0..2] OF LREAL

Total reactive power

aPhi

ARRAY[0..2] OF LREAL

Phase shift angle

aCosPhi

ARRAY[0..2] OF LREAL

CosPhi (active power/fundamental apparent power)

aPowerFactor

ARRAY[0..2] OF LREAL

Power factor (active power/total apparent power)

fSumApparentPower

LREAL

Sum of the total apparent power of all phases.

fSumActivePower

LREAL

Sum of the active power of all phases.

fSumTotalReactivePower

LREAL

Sum of the total reactive power of all phases.

fSumReactivePower_1

LREAL

Sum of the values of the fundamental shift reactive power of all phases.

bValidStatistics

BOOL

TRUE if the Min and Max value calculation has been performed. These values are valid.

aEnergy_Pos

ARRAY[0..2] OF ST_PMA_Energy

Energy in positive direction. The output is saved persistently and can be reset via bResetEnergyCalc of the Call method.

aEnergy_Neg

ARRAY[0..2] OF ST_PMA_Energy

Energy in negative direction. The output is saved persistently and can be reset via bResetEnergyCalc of the Call method.

aEnergy_Res

ARRAY[0..2] OF ST_PMA_Energy

Resulting energy. The output is saved persistently and can be reset via bResetEnergyCalc of the Call method.

Methods

Name

Description

Call

The method is called in each cycle to execute the calculations from the input buffer when new data is present.

Init

Alternative to the function block initialization

PassInputs

As an alternative to the Call method, the method can be called in each cycle if no calculation is to take place. The incoming input buffer is then forwarded accordingly.

Reconfigure

The method is called in order to reconfigure the function block during the runtime.

Reset

This method deletes all the data sets already added. In addition, the calculated output values are reset.

Sample

VAR CONSTANT
    cOversamples : UDINT := 10;
    cFFT_Length : UDINT := 4096;
    cWindowLength : UDINT := 3200;
    cSourceInitPars: ST_PMA_Source_InitPars := (
        nBufferLength := cWindowLength/2);
    cPowerValuesInitPars : ST_PMA_PowerValues_InitPars := (
        nFFT_Length := cFFT_Length,
        nWindowLength := cWindowLength,
        fSampleRate := cOversamples * 1000,
        fBaseFreq := 50.0,
        nNumBands := 40,
        fBandwidth := 20.0,
        eWindowType := E_PMA_WindowType.HannWindow,
        fTimeLagCurrentTransformer := 0.0,
        fMinInputCurrent := 0.01);
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], stInitPars := cSourceInitPars);
    fbPowerValues : FB_PMA_PowerValues_3Ph := (nOwnID := 2, 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 algorithm
fbPowerValues.Call(FALSE, FALSE);

Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT v3.1.4024.0

PC or CX (x86, x64)

Tc3_PowerMonitoring