Ermittelt Variablen, deren Name bereits von anderen Variablen verwendet wird, beispielsweise globale und lokale Variablen mit gleichen Namen. Ermittelt auch Variablen, deren Name von Funktionen, Aktionen, Methoden oder Eigenschaften innerhalb des gleichen Zugriffsbereichs verwendet wird. Es werden auch Variablen entdeckt, die in einer GVL in der Ansicht „Geräte“ und in einer GVL im POUs-Pool deklariert sind. Dafür muss jedoch die GVL der Ansicht „POUs“ im Applikationsprogramm verwendet werden.
Begründung: Gleiche Namen können beim Lesen des Codes verwirrend sein, und sie können zu Fehlern führen, wenn unbeabsichtigt auf das falsche Objekt zugegriffen wird. Es wird empfohlen, Namenskonventionen zu verwenden, deren Einhaltung solche Situationen vermeidet.
PLCopen-Regel: N5/N9
Wichtigkeit: Mittel
Beispiel
VAR_GLOBAL xVar1 : BOOL; iVar3 : INT; END_VAR PROGRAM PLC_PRG VAR xVar1 : BOOL; // SA0013 iVar3 : INT; // SA0013 END_VAR xVar1 := NOT GVL.xVar1; iVar3 := iVar3 + INT#2; iVar3 := GVL.iVar3; --> SA0013: Deklaration von 'iVar1' verdeckt Symbol 'GVL.iVar1 --> SA0013: Deklaration von 'xVar3' verdeckt Symbol 'GVL.xVar3
Beispiel
Der Funktionsbaustein POU
besitzt die Aktion ACT
und die Methode METH
.
FUNCTION_BLOCK POU VAR ACT : UINT; // SA0013 METH : BYTE; // SA0013 END_VAR --> SA0013: Deklaration von 'ACT' verdeckt Symbol 'POT.ACT' --> SA0013: Deklaration von 'METH' verdeckt Symbol 'POT.METH'