Ringspeicher --> Auswertung --> Medianbildung

Diplomand

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

momentan sitze ich an meiner Diplomarbeit und habe ein Problem.
Vielleicht könnt ihr mir weiterhelfen!?

Ich soll 100 Messwerte in einen Ringspeicher nach dem FIFO Prinzip ablegen.
Nachdem die 100 Messwerte im Ringspeicher abgelegt sind sollen die Werte abwärts sortiert werden, sprich von groß nach klein. Messwerte die eine Null enthalten stehen somit nach dem sortieren ganz unten. Diese Werte sollen dann nicht weiter beachtet werden.
Dann erfolgt eine Medianbildung über die sortierten Werte im Ringspeicher die größer Null sind.
Der Median soll immer über eine gerade Anzahl von Messwerten die > Null sind gebildet werden, d.h. ist die Anzahl der Messwert die > Null sind ungerade, dann soll der letzte Messwert der > Null ist nicht in die Medianbildung mit einfließen.

Vielen vielen Dank schon mal...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ralle,

Den Baustein von Volker für den Ringspeicher habe ich schon verwendet.
Leider weiß ich nicht wie ich das mit dem Sortieren und mit dem Auswerten bzgl. der Messwerte >Null und dann mit der Medianbildung in die Siemens Welt umsetzen muss. Am liebsten wäre mir natürlich FUP. SCL wäre aber auch ok.

Vielen Dank
 
schau dir mal die freie sps bibliothek von oscat an, es gibt alles auch im source code.
enthalten sind bausteine für fifo, median und vieles mehr

www.oscat.de
 
Ok, also FUP würde ich da mal vergessen, aber ich bin eh AWL-lastig;), andere Leute haben da sicher ihre eigene Meinung.
Zuerst wieder suchen (Bubble, Sort, sortieren, etc.). Wenn du das in SCL machen kannst lohnt sich sicher auch eine Suche im Internet nach Pascal-Routinen zur Sortierung, da kann man dann einiges abkupfern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier mal ein ganz netter Sortieralgo:

Direktes Auswählen (Straight Selection)

Es ist hier gleich als Prozedur formuliert, die sofort in ein Programm eingebunden werden kann ("feld" muß natürlich ein geeigneter Arraytyp sein). Es ist wesentlich schneller als Bubblesort und kann in Programmen durchaus als akzeptabel schnelle Sortierroutine verwendet werden.
Code:
[INDENT]PROCEDURE sort (VAR f : feld);
  VAR i,j,k,x : integer;
BEGIN
  FOR i := 1 TO (n - 1) DO
  BEGIN
    k := i;
    x := f [i];
    FOR j := (i + 1) TO n DO
      IF (f [j] < x) THEN
      BEGIN
        k := j;
        x := f [j];
      END;
    f [k] := f [i];
    f [i] := x;
  END;
END; [/INDENT]

Quelle: http://www.schoenleber.org/pascal/pascal2-08.html

Claus Schönleber
 
SCL/Pascal/VB

Hi,
@Ralle: wie ist es Pascalcode in SCL umzuwandeln? Ich hab mal Code
aus VB in S7 SCL kopiert, und mit relativ wenig Änderungen hat der
Syntax schon gepasst und das Ganze lief.
Für VB gibt es auch viele Beispiele im Internet(activevb.de z.B.).

Gruss: Vladi
 
Hi,
@Ralle: wie ist es Pascalcode in SCL umzuwandeln? Ich hab mal Code
aus VB in S7 SCL kopiert, und mit relativ wenig Änderungen hat der
Syntax schon gepasst und das Ganze lief.
Für VB gibt es auch viele Beispiele im Internet(activevb.de z.B.).

Gruss: Vladi

Siehst ja den Pascal-Code oben. Das nimmt sich nicht viel, hängt natürlich von der Aufgabenstellung ab, ob viele Funktionen im Code sind, die es bei SCL gar nicht gibt, aber ein guter Startpunkt ist das allemal.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
die oscat.lib unter www.oscat.de
enthält auch funktionen zum sortieren von arrays die über pointer sehr effizient arbeiten.

_ARRAY_sort sortiert ein array
_array_median berechnet den median einen beliebigen arrays

unter s7 weiss ich es nicht, aber unter codesys kann man per mausclick von st (scl) in awl umwandeln, und auch in andere formate.
 
Hallo,
@Hugo,
vielen Dank für den Tip mit OSCAT.
Ich habe mir mal die Bibliothek runtergeladen und werde es mal damit probieren.
Werde euch dann das Ergebnis mitteilen.

Vielen Dank
 
Zurück
Oben