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

Ergebnis 1 bis 6 von 6

Thema: FIFO Baustein für Array´s

  1. #1
    Registriert seit
    05.06.2009
    Beiträge
    53
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe ein Problem und komme einfach nicht richtig auf die Lösung. Ich habe mir die verscheidenen Beiträge im Forum bzgl. FIFO angeschaut und habe auch einen FiFO mit DINT am laufen nur für die benötigte Array Fifo Problematik steh ich auf dem Schlauch. Ich speichere in einen Db402 eine errechnete Umrüstzeit in TOD und eine Systemzeit mit Datum im Format Date_and_Time. Nun will ich mittels Fifo das Array immer durchschieben sobald der neue Umrüstvorgang beendet wurde und neue Daten vorliegen. Hat jemand einen FIFO Baustein der dies als Array macht oder kann mir hier bei der Lösung helfen?

    Gruß

    Jürgen
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren FIFO Baustein für Array´s  

  2. #2
    Registriert seit
    03.09.2009
    Beiträge
    129
    Danke
    15
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Hallo Jürgen,

    wie ich dein Problem verstehe möchtest du immer einen Zeitstempel zu deinen Array hinzufügen. Sobald 101 Zeitstempel gespeichert wurden, soll der letzte einfach "rausfallen". Ist das richtig? Wenn ja benötigst du kein FIFO, da du ja keine Daten löschen möchtest.

    Ich würde da eher eine Art Ringbuffer verwenden und darauf verzichten immer alle Daten "durchzuschieben". Dies könntest du mit einer Index Variablen im ersten DB realisieren, welche dir immer den Index des letzten Elements anzeigt, was zum Array hinzugefügt wurde.

  3. #3
    Registriert seit
    05.06.2009
    Beiträge
    53
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    genau richtig. Irgendwie seh ich vor lauter Bäumen grade den Wald nicht mehr. Du willst also wenn bei z.b. 100 anfangen die Werte rein schreiben und sobald die drin sind die Zählvariable z.b. -1 machen usw.?

  4. #4
    Registriert seit
    03.09.2009
    Beiträge
    129
    Danke
    15
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Hi,

    ich stelle es mir so vor, dass du einen DB mit einer Index Variablen (INT) und einem Array mit X Elementen hast. Die Index Variable gibt an, an welcher Stelle du dein Zeitstempel in das Array schreibst (Array[Index]). Das Array wird also von oben nach unten gefüllt. Ist das Array zu ende überschreibst du einfach wieder das erste Element und setzt den Index zurück.

    Diese Lösung erspart dir das umkopieren aller Arrayelemente! Du kannst einfach anhand des Indices auf den zuletzt gespeicherten Zeitstempel zugreifen. Der Implementierungsaufwand ist nicht allzu groß und ist mittels indirekter Adressierung lösbar.

    Ich habe vor langer Zeit mal einen "Logger" geschrieben, ich werde morgen mal schauen, ob ich ihn noch irgendwo finde.

  5. #5
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    schau mal hier http://lischis-home.dyndns.org/files...e/dirindex.php
    FiLo_LiFo.zip. da ist unter anderem auch ein fifo für datenblöcke drin
    Geändert von volker (04.07.2012 um 11:29 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #6
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Beckx-net Beitrag anzeigen
    ...
    Sobald 101 Zeitstempel gespeichert wurden, soll der letzte einfach "rausfallen". Ist das richtig? Wenn ja benötigst du kein FIFO, da du ja keine Daten löschen möchtest.

    Ich würde da eher eine Art Ringbuffer verwenden und darauf verzichten immer alle Daten "durchzuschieben". Dies könntest du mit einer Index Variablen im ersten DB realisieren, welche dir immer den Index des letzten Elements anzeigt, was zum Array hinzugefügt wurde.
    @Beckx-net,
    genau das, was Du da beschreibst, ist ein First In First Out Speicher.
    Ob dabei die Daten in den Speicherzellen durchgeschoben werden oder nur der Index reihum indiziert wird, spielt keine Rolle, denn Fakt ist, das die ältesten Daten (zuerst rein) bei vollem Speicher als Erstes überschrieben (zuerst raus) werden bzw. "rausfallen".


    Das Gegenteil wäre dann der Last In First Out, wo die neuesten Daten als Erstes wieder herausgenommen werden.

Ähnliche Themen

  1. S7-FIFO-Baustein (als Ringpuffer) [GELÖST]
    Von openminded23 im Forum Simatic
    Antworten: 52
    Letzter Beitrag: 11.04.2011, 21:09
  2. Fifo für DINT Werte
    Von Poldi007 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 16.08.2010, 13:30
  3. FIFO für Staustrecke
    Von element. im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 20.04.2010, 09:22
  4. FIFO-Schieberegister mit Concept für Modicon Quantum
    Von Trajan im Forum Programmierstrategien
    Antworten: 0
    Letzter Beitrag: 14.04.2009, 13:54
  5. FiFo Programmieren für Anfänger
    Von yassin im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 05.01.2004, 12:46

Lesezeichen

Berechtigungen

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