Array um sortieren

Begonnen von Frischling, 03. Februar 2011, 10:21:42

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Frischling

Hallo an alle!!!

habe wieder einmal ein Problem mit einem Array habe die ESR Bausteine genutzt um Fehlermeldungen mit Zeitstempel zu versehen die Problematik ist, das Array wird nacheinander beschrieben was ja auch richtig ist. Da ich aber in der Visualisierung dieses Array anzeige ist es schlecht da die aktuelle Meldung irgendwo im Array stehen kann.

Mein Wunsch ist es das ESR Array in umgekehrter Reihenfolge anzuzeigen um immer den Aktuellen (oder letzten) Wert an erster Stelle angezeigt zubekommen.

Bitte um eure Hilfe!!!  :)

Danke euer Frischling

peewit

hallo

das der neueste eintrag immer oben steht, würde erfordern das alle anderen einträge immer nach unten kopiert werden
das belastet das system nur unnötig, und würde zuviel ändern

eine einfache lösung für dich wäre ein extra baustein !

dieser stellt dir immer die neueste meldung zur verfügung
ich denke das wäre kein grosser auswand, und wir müssen an den bestehenden bausteinen nichts ändern


peewit

#2
eine erste idee

pos und esr_data nimmst du direkt vom esr_collect

!! ist nicht getestet, ist nur einfach herunter getippt !!


FUNCTION_BLOCK ESR_COLLECT_VISU
VAR_INPUT
POS : INT;
END_VAR
VAR_IN_OUT
ESR_DATA : ARRAY[0..31] OF esr_data;
END_VAR
VAR_OUTPUT
ESR_VISU : esr_data;
END_VAR
VAR
pos_old : INT := -2;
x : ESR_DATA;
END_VAR

IF POS <> pos_old THEN
IF pos = -1 THEN
ESR_VISU := x; (* leere Datenstruktur übernehmen *)
ELSE
ESR_VISU := ESR_DATA[POS];
END_IF;
pos_old := pos;
END_IF;

Frischling

Hallo peewit!

was schlägtst du vor, wie der Baustein aussehen sollte? oder wie sollte ich herangehen!

Bin für jeden Tip, Dankbar!

Danke!!!


Frischling

Danke peewit!

werde es sofort aus probieren melde mich dann.

Dankeschön für die schnelle Antwort!!!