Skip to main content

SA0044: Deklarationen mit Schnittstellenreferenz

Ermittelt Deklarationen mit REFERENCE TO-Schnittstellen und Deklarationen von VAR_IN_OUT-Variablen mit Schnittstellen (implizit über REFERENCE TO realisiert).

Begründung: Ein Schnittstellentyp ist immer implizit eine Referenz auf eine Instanz eines Funktionsbausteins, der diese Schnittstelle implementiert. Eine Referenz auf eine Schnittstelle ist demnach eine Referenz auf eine Referenz und kann zu sehr unerwünschtem Verhalten führen.

Wichtigkeit: Hoch

Beispiel 53. Beispiel

ITF ist eine im Projekt definierte Schnittstelle.

FUNCTION_BLOCK POU
VAR_INPUT
    inst_itf2 : ITF;
END_VAR
VAR_OUTPUT
    inst_itf3 : ITF;
END_VAR
VAR_IN_OUT
    inst_itf4 : ITF;                // SA0044
END_VAR
PROGRAM PLC_PRG
VAR
    inst : POU;
    itf_inst1 : ITF;
    itf_ref : REFERENCE TO ITF; // SA0044
END_VAR

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0044: Referenz auf Schnittstelle 'itf4_ref'

  • sa_icon_message.png SA0044: Referenz auf Schnittstelle 'itf_ref'