FB_PMA_BasicValues_Period_3Ph

The function block FB_PMA_BasicValues_Period_3Ph calculates analysis values for the signal sequence of current and voltage in a three-phase system. These include the mean value, the RMS value, the peak value, the rectified value, the crest factor and the form factor for the individual currents and voltages. In addition, the voltage values between the individual phases are calculated. The results refer to a configurable number of signal periods. The period duration refers to the frequency specified at the start of the period at the input of the Call method. The statistical results refer to the entire runtime or the time at which the statistical results were last reset.

The input buffer is provided via the function block FB_PMA_Source_3Ph. This can include one or more signal periods or individual fragments of oversampling arrays.

Syntax

Definition:

FUNCTION BLOCK FB_PMA_BasicValues_Period_3Ph
VAR_INPUT
    nOwnID                : UDINT;
    tTransferTimeout      : LTIME := LTIME#500US;
    stInitPars            : ST_PMA_BasicValues_Period_InitPars;
END_VAR
VAR_OUTPUT
    bError                : BOOL; 
    ipResultMessage       : I_TcMessage;
    bNewResult            : BOOL;
    nCntResults           : ULINT;
    aMeanValue_U          : ARRAY[0..2] OF LREAL;
    aRMS_U                : ARRAY[0..2] OF LREAL;
    aRMS_U_Min            : ARRAY[0..2] OF LREAL;
    aRMS_U_Max            : ARRAY[0..2] OF LREAL;
    aRMS_U_PP             : ARRAY[0..2] OF LREAL
    aPeakValue_U          : ARRAY[0..2] OF LREAL;
    aPeakHold_U           : ARRAY[0..2] OF LREAL;
    aRectifiedValue_U     : ARRAY[0..2] OF LREAL;
    aCrestFactor_U        : ARRAY[0..2] OF LREAL;
    aFormFactor_U         : ARRAY[0..2] OF LREAL;
    aMeanValue_I          : ARRAY[0..2] OF LREAL,
    aRMS_I                : ARRAY[0..2] OF LREAL,
    aRMS_I_Min            : ARRAY[0..2] OF LREAL,
    aRMS_I_Max            : ARRAY[0..2] OF LREAL,
    aPeakValue_I          : ARRAY[0..2] OF LREAL,
    aPeakHold_I           : ARRAY[0..2] OF LREAL;
    aRectifiedValue_I     : ARRAY[0..2] OF LREAL;
    aCrestFactor_I        : ARRAY[0..2] OF LREAL;
    aFormFactor_I         : ARRAY[0..2] OF LREAL;
    bValidStatistics      : BOOL;
END_VAR

FB_PMA_BasicValues_Period_3Ph 1: Inputs

The input parameters of this function block represent initialization parameters and have to be assigned during the declaration of the function block instance (alternatively: 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_BasicValues_Period_InitPars

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

FB_PMA_BasicValues_Period_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.

aMeanValue_U

ARRAY[0..2] OF LREAL

Mean voltage value over n periods

aRMS_U

ARRAY[0..2] OF LREAL

RMS value of the voltage over n periods

aRMS_U_Min

ARRAY[0..2] OF LREAL

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

aRMS_U_Max

ARRAY[0..2] OF LREAL

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

aRMS_UPP

ARRAY[0..2] OF LREAL

RMS value of the voltage between two phases. Index 0: L1-L2, Index 1: L2-L3, Index 2: L3-L1

aPeakValue_U

ARRAY[0..2] OF LREAL

Peak voltage value over n periods

aPeakHold_U

ARRAY[0..2] OF LREAL

All-time peak voltage value over n periods. Can be reset via bResetStatistics of the Call method.

aRectifiedValue_U

ARRAY[0..2] OF LREAL

Rectified voltage value over n periods

aCrestFactor_U

ARRAY[0..2] OF LREAL

Crest factor of the voltage (peak/RMS value)

aFormFactor_U

ARRAY[0..2] OF LREAL

Form factor of the voltage (RMS/rectified value)

aMeanValue_I

ARRAY[0..2] OF LREAL

Mean value of the current over n periods

aRMS_I

ARRAY[0..2] OF LREAL

RMS value of the current over n periods

aRMS_I_Min

ARRAY[0..2] OF LREAL

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

aRMS_I_Max

ARRAY[0..2] OF LREAL

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

aPeakValue_I

ARRAY[0..2] OF LREAL

Peak value of the current over n periods

aPeakHold_I

ARRAY[0..2] OF LREAL

All-time peak current value. Can be reset via bResetStatistics of the Call method.

aRectifiedValue_I

ARRAY[0..2] OF LREAL

Rectified value of the current over n periods

aCrestFactor_I

ARRAY[0..2] OF LREAL

Crest factor of current (peak/RMS value)

aFormFactor_I

ARRAY[0..2] OF LREAL

Form factor of the current (RMS/rectified value)

bValidStatistics

BOOL

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

FB_PMA_BasicValues_Period_3Ph 3: 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

The current calculations are reset with the method.

Sample

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);
    cBasicValuesInitPars : ST_PMA_BasicValues_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);
    fbBasicValues : FB_PMA_BasicValues_Period_3Ph := (nOwnID := 3, stInitPars := cBasicValuesInitPars);
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);
fbBasicValues.Call(fbFrequency.aFreq[0], FALSE);

Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT v3.1.4024.0

PC or CX (x86, x64)

Tc3_PowerMonitoring