Skip to main content

SA0014: Zuweisungen auf Instanzen

Ermittelt Zuweisungen auf Funktionsbaustein-Instanzen. Bei Instanzen mit Pointer- oder Referenzvariablen können diese Zuweisungen riskant sein.

Begründung: Dies ist eine Performance-Warnung. Wenn eine Instanz einer anderen Instanz zugewiesen wird, dann werden alle Elemente und Unterelemente von der einen Instanz in die andere kopiert. Pointer auf Daten werden mitkopiert, jedoch nicht deren referenzierte Daten, so dass die Zielinstanz und die Quellinstanz nach der Zuweisung die gleichen Daten enthalten. Je nach Größe der Instanzen kann eine solche Zuweisung sehr lange dauern. Wenn eine Instanz beispielsweise zur Bearbeitung an eine Funktion übergeben werden soll, dann ist es sehr viel performanter, einen Pointer auf die Instanz zu übergeben.

Will man selektiv Werte von einer Instanz in eine andere kopieren, dann kann eine Kopiermethode sinnvoll sein:

inst_First.Copy_From(inst_Second)

Wichtigkeit: Mittel

Beispiel 27. Beispiel
PROGRAM PLC_PRG
VAR
    inst_First : My_FB;
    inst_Second : My_FB;
END_VAR
inst_First();
inst_Second := inst_First;  // SA0014

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0014: Zuweisung von Instanzen