Zitat Zitat von RobiHerb Beitrag anzeigen
...
Soweit ich sehe, ist das mit VAR_IN_OUT aber nur bei FB möglich, von dem ich dann eine Instanz erzeugen muss, die gerade, wenn es mehrfach (z.B. 50 mal) an verschiedenen Stellen gebraucht wird, unnötig viel Speicher verbraucht.

Deshalb die Frage nach FUN, diesen Konstrukt hält das System nur einmal im Speicher, alle benötigten Infos stecken in den Parametern, aber VAR_IN_OUT ging bei mir schief.
Meiner Meinung nach ist hier kein Unterschied zw. FUB und FUN.

Unterschied zw. FUB und FUN:

FUN - Rückgabe Parameter, je nach Definition
FUB - keine Rückgabe

FUN - Strukturen per Pointer übergeben, alle Zwischenspeicher, welche gegebenenfalls notwendig sind um ein "Gedächtnis" der Funktion zu erhalten müssen über Übergabe Parameter definiert werden

FUB - wie FUN, wenn Aufruf wie FUN, Jedoch wenn Aufruf
abc_fub01 FUB ABC()
abc_fub02 FUB ABC()

können die FUBS als Instanz internes Gedächtnis haben.

Der Aufruf ABC(abc_fub01) und ABC(abc_fub02) darf kein internes Gedächtnis verwenden. Entsprechen demnach der FUN, jedoch ohne Rückgabe.

Grundsätzlich immer Pointer verwenden, wobei dann natürlich nur als VAR_IN deklariert, da die Ausgabe einfach durch Beschreiben der Struktur erreicht wird.

Dies ist meine Erfahrung mit B&R, bin mir nicht 100 % sicher ob das auch nach IEC Norm so ist....