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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: UDT // Ringpuffer

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von LargoD Beitrag anzeigen
    ich meinte natürlich damit einen Array-Index, also eine Integer Zahl, was ist da fragwürdig?
    Nichts ... fragwürdig bezog sich auf das "Pointern" - das mit dem Index würde ich halt für mich nur nicht so machen ...

    Zitat Zitat von LargoD Beitrag anzeigen
    Ihr jungen Hüpfer seid verwöhnt von den modernen CPUs
    na ja ...

  2. #12
    zloyduh ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2008
    Beiträge
    226
    Danke
    92
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Danke für schnelle Hilfe:
    habe bis jetzt folgendes Ergebniss erziehlt:

    [PHP]
    FUNCTION_BLOCK FB_Verwalten
    // Konstanten festlegen
    CONST
    MaxW:= 99; // max. Datensatz Nr
    MinW:= 1; // min. Datensatz Nr
    END_CONST

    VAR_INPUT
    Taste_Hoch: BOOL; // Blättern hoch
    Taste_Max_Wert: BOOL; // Springe zum max. Wert
    Taste_Runter: BOOL; // Blättern runter
    Taste_min_Wert: BOOL; // Springe zum min. Wert
    Speichern: BOOL; // Satz speichern (OP)
    Loeschen: BOOL; // Satz löschen (Platzhalter)
    Alle_Loeschen: BOOL; // Alle Sätze löschen (Platzhalter)
    END_VAR
    VAR
    Satz: Datensatz; // entspricht UDT-Satz
    Index: INT;
    FL1: BOOL;
    FL2: BOOL;
    FZ1: BOOL;
    FZ2: BOOL;

    END_VAR
    BEGIN
    // Blättern
    IF Taste_Hoch AND NOT FZ1 THEN Index:= Index + 1; END_IF;
    IF Taste_Runter AND NOT FZ1 THEN Index:= Index - 1; END_IF;
    FZ1:= Taste_Hoch OR Taste_Runter;
    IF Index < MinW THEN Index:= MinW; END_IF;
    IF Index > MaxW THEN Index:= MaxW; END_IF;

    // Satz speichern
    IF Speichern AND NOT FL1 THEN
    Daten.Datensatz_DB [Index]:= Satz;
    END_IF;
    FL1:= Speichern;
    // Satz anzeigen

    // Satz löschen

    // Alle Sätze löschen

    END_FUNCTION_BLOCK
    [/PHP]Also die Tasten für Blättern hoch bzw. runter benutze ich im Panel Programm.
    Das ablegen der Daten im ARRAY nach Vorwahl des Index funktioniert auch (Ist zwar keine ilegante Lösung aber es geht..)
    Aber::
    Ich möchte beim Blättern im OP immer den Aktuellen Satz anzeigen lassen.
    z.B. Satz 1: 100 mm
    Satz 2: 200mm
    Satz 3: 0 // Wurde noch nichts eingegeben
    Satz 4: 0 //
    .....


    Zur Zeit werden bei mir beim Blättern immer die letzten eingabe Werte angezeigt.
    Ich greife aus dem OP auf die Variable "Satz" ..
    Wie kann ich das umsetzen..??

  3. #13
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    ... dann müßtest du den angewählten Datensatz immer in den Koppelbereich_Anzeige übertragen / zuweisen. Das wäre dann mit dem Index so nicht mehr zu machen ...

    Gruß
    Larry

  4. #14
    zloyduh ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2008
    Beiträge
    226
    Danke
    92
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... dann müßtest du den angewählten Datensatz immer in den Koppelbereich_Anzeige übertragen / zuweisen. Das wäre dann mit dem Index so nicht mehr zu machen ...

    Gruß
    Larry
    Danke Larry! Wie meinst du das "in den Koppelbereich_..." ??
    Hast du vielleicht eine andere Idee wie ich soetwas realisieren kann??

  5. #15
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    In deinem Fall ist "Satz" dein Koppelbereich.
    Du mußt halt, wenn du die Daten vom angewählten Satz geändert hast, diesen in deinen Datenbereich schreiben (das tust du ja schon) und du mußt, wenn du die Daten einer bestimmten Stelle ansehen/editieren willst diese in "Satz" übertragen.
    Eine andere Möglichkeit weiß ich nicht und gibt es da m.E. auch nicht ...

    Aber ... was spricht denn dagegen, es auf die oben dargestellte Art und Weise zu realisieren ? Die eine Hälfte davon hast du ja schließlich auch schon ...

    Gruß
    Larry

  6. #16
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.582
    Danke
    63
    Erhielt 261 Danke für 221 Beiträge

    Standard

    Ich hoffe ich habe Dein Problem richtig verstanden.

    Du könntest auf dem Panel 2 Felder nebeneinander legen.
    Eines davon zeigt die Variable "Index" an. Damit hast Du eine Satznummernanzeige. Das Feld daneben ist dann nicht schon die Variable "Satz" sondern eine weitere Variable "Anzeige". Du schreibst aus dem Array immer auf die Variable "Anzeige", damit die Anzeige permanent aktualisiert wird. Bei speichern schreibst Du dann "Anzeige" auf "Daten"

  7. #17
    zloyduh ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2008
    Beiträge
    226
    Danke
    92
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für die Tipps::

    Ich habe das so gelösst, dass bei jeder Flanke (Hoch, Runter blättern) ich den Koppelbereich beschreibe.

    Satz:= Daten.Datensatz_DB [Index];

    Scheint so zu funktionieren..

Ähnliche Themen

  1. Problem mit Ringpuffer
    Von nutellahase im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 12.09.2011, 19:09
  2. Ringpuffer mit Mittelwert
    Von taucherd im Forum Simatic
    Antworten: 28
    Letzter Beitrag: 19.05.2011, 23:30
  3. S7-FIFO-Baustein (als Ringpuffer) [GELÖST]
    Von openminded23 im Forum Simatic
    Antworten: 52
    Letzter Beitrag: 11.04.2011, 21:09
  4. "Ringpuffer"
    Von Itchy im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 01.11.2010, 22:46
  5. Array bei Datenwechsel speichern in Ringpuffer
    Von Wiedenn? im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 21.03.2010, 04:55

Lesezeichen

Berechtigungen

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