SA0014: Zuweisungen auf Instanzen

Funktion

Ermittelt Zuweisungen auf Funktionsbausteininstanzen. 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.

Um selektiv Werte von einer Instanz in eine andere zu kopieren, kann eine Kopiermethode sinnvoll sein:

fb2.CopyFrom(fb1)

Wichtigkeit

Mittel

Beispiel:

PROGRAM MAIN 
VAR
    fb1  : FB_Sample;
    fb2  : FB_Sample;
END_VAR
fb1();
fb2 := fb1;                      // => SA0014