Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: Werte im array verschieben

  1. #21
    fiftyone_88 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2015
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von hucki Beitrag anzeigen
    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

  2. #22
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von fiftyone_88 Beitrag anzeigen
    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.

  3. #23
    fiftyone_88 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2015
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    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;

  4. #24
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von fiftyone_88 Beitrag anzeigen
    eine frage kann mann die anzahl der arrays durch eine variable definieren? siehe beispiel

    Code:
    VAR
     ... 
    n:INT:=20;
    vMerker:ARRAY[1..n] OF REAL;
     END_VAR
    ...
    Nein, nur durch eine Konstante.

    Das Array wird schon beim Übersetzen gebildet, daher keine Variable.

  5. #25
    Registriert seit
    28.08.2014
    Beiträge
    21
    Danke
    0
    Erhielt 8 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Sollte Dein Laufzeitsystem __New unterstützen, könntest Du das Array auch dynamisch zur Laufzeit erzeugen.

Ähnliche Themen

  1. Aus einem ARRAY ausgewählte Werte in ein anderes ARRAY kopieren
    Von lacosta19 im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 06.08.2014, 15:42
  2. Array schreiben und Werte vermitteln
    Von arcomp im Forum PHOENIX CONTACT
    Antworten: 10
    Letzter Beitrag: 14.02.2014, 07:14
  3. Antworten: 8
    Letzter Beitrag: 04.12.2012, 17:29
  4. Array verschieben
    Von MrChiliCheese im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.07.2012, 16:08
  5. INT Werte speichern bzw. verschieben
    Von steppenwolf im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 09.03.2008, 18:35

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •