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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Zeitmessung mit IEC Timer

  1. #1
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Leute,

    ich wollte die Ausführungszeit eines Programmabschnitts messen.
    Ich habe das wie folgt realisiert:

    IF xB1=True THEN

    U:=230;
    TON(IN:=xB1,PT:=t#10s);
    zeit1:=TON.ET;
    zeit11:=Time();

    FOR i:=0 TO 30000 BY 1 DO
    wert:=wert+1;
    x:=x+1;
    RR:=RR+1;
    P:=(U*U)/RR;
    y:=SQRT(x);
    z:=SIN(y);
    e:=EXP(x);
    m:=ATAN(e);
    END_FOR

    zeit2:=TON.ET;
    zeit22:=Time();

    END_IF

    Dauer:=zeit2-zeit1;
    Dauer1:=zeit22-zeit11;


    Mit der Funftion Time() funktioniert es und es berechnet mir eine Dauer von ca. 24ms. Ich dachte nun, dass es mit dem TON Timer und des abgreifens von ET auch genauso funktioniert. Aber die Werte sind immer identisch und die Differenz damit 0.
    Könnte mir jemand kurz erklären warum und ht jemand vieleicht ne Idee wie es mit einem IEC Timer machen könnte????
    Möchte oder muss die Funktion Time() nämlich vermeiden.

    Vielen Dank schonmal

    Grüßle
    Zitieren Zitieren Zeitmessung mit IEC Timer  

  2. #2
    Registriert seit
    25.05.2009
    Ort
    Raum Zürich CH
    Beiträge
    85
    Danke
    15
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Hi,

    Ist Logisch:

    Zitat Zitat von MPH Beitrag anzeigen
    ....

    U:=230;
    TON(IN:=xB1,PT:=t#10s); ----> Hier wird die Zeitfunktion bearbeitet

    zeit1:=TON.ET; ----> Hier greifst du auf eine Instanzvariable der Zeitfunktion zu

    ....

    zeit2:=TON.ET; ----> Hier greifst du auf dieselbe Instanzvariable der Zeitfunktion zu
    zeit22:=Time();

    Die Variable TON.ET wird sich nur von Zyklus zu Zyklus ändern.

    Gruss SW-Mech

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Hallo,
    und wenn du den Aufruf des TON dann auch noch in einer bedingten Bearbeitung machst dann bekommt er keinen Flankenwechsel am IN mit und wird sowieso nicht korrekt arbeiten ....

    Gruß
    Larry

    Nachsatz:
    Immer noch das Benchmark-Thema ?
    Das wird (aber das hatte ich schon geschrieben) mit den internen Timern nicht besser oder präziser weil auch die mit der gleichen Zeitbasis arbeiten wie die andere Geschichte ...
    Geändert von Larry Laffer (26.09.2012 um 12:41 Uhr)

  4. #4
    MPH ist offline Benutzer
    Themenstarter
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von SW-Mech Beitrag anzeigen
    Hi,

    Ist Logisch:



    Die Variable TON.ET wird sich nur von Zyklus zu Zyklus ändern.

    Gruss SW-Mech
    Danke für die schnelle Antwort.
    Okey. Heisst das, dass die Zeitfunktion TON nicht in einem Zyklus bearbeitet wird? Oder wie meinst du das mit "Die Variable TON.ET wird sich nur von Zyklus zu Zyklus ändern."??
    Könntest du mir das vieleicht nochmal genauer erläutern?

    Hättest du eine andere Idee, wie ich es mit einem IEC Timer realisieren könnte????
    Oder gibt es eine andere Möglichkeit, die auch bei Siemens geht???

    Vielen Dank

    Grüßle

  5. #5
    MPH ist offline Benutzer
    Themenstarter
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    und wenn du den Aufruf des TON dann auch noch in einer bedingten Bearbeitung machst dann bekommt er keinen Flankenwechsel am IN mit und wird sowieso nicht korrekt arbeiten ....

    Gruß
    Larry


    Nachsatz:
    Immer noch das Benchmark-Thema ?
    Das wird (aber das hatte ich schon geschrieben) mit den internen Timern nicht besser oder präziser weil auch die mit der gleichen Zeitbasis arbeiten wie die andere Geschichte ...
    Hi Larry,
    ja leider immernoch Benchmarkthema.
    ich hab mich wie gesagt schon verabschiedet genauer als ms zu sein. Das reicht mir aber auch schon mittlerweile. Ich muss halt irgendwie schaffen, das mit einem IEC Baustein zu realisieren, da das auf Step7 auch laufen soll.
    Was meinst du mit "Aufruf des TON dann auch noch in einer bedingten Bearbeitung".????
    So wie ichs jetzt gemacht habe oder wie?
    Wird bei Schalten von xb1 auf True nicht die Flanke erkannt? Der Timer läuft doch an. Also hat er die Flanke doch mitbekommen oder???

    Vielen Dank

    Gruß

  6. #6
    MPH ist offline Benutzer
    Themenstarter
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi Hi,

    Also ich habs jetzt mal so probiert, dass ich nach der Schleife einen weiteren TON starte und dann die Zeiten subtrahiere.


    IF xB1=True THEN


    U:=230;
    TON(IN:=xB1,PT:=t#10s);
    zeit1:=TON.ET;
    zeit11:=Time();

    FOR i:=0 TO 30000 BY 1 DO
    wert:=wert+1;
    x:=x+1;
    RR:=RR+1;
    P:=(U*U)/RR;
    y:=SQRT(x);
    z:=SIN(y);
    e:=EXP(x);
    m:=ATAN(e);
    END_FOR

    xb2:=true --> hier lasse ich den 2. TON starten
    TON2(IN:=xb2,PT:=t#10s);

    zeit2:=TON2.ET; --> ALs zeit2 nehme ich jetzt Zeit des 2. TON

    zeit22:=Time();

    END_IF

    Dauer:=zeit1-zeit2; --> Nun ist es leider so, dass ich bei der Dauer über die TONs eine Zeit von 7ms erhalte
    Dauer1:=zeit22-zeit11; --> Bei der Messung über die Systemzeit berechnet sich ein Wert von 25ms.

    Welcher Wert ist nun Richtig? oder realistischer?
    Kann ich es so lösen mit den beiden TON Timern? Oder ist das von der Denkweise her Bullshit?

    Würde mich freuen wenn ihr mir nochmal helfen könntet.


    Grüße

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Leg doch einfach mal den Aufruf des TON vor das IF ...

    So, wie du es jetzt hast, ist es für den Timer nicht brauchbar ... vielleicht beim ersten Aufruf aber ganz sicher nicht mehr bei jedem weiteren ...

    Gruß
    Larry

  8. #8
    MPH ist offline Benutzer
    Themenstarter
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Leg doch einfach mal den Aufruf des TON vor das IF ...

    So, wie du es jetzt hast, ist es für den Timer nicht brauchbar ... vielleicht beim ersten Aufruf aber ganz sicher nicht mehr bei jedem weiteren ...

    Gruß
    Larry
    Hi Larry

    Also irgendwie raff ich des net.
    Wenn ich den Timeraufruf ausserhalb der If Anweisung lege liegt die Dauer bei ca 34ms:


    TON(IN:=xB1,PT:=t#10s);

    IF xB1=True THEN


    U:=230;
    zeit1:=TON.ET;
    zeit11:=Time();

    FOR i:=0 TO 30000 BY 1 DO
    wert:=wert+1;
    x:=x+1;
    RR:=RR+1;
    P:=(U*U)/RR;
    y:=SQRT(x);
    z:=SIN(y);
    e:=EXP(x);
    m:=ATAN(e);
    END_FOR

    zeit2:=TON2.ET;
    zeit22:=Time();

    END_IF

    Dauer:=zeit2-zeit1;
    Dauer1:=zeit22-zeit11;


    Wenn ich jetzt aber beide Aufrufe auserhalb der IF- Schleife lege, dann bin ich bei einer Zeit von über 2 sec.

    TON(IN:=xB1,PT:=t#10s);
    IF xB1=True THEN


    U:=230;
    zeit1:=TON.ET;
    zeit11:=Time();

    FOR i:=0 TO 30000 BY 1 DO
    wert:=wert+1;
    x:=x+1;
    RR:=RR+1;
    P:=(U*U)/RR;
    y:=SQRT(x);
    z:=SIN(y);
    e:=EXP(x);
    m:=ATAN(e);
    END_FOR

    END_IF

    zeit2:=TON2.ET;

    zeit22:=Time();


    Dauer:=zeit2-zeit1;
    Dauer1:=zeit22-zeit11;

    Ich teste das im Moment in CoDeSys. Hier werden die ANwenderprogramme doch auch zyklisch abgearbeitet oder nicht?????
    Warum ist es so ein ernormer Zeitunterschied. Ich stehe grad voll auf dem Schlauch......


    Kannst du oder ihr mir weiterhelfen

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

    Standard

    Versuche es lieber doch mit nur einem Timer, aber so:
    Code:
    TON(IN:=xB1,PT:=t#10s);
    IF xB1=True THEN
    
    U:=230;
    zeit1:=TON.ET;
    zeit11:=Time();
    
    FOR i:=0 TO 30000 BY 1 DO
    wert:=wert+1;
    x:=x+1;
    RR:=RR+1;
    P:=(U*U)/RR;
    y:=SQRT(x);
    z:=SIN(y);
    e:=EXP(x);
    m:=ATAN(e);
    END_FOR
    
    TON(ET=>Zeit2); (* statt zeit2:=TON.ET; *)
    zeit22:=Time();
    
    xB1:=false;  (* weiss nicht,ob Du das irgendwo anders untergebracht hast, aber ohne wird es nicht gehen *)
    
    END_IF
    
    Dauer:=zeit2-zeit1;
    Dauer1:=zeit22-zeit11;
    
    Voraussetzung ist, dass ET bei jedem TON-Aufruf aktualisiert wird, und nicht etwa nur einmal pro Programmzyklus. Ob das aber jede Steuerung so macht?

  10. #10
    MPH ist offline Benutzer
    Themenstarter
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von StructuredTrash Beitrag anzeigen
    Versuche es lieber doch mit nur einem Timer, aber so:
    Code:
    TON(IN:=xB1,PT:=t#10s);
    IF xB1=True THEN
    
    U:=230;
    zeit1:=TON.ET;
    zeit11:=Time();
    
    FOR i:=0 TO 30000 BY 1 DO
    wert:=wert+1;
    x:=x+1;
    RR:=RR+1;
    P:=(U*U)/RR;
    y:=SQRT(x);
    z:=SIN(y);
    e:=EXP(x);
    m:=ATAN(e);
    END_FOR
    
    TON(ET=>Zeit2); (* statt zeit2:=TON.ET; *)
    zeit22:=Time();
    
    xB1:=false;  (* weiss nicht,ob Du das irgendwo anders untergebracht hast, aber ohne wird es nicht gehen *)
    
    END_IF
    
    Dauer:=zeit2-zeit1;
    Dauer1:=zeit22-zeit11;
    
    Voraussetzung ist, dass ET bei jedem TON-Aufruf aktualisiert wird, und nicht etwa nur einmal pro Programmzyklus. Ob das aber jede Steuerung so macht?


    Hi vielen Dank für deinen Tipp,
    ich Holzkopf hab natürlich net an xb1:=false gedacht.
    Ich bin nicht mehr am PG. Werde es morgen sofort ausprobieren und Rückmeldung geben.
    Weisst du speziell welche Steuerungen das machen mit der ET Aktualisierung oder war das nur mal so ein Einwurf?

    Danke nochmal

    Gruß

Ähnliche Themen

  1. IEC Timer TON im Simatic S7
    Von spovi1 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 23.12.2011, 06:21
  2. IEC Timer
    Von coglione im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 23.11.2011, 12:40
  3. Was sind denn IEC-Timer?!
    Von MikeJ im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 03.05.2010, 23:02
  4. IEC timer 2
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 07.04.2005, 10:12
  5. IEC Timer
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 07.04.2005, 08:17

Lesezeichen

Berechtigungen

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