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

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

Thema: Zeitmessung in Structur Text

  1. #11
    Registriert seit
    25.11.2009
    Beiträge
    21
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Kannst du unter Ressourcen> Task Konfiguration selber bestimmen

  2. Folgender Benutzer sagt Danke zu Guarnere für den nützlichen Beitrag:

    Leto (03.04.2012)

  3. #12
    Registriert seit
    01.10.2009
    Ort
    Regensburg
    Beiträge
    77
    Danke
    8
    Erhielt 11 Danke für 11 Beiträge

  4. #13
    Leto ist offline Benutzer
    Themenstarter
    Registriert seit
    22.09.2011
    Beiträge
    53
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ok, danke.

    Jetzt habe ich aber noch eine abschließende Frage:

    Wie kann ich in ST einen digitalen Eingang auf die positive oder negative Flanke abfragen?

  5. #14
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Zitat Zitat von Leto Beitrag anzeigen
    Wie kann ich in ST einen digitalen Eingang auf die positive oder negative Flanke abfragen?
    Mit den Bausteinen F_Trig und R_Trig aus der Standard.lib
    A programmer is just a tool which converts caffeine into code.

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

    Leto (03.04.2012)

  7. #15
    Leto ist offline Benutzer
    Themenstarter
    Registriert seit
    22.09.2011
    Beiträge
    53
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Beitrag

    Ok. Hab es dann doch über die Suche gefunden in ST.

    Code:
    VAR   
        timer :TON;
        GemesseneZeit:TIME;
        ZyklusZaehler:UDINT;
        fStartflanke: R_TRIG;
    END_VAR
    Code:
    fStartflanke(CLK:= DI_Conv1TriggerPosNotReached);
    IF (fStartflanke.Q) THEN
       GemesseneZeit:=UDINT_TO_TIME(Zykluszaehler*10); (*10 = 10ms Taskzyklus *)
       Zykluszaehler:=0;
    END_IF;
    ZyklusZaehler:=ZyklusZaehler+1;
    Sollte so funktionieren denke ich.

    Vielen Dank an alle
    Geändert von Leto (03.04.2012 um 11:02 Uhr)

  8. #16
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Zitat Zitat von Leto Beitrag anzeigen
    Ja, die sind mir bekannt, nur deren Aufruf mittels Structur Text leider nicht.
    Als erstes deklarierst du eine Variable vom Typ R_Trig bzw. F_Trig und den Eingang:

    Code:
    fbRTrig: R_TRIG;
    bInput1 AT %I*: BOOL;
    Dann musst du den entsprechenden digitalen Eingang einbauen:

    Code:
    fbRTrig(CLK:= bInput1);
    Zum Schluss musst du den Baustein noch auswerten:

    Code:
    fbRTrig();
    IF NOT fbRTrig.Q THEN
    /* Dein Code */
    END_IF
    A programmer is just a tool which converts caffeine into code.

  9. #17
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard

    Zitat Zitat von Cerberus Beitrag anzeigen
    A
    Zum Schluss musst du den Baustein noch auswerten:

    Code:
    fbRTrig();
    IF NOT fbRTrig.Q THEN
    /* Dein Code */
    END_IF
    Es reicht aber, die Funktion einmal aufzurufen. Den 2.Aufruf fbRTrig(); kannst Du Dir sparen.

    Code:
    IF NOT fbRTrig.Q THEN
    /* Dein Code */
    END_IF

  10. #18
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Zitat Zitat von asci25 Beitrag anzeigen
    Es reicht aber, die Funktion einmal aufzurufen. Den 2.Aufruf fbRTrig(); kannst Du Dir sparen.

    Code:
    IF NOT fbRTrig.Q THEN
    /* Dein Code */
    END_IF
    Aber nur wenn der erste Aufruf zyklisch aufgerufen wird. Passiert der erste Aufruf in einem Case-Step und die Abfrage in einem anderen Case-Step, dann muss vor der Abfrage erst der Baustein aktualisiert werden, wie in meinem Beispiel.
    A programmer is just a tool which converts caffeine into code.

  11. #19
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich will jetzt auf keinen Fall eine Grundsatzdiskussion starten oder jemanden angreifen. Die Case Funktion war nicht ersichtlich.
    Aber ich würde in so einem Fall den ersten Aufruf durch

    Code:
    fbRTrig.CLK:= bInput1;
    ersetzen.

    Das wäre aus meiner Sicht sauberer. So bleibt es bei einem zyklischen Aufruf.

    Aber verwendet der TE überhaupt ein Case? Wahrscheinlich nicht....

    Darum würde ich Ihm empfehlen:

    Code:
    fbRTrig(CLK:= bInput1);
    If fbRTrig.Q Then
    ..

Ähnliche Themen

  1. SCL akzeptiert Structur nicht
    Von Bensen83 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 02.03.2011, 11:52
  2. WinCC flex Structur --> Array
    Von supergrobi im Forum HMI
    Antworten: 13
    Letzter Beitrag: 10.03.2010, 11:05
  3. Einausgaenge in Structur initialisieren
    Von Ebias im Forum CODESYS und IEC61131
    Antworten: 27
    Letzter Beitrag: 06.03.2009, 18:30
  4. 3 Byte in eine Structur laden
    Von INST im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 09.02.2009, 09:41
  5. Antworten: 7
    Letzter Beitrag: 17.10.2005, 10:54

Lesezeichen

Berechtigungen

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