Step 7 LIFO FC84/85

Golf2

Level-2
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte 6 Werte in eine Tabelle schreiben, wo der neueste Wert immer oben steht. Ich wollte Add Table und die FIFO / LIFO nutzen. Jetzt habe ich aber das Problem, das bei Ausführung FIFO/LIFO die Tabellenwerte komplett auf 0 setzt und die Tabelle frisch anfängt. In der Bausteinhilfe steht was von -1 und den Wert wieder frisch beschreiben. Was mache ich da falsch? Hat jemand vielleicht ein Beispiel? Danke für die Hilfe...
 

Anhänge

  • FIFO.jpg
    FIFO.jpg
    395,6 KB · Aufrufe: 16
Geht es Dir vorrangig darum,
- 1. eine Tabelle(Liste) anzulegen, in der die Einträge absteigend nach (Datum/)Zeit abgelegt sind oder
- 2. die LIFO-/FIFO-Bausteine kennenzulernen?

Da Du nach dem Auslesen der einzelnen Werte per LIFO immer noch vor der Aufgabe stehst, diese in der entsprechenden Reihenfolge in die Tabelle zu kopieren UND da laut Deiner Aufgabenstellung immer exakt und "nur" 6 Werte in der Tabelle stehen sollen, wird es vermutlich einfacher sein, diese Tabelle einfach "rückwärts" mit den 6 Werten zu füllen (ohne FIFO/LIFO, den ersten Wert auf den letzten Platz, den zweiten auf den vorletzten Platz, u.s.w. ...).
Oder willst Du Zugriff auf die 6 jeweils neuesten Werte haben - egal, wie viele seit dem letzten Zugriff hinzugekommen sind?
 
In SCL würde ich's so machen, mit einem Array:

Code:
IF NOT bEnterPrev AND bEnter THEN
    FOR idx := 4 TO 0 BY -1 DO // bei positiver Flanke von bEnter die Schleife durchlaufen
        iArray[idx + 1] := iArray[idx] ; // Werte um 1 Platz verschieben: iArray[4] --> iArray[5] , iArray[3] --> iArray[4] , ... , iArray[0] --> iArray[1]
    END_FOR ; 
    iArray[0] := iNewValue ; // nach der Verschiebung den aktuellen Wert in iArray[0] speichern
END_IF ;
bEnterPrev := bEnter ; // bEnterPrev STATIC, damit der Wert beim nächsten Aufruf unverändert verfügbar ist!

Für das Auslesen des Arrays habe ich nichts vorgesehen, da das Ziel der Aufgabe die Erzeugung der Tabelle/Liste ist.
In iArray[0] steht der neuste Wert, gefolgt vom zweitneusten in iArray[1] u.s.w. ... der älteste der 6 Werte in iArray[5].
 
Zurück
Oben