Die Prüfung ermittelt Funktionsbaustein-Instanzen, die als temporäre Variablen deklariert
sind. Dies betrifft Instanzen, die in einer Methode oder in einer Funktion oder als
VAR_TEMP
deklariert sind, und die deshalb in jedem Abarbeitungszyklus oder bei jedem Bausteinaufruf
neu initialisiert werden.
Begründung: Funktionsbausteine haben einen Zustand, der meist über mehrere SPS-Zyklen hinweg erhalten bleibt. Eine Instanz auf dem Stack existiert nur für die Dauer des Funktionsaufrufs. Es ist daher nur selten sinnvoll, eine Instanz als temporäre Variable anzulegen. Zweitens sind Funktionsbaustein-Instanzen häufig groß und verbrauchen sehr viel Platz auf dem Stack (der auf Steuerungen meist begrenzt ist). Drittens kann die Initialisierung und häufig auch die Terminierung eines Funktionsbausteins ziemlich viel Zeit in Anspruch nehmen.
Wichtigkeit: Mittel
Beispiele
PROGRAM PLC_PRG VAR END_VAR VAR_TEMP yafb: AFB; END_VAR FUNCTION Fun : INT VAR_INPUT END_VAR VAR funafb: AFB; END_VAR METHOD METH : INT VAR_INPUT END_VAR VAR methafb: AFB; // SA0167 END_VAR --> SA0167: Temporäre Funktionsbausteininstanz: 'methafb'