Werte im array verschieben

Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn die Schleife rückwärts durchlaufen werden soll, muss die Schritrtweite im Minusbereich sein. Hier also -1 und nicht 1.


Und benutz' für Deine Programmauszüge bitte die Code-Tags [Code] ... [/Code], die Du z.B. mit dem letzten Button # in der 2. Zeile erzeugen kannst. Dann wird der Code besser lesbar dargestellt.

ups :) danke
 
das habe ich nicht genau verstanden. kannst du das bisschen erläutern bitte.
Es gibt 2 Möglichkeiten ein FIFO anzulegen.

Die 1. entspricht Deiner:
Der Zeiger für den neuen Wert zeigt immer auf die erste Stelle. Vor dem Eintragen werden die Werte um eins verschoben.
Nachteil: Zeitaufwendig
Vorteil: feste Reihenfolge, z.B. wenn die Werte der Reihe nach visualisiert werden sollen


Die 2. Variante:
Die Werte werden nicht verschoben, sondern nur der Zeiger, wo der nächste Wert eingetragen wird, wird jedes mal um eins weiter gezählt.
Beim 1. Speichern wird also in die 1. Zelle eingetragen, der 2. ind die 2. Zelle ...
Wenn man an der letzten Zelle angekommen ist, wird wieder von vorn angefangen. So wird auch hier der älteste Wert überschrieben (raus geschoben)
Vorteil: vor allem bei großen Datenmengen wesentlich schneller.
Nachteil: Der Startindex für das FIFO ändert sich, was eine Visualisierung schwieriger macht.


Du willst nur einen Mittelwert über alles, da ist die Reihenfolge im FIFO egal.
Bei 10 Werten merkt man da zwischen den beiden Varianten noch nicht wirklich einen Unterschied. Wenn's jedoch in die Tausende geht, bekommt man bei der 1. Variante eventuell Probleme mit der Zykluszeit.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt 2 Möglichkeiten ein FIFO anzulegen.

Die 1. entspricht Deiner:
Der Zeiger für den neuen Wert zeigt immer auf die erste Stelle. Vor dem Eintragen werden die Werte um eins verschoben.
Nachteil: Zeitaufwendig
Vorteil: feste Reihenfolge, z.B. wenn die Werte der Reihe nach visualisiert werden sollen


Die 2. Variante:
Die Werte werden nicht verschoben, sondern nur der Zeiger, wo der nächste Wert eingetragen wird, wird jedes mal um eins weiter gezählt.
Beim 1. Speichern wird also in die 1. Zelle eingetragen, der 2. ind die 2. Zelle ...
Wenn man an der letzten Zelle angekommen ist, wird wieder von vorn angefangen. So wird auch hier der älteste Wert überschrieben (raus geschoben)
Vorteil: vor allem bei großen Datenmengen wesentlich schneller.
Nachteil: Der Startindex für das FIFO ändert sich, was eine Visualisierung schwieriger macht.


Du willst nur einen Mittelwert über alles, da ist die Reihenfolge im FIFO egal.
Bei 10 Werten merkt man da zwischen den beiden Varianten noch nicht wirklich einen Unterschied. Wenn's jedoch in die Tausende geht, bekommt man bei der 1. Variante eventuell Probleme mit der Zykluszeit.


ja deine variante gefällt mir sehr, danke. eine frage kann mann die anzahl der arrays durch eine variable definieren? siehe beispiel

Code:
VAR
 i:INT:0; 
n:INT:=20;
vMerker:ARRAY[1..n] OF REAL;
 END_VAR

i:=(i MOD n)+1; 
vMerker[i]:=v;
 
Zurück
Oben