SA0015: Zugriff auf globale Daten über FB_init

Funktion

Ermittelt Zugriffe eines Funktionsbausteins auf globale Daten über die FB_init-Methode. Der Wert dieser Variablen hängt von der Reihenfolge der Initialisierungen ab!

Begründung

Je nach Deklarationsstelle der Instanz eines Bausteins kann es sein, dass bei Verletzung der Regel auf eine nicht-initialisierte Variable zugegriffen wird.

Wichtigkeit

Hoch

Beispiel:

Globale Variablenliste GVL_App:

VAR_GLOBAL
    nVar      : INT;
END_VAR

Funktionsbaustein FB_Sample:

FUNCTION_BLOCK FB_Sample
VAR
    nLocal    : INT;
END_VAR

Methode FB_Sample.FB_init:

METHOD FB_init : BOOL
VAR_INPUT
    bInitRetains  : BOOL;        // if TRUE, the retain variables are initialized (warm start / cold start)
    bInCopyCode   : BOOL;        // if TRUE, the instance afterwards gets moved into the copy code (online change)
END_VAR
nLocal := 2*nVar;                // => SA0015

Programm MAIN:

PROGRAM MAIN
VAR
    fbSample  : FB_Sample;
END_VAR