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

Ergebnis 1 bis 7 von 7

Thema: Erklärung DELAY Baustein

  1. #1
    Registriert seit
    08.03.2014
    Beiträge
    501
    Danke
    11
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo alle zusammen.

    Ich ersuche gerade zu verstehen wie ein DELAY-Baustein funktioniert.

    -Wenn RUN := FALSE --> dann wird der Eingangswert unverändert ausgegeben ( habe ich verstanden )
    -Wenn RUN := TRUE -- > dann wird der Eingangswert um einen festgelegten N-Wert verspätet ausgegeben ( habe ich auch verstanden )

    Nun gibt es hier eine Beschreibung: - der Regler arbeitet intern mit einem Ringspeicher X der 128 Plätze hat. ( habe ich verstanden )

    - als Vorbereitung auf den RUN-Modus wird der Zeiger IXIN für das Ablegen des Eingangssignals XIN
    im Ringspeicher X auf N und der Zeiger IXOUT für die Ausgabe des Signals aus dem Speicher X in die Ausgangsvariable
    XOUT auf 0 gesetzt.
    Außerdem werden die ersten N+1 Plätze des Ringspeichers mit dem aktuellen Eingang XIN belegt.
    Dadurch wird nach dem Umschalten in den RUN-Modus zunächst N+1 mal der aktuelle Eingang XIN am Ausgang
    ausgegeben. ( den Teil habe ich nicht verstanden )

    Im Anhang seht ihr einen Tabelle einer Aufgabe. RUN und XIN war gegeben und N hat eine Vorgabe von 3.
    Wie man den IXIN und den XOUT bei RUN := FALSE herausfindet ( habe ich verstanden )

    Kann mir jemand erklären wie das funktioniert? Hört sich einfach an, komme aber nicht auf die restlichen Ergebnisse. ( habe ich nicht verstanden )


    MfG
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Erklärung DELAY Baustein  

  2. #2
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    .
    Mal schnell überflogen und mal so beschrieben:


    RUN=0
    Je nach Wert des Index-Wertes IXIN wird der XIN-Wert auf die Positionen
    von X[0] bis zu X[IXIN] aufgefüllt/gespeichert.
    Der Index scheint bei RUN=0 nicht weiterzulaufen.
    Bei Änderung des XIN werden die vorherigen Werte bis zu dieser Position
    wieder überschrieben.
    Der Index IXOUT zeigt dabei stets auf die Pos. X[0], der Wert dieser Position
    wird auch mit XOUT ausgegeben.

    Also: was in deinen Baustein reingeht, kommt auch wieder raus.
    --> Das sind die Zeilen 1 + 2 bei deiner Tabelle.


    RUN=1
    Nun werden die Pos. nur noch einzeln in Abhängigkeit des Index IXIN
    beschrieben.
    In Zeile 3 wird XIN auf Pos. 4 geschrieben, weil IXIN den Wert 4 hat.
    Der Wert von IXIN wird nun aber stets weiter hochgezählt.
    Alle folgenden XIN-Werte werden ebenso dorthin geschrieben, wie es
    der Wert von IXIN vorgibt.



    Ausgabe XOUT
    Die Ausgabe XOUT erfolgt ebenfalls indiziert, und zwar abhängig vom
    Index IXOUT.
    Je nach Wert des IXOUT wird die entsprechende Pos. ausgegeben.
    Bei RUN=1 wird der Index IXOUT von "0" beginnend hochgezählt,
    in XOUT wird der Wert ausgegeben, auf den der Index zeigt.


    Beispiel
    In deiner Tabelle fängt der RUN-Modus in Zeile 3 an, IXOUT zeigt
    auf Position 1.

    In Zeile 5 ist IXOUT = 3, deswegen wird mit XOUT der Wert X[3]
    ausgegeben.

    Ab Zeile 6 erfolgt die Änderung des XOUT, weil nun der Index IXOUT
    auf die Position X[4]=3 zeigt.


    Fazit
    Der Baustein gibt die gespeicherten Werte X[n] in Abhängigkeit
    von der Differenz der Beiden Indizes IXIN und IXOUT aus.
    Je nach Änderung des IXOUT gibst du den Eingangswert XIN verzögert
    (mit einstellbarer Verzögerung/Totzeit) an XOUT wieder aus.

    In welcher Abhängigkeit deine Indizes verändert werden, ist aber nicht
    zu ersehen.
    kind regards
    SoftMachine

  3. Folgender Benutzer sagt Danke zu SoftMachine für den nützlichen Beitrag:

    chipchap (26.10.2014)

  4. #3
    chipchap ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.03.2014
    Beiträge
    501
    Danke
    11
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Das ist ja mal eine sehr gute Beschreibung. Vielen Dank

  5. #4
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    .
    Gern geschehen !



    .
    kind regards
    SoftMachine

  6. Folgender Benutzer sagt Danke zu SoftMachine für den nützlichen Beitrag:

    chipchap (26.10.2014)

  7. #5
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    .

    Hier eine programmierte Lösung zu deinem Baustein:

    Code:
    FUNCTION_BLOCK DELAY    (* N-sample delay *)
      VAR_INPUT
        RUN : BOOL ;     (* 1 = run, 0 = reset *)
        XIN : REAL ;
        N   : INT        (* 0 <= N < 128 or manufacturer- *)
      END_VAR            (*      specified maximum value  *)
      VAR_OUTPUT XOUT : REAL; END_VAR   (* Delayed output *)
      VAR X : ARRAY [0..127]     (* N-Element queue *)
                   OF REAL;      (* with FIFO discipline *)
          I, IXIN, IXOUT : INT := 0;
      END_VAR
      IF RUN THEN IXIN := MOD(IXIN + 1, 128) ; X[IXIN] := XIN ;
                  IXOUT := MOD(IXOUT + 1, 128) ; XOUT := X[IXOUT];
      ELSE XOUT := XIN ; IXIN := N ; IXOUT := 0;
           FOR I := 0 TO N DO X[I] := XIN; END_FOR;
      END_IF ;
    END_FUNCTION_BLOCK
    (SOURCE = look here)
    :
    kind regards
    SoftMachine

  8. #6
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    .
    Hier noch ein Hinweis aus deinem anderem Thread: Erklärung AVERAGE ( Mittelwert ) Baustein


    .
    kind regards
    SoftMachine

  9. #7
    chipchap ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.03.2014
    Beiträge
    501
    Danke
    11
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So, ich habe mich jetzt nochmal intensiv mit dem DELAY Baustein befasst. Den habe ich jetzt endgültig verstanden.
    Nun setze ich mich an den AVERAGE Baustein

Ähnliche Themen

  1. Delay Zeit in ST möglich?
    Von daniel1987 im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 26.03.2014, 08:52
  2. Retentetive Timer On delay (Allen Bradley Timer RTO)
    Von Andy Latte im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 15.07.2012, 19:23
  3. Delay Funktion in µs
    Von ysh032 im Forum CODESYS und IEC61131
    Antworten: 26
    Letzter Beitrag: 14.09.2011, 16:39
  4. 200ms delay beim CP 243-1 read mit libnodave
    Von Wollli im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.06.2009, 14:25
  5. Delay in SCL?
    Von hobel im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 29.08.2006, 20:42

Lesezeichen

Berechtigungen

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