SA0102: Zugriff von außen auf lokale Variablen

Funktion

Ermittelt lesende Zugriffe von außen auf lokale Variablen von Programmen oder Funktionsbausteinen.

Begründung

TwinCAT ermittelt Schreibzugriffe von außen auf lokale Variablen von Programmen oder Funktionsbausteinen als Kompilierfehler. Da Lesezugriffe auf lokale Variablen nicht vom Compiler abgefangen werden und dies mit dem Grundsatz der Datenkapselung (Verbergen von Daten) bricht und nicht der Norm IEC 61131-3 entspricht, kann diese Regel verwendet werden, um Lesezugriffe auf lokale Variablen zu ermitteln.

Wichtigkeit

Mittel

Beispiele:

Funktionsbaustein FB_Base:

FUNCTION_BLOCK FB_Base
VAR
    nLocal : INT;
END_VAR

Methode FB_Base.SampleMethod:

METHOD SampleMethod : INT
VAR_INPUT
END_VAR
nLocal := nLocal + 1;

Funktionsbaustein FB_Sub:

FUNCTION_BLOCK FB_Sub EXTENDS FB_Base

Methode FB_Sub.SampleMethod:

METHOD SampleMethod : INT
VAR_INPUT
END_VAR
nLocal := nLocal + 5;

Programm PRG_1:

PROGRAM PRG_1
VAR
    bLocal : BOOL;
END_VAR
bLocal := NOT bLocal;

Programm MAIN:

PROGRAM MAIN
VAR
    bRead     : BOOL;
    nReadBase : INT;
    nReadSub  : INT;
    fbBase    : FB_Base;
    fbSub     : FB_Sub;
END_VAR
bRead     := PRG_1.bLocal;       // => SA0102 
nReadBase := fbBase.nLocal;      // => SA0102
nReadSub  := fbSub.nLocal;       // => SA0102