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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Zeitmessung in Structur Text

  1. #1
    Registriert seit
    22.09.2011
    Beiträge
    53
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin moin,

    ich muss bei TwinCat eine Zeitmessung realisieren. Das ganze soll folgender Maßen realisiert werden:

    Mittels negativer Flanke eines digitalen Eingangs wird die Zeitmessung gestartet. Bei der zweiten negativen Flanke des selben digitalen Eingangs soll die Zeitmessung gestoppt werden, die gemessene Zeit in ms in eine Variable kopiert werden und gleichzeitig die Zeitmessung neu gestartet werden.

    Die Messung dient zur Ermittlung der Zykluszeit einer Anlage.

    Hat jemand einen Vorschlag, wie ich dieses Problem in ST lösen kann?

    Vielen Dank im Vorraus.

    Gruß
    Zitieren Zitieren Zeitmessung in Structur Text  

  2. #2
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    757
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard

    Eine Zählvariable in jedem Programmzyklus um 1 erhöhen. Bei der digitalen Signalflanke die Zählvariable in eine andere kopieren und dann wieder auf 0 setzen. Anlagenzyklus = Zähler * Taskzykluszeit.

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

    Standard

    Nimm doch einen ganz normalen Timer (TON). Die abgelaufene Zeit kannst Du am Ausgang ET abnehmen.

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

    Standard

    Mit dem Gedanken hatte ich auch schon gespielt, nur bin ich leider ein Anfänger in Sachen ST und wüsste nicht wie ich das codieren soll.

  5. #5
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Code:
    VAR
      timer : TON;
    END_VAR
    
    timer(PT:=t#1000s,IN:=FALSE);
    timer(in:=TRUE);
    
    
    time := timer.ET;

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

    Standard

    Zitat Zitat von drfunfrock Beitrag anzeigen
    Code:
    VAR
      timer : TON;
    END_VAR
    
    timer(PT:=t#1000s,IN:=FALSE);
    timer(in:=TRUE);
    
    
    time := timer.ET;
    Du musst den Timer aber nicht zweimal aufrufen, was soll denn das überhaupt bringen? Einmal IN:=False und gleich danach IN:=TRUE? Da kann der Timer doch gar nicht starten.

    Mach es so:
    Code:
    timer(IN:={Startbedingung,bool},PT:={länger als die längste mögliche Taktzeit,time});
    time := timer.ET; (*So wie im vorigen Beispiel angegeben*)

  7. #7
    Registriert seit
    13.01.2005
    Ort
    Allgäu
    Beiträge
    146
    Danke
    4
    Erhielt 23 Danke für 18 Beiträge

    Standard

    Ich bin mir zwar nicht sicher ob das TwinCat anbietet, aber normalerweise kannst du ja bei fallender Flanke die Systemzeit auslesen auf ein Variable speichern. Bei der zweiten fallenden Flanke wieder Systemzeit auslesen und die zuvor gespeicherte Zeit subtrahieren = Vergangene Zeit und zugleich wieder auf Zeitstempel für die nächste Messeung.

    Gruß
    M_o_t

  8. #8
    Registriert seit
    24.09.2010
    Beiträge
    86
    Danke
    4
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Hi

    Ich hatte schon einmal fast die selbe Aufgabenstellung, hab das so gelöst:

    Erste Flanke -> Timer 1 startet.

    Zweite Flanke -> Timer 1 Stopt und Timer 2 startet, zusätzlich wird die gemessene Zeit von Timer 1 gespeichert (Merkerword, DB, ...)

    Dritte Flanke -> Timer 2 Stopt und Timer 1 Startet wieder, Zeit von Timer 2 überschreibt gespeicherte Zeit.

    Hab den Timerwechsel einfach mit einer FlipFlop schaltung gemacht. (Stromstoßschalter)


    Hoffe ich konnte dir weiterhelfen

  9. #9
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    757
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard

    Bietet noch jemand mehr Timer?

    Code:
    VAR
       ZyklusZaehler:UDINT;
       GemesseneZeit:TIME;
    END_VAR;
    
    
    IF Triggerflanke
    THEN
       GemesseneZeit:=UDINT_TO_TIME(Zykluszaehler*Taskzykluszeit);
       Zykluszaehler:=0;
    END_IF;
    ZyklusZaehler:=ZyklusZaehler+1;

  10. Folgender Benutzer sagt Danke zu StructuredTrash für den nützlichen Beitrag:

    Leto (03.04.2012)

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin,

    @ StructuredTrash:

    Klingt logisch, aber woher bekomme ich die Taskzykluszeit?

Ä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
  •