SA0167: Temporäre Funktionsbausteininstanzen
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
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
Ausgabe unter Ansicht Meldungen:
SA0167: Temporäre Funktionsbausteininstanz: 'methafb'