-> Hier kostenlos registrieren
Ich habe mich mit meinem Kollegen gefragt wie groß wohl der Unterschied in der Performance zwischen einem Funktionsblock und einer Funktion ist. Für den Funktionsblock wird ja eine Instanz angelegt und da haben wir uns gefragt, ob das insgesamt mehr Zykluszeit frisst als wenn man einen Block als Funktion schreibt.
Die Speicherfähigkeit von lokalen Variablen über einen Zyklus hinaus benötigen wir nicht.
Die Einschränkung bei der Funktion, neben dem Speicher, ist dass der Block nur einen Ausgang hat. Wir benötigen in unserem Fall mehr als einen Ausgang. Es stehen uns Globale Strukturen (als Arrays) zur Verfügung, in die wir direkt schreiben können. Bei einem Funktionsblock würden wir spätestens nach dem Ausgang in die globale Strucktur schreiben. Bei einer Funktion müssten wir das dann bereits in der Funktion machen.
Das würde dann so aussehen: M_Motor[Nummer].Endlage_Links:=Endlage_Links;
Würde eine Funktion hier weniger Zeit benötigen, oder tut sich das nichts?
Der Nachteil, dass eine Funktion nicht online zu betrachten ist, vernachlässigen wir hier. Der Code ist ziemlich simpel ist und alle relevanten Variablen sind global einsehbar sind.
Mir ist auch bewußt, das nicht jeder es mag wenn Variablen nicht über die Schnittstelle geführt werden. Das wird von uns in der Regel auch so gemacht. In diesem Fall würde es die Übersichtlichkeit aber einschränken (Ich hoffe ich werde hier nicht deswegen gesteinigt ;-) ).
Die Speicherfähigkeit von lokalen Variablen über einen Zyklus hinaus benötigen wir nicht.
Die Einschränkung bei der Funktion, neben dem Speicher, ist dass der Block nur einen Ausgang hat. Wir benötigen in unserem Fall mehr als einen Ausgang. Es stehen uns Globale Strukturen (als Arrays) zur Verfügung, in die wir direkt schreiben können. Bei einem Funktionsblock würden wir spätestens nach dem Ausgang in die globale Strucktur schreiben. Bei einer Funktion müssten wir das dann bereits in der Funktion machen.
Das würde dann so aussehen: M_Motor[Nummer].Endlage_Links:=Endlage_Links;
Würde eine Funktion hier weniger Zeit benötigen, oder tut sich das nichts?
Der Nachteil, dass eine Funktion nicht online zu betrachten ist, vernachlässigen wir hier. Der Code ist ziemlich simpel ist und alle relevanten Variablen sind global einsehbar sind.
Mir ist auch bewußt, das nicht jeder es mag wenn Variablen nicht über die Schnittstelle geführt werden. Das wird von uns in der Regel auch so gemacht. In diesem Fall würde es die Übersichtlichkeit aber einschränken (Ich hoffe ich werde hier nicht deswegen gesteinigt ;-) ).