1. Wozu sollte das gut sein?
Ein Beispiel wäre die Funktion "MAX(INT1, INT2, .., INTn)".
Moin Mario. Weil's ganz angenehm sein kann, eine einzige Funktion für eine variable Anzahl von EingangsGrössen verwenden zu können und MAX(...) ist ein wunderbar sinnvolles Beispiel dafür.
Soll ich mir wirklich für 2 Eingänge die Funktion MAX2(Var1, Var2) und für 3 Eingänge die Funktion MAX3(Var1, Var2, Var3) ... u.s.w. ... basteln müssen?
Und dann noch für jeden DatenTyp getrennt? MAX1INT(), ..., MAX10INT(), MAX1DINT(), ..., MAX10DINT(), MAX1REAL(), ..., MAXREAL10()?
Ich sehe solche dynamischen Konstrukte bei SPSen eher kritisch. Ist bei einem PC Programm kein Speicher mehr vorhanden läuft das eine Programm in teilen oder komplett nicht mehr, was nicht schön ist, aber nicht unbedingt tragisch. Bei einer SPS kann sowas aber fatale Folgen haben.
Ja, Oliver. Es ist (nicht nur) bei SPS-Programmen "gefährlich", wenn sich die Anzahl der SchleifenDurchläufe oder die SpeicherBelegung während der Laufzeit des Programms ändern kann.
Aber ist das wirklich damit vergleichbar, ob man ein und dieselbe Max-Funktion mal auf 2 und mal auf 5 Variablen anwenden möchte?
Die MAX-Funktion für 2 Variablen lässt sich problemlos so kaskadieren, dass man auch den MAX-Wert von 5 Variablen damit ermitteln kann.
Aber das Programm wird dadurch unübersichtlicher. Und die Anzahl der Variablen wird auch nicht zur Laufzeit des Programms festgelegt oder verändert, sondern vorab durch den Programmierer.
Das Vorhalten von zig MAX-Funktionen (für 2 Eingänge, für 3 Eingänge, u.s.w. ...) ist auch ganz schön Resourcen-fressend und fördert die Übersichtlichkeit in keinster Weise.