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_VARMethode FB_Base.SampleMethod:
METHOD SampleMethod : INT
VAR_INPUT
END_VARnLocal := nLocal + 1;Funktionsbaustein FB_Sub:
FUNCTION_BLOCK FB_Sub EXTENDS FB_BaseMethode FB_Sub.SampleMethod:
METHOD SampleMethod : INT
VAR_INPUT
END_VARnLocal := nLocal + 5;Programm PRG_1:
PROGRAM PRG_1
VAR
bLocal : BOOL;
END_VARbLocal := NOT bLocal;Programm MAIN:
PROGRAM MAIN
VAR
bRead : BOOL;
nReadBase : INT;
nReadSub : INT;
fbBase : FB_Base;
fbSub : FB_Sub;
END_VARbRead := PRG_1.bLocal; // => SA0102
nReadBase := fbBase.nLocal; // => SA0102
nReadSub := fbSub.nLocal; // => SA0102