Problem mit Timer

tomiku
2010-01-10
2010-01-22
  • tomiku - 2010-01-10

    Hallo zusammen,

    Ich habe ein kleines Problem mit Timer TON.

    Ich möchte gerne einen Timer starten und zwischendurch anhalten.

    Wenn ich den Timer erneut starte soll er mit der Restzeit weiterlaufen.

    Befehl Start: Timer fängt an zu laufen.

    Befehl Pause: Timer hält an.

    Befehl Start: Timer läuft weiter mit der Restzeit.

    Befehl Stopp: Timer wird zurückgesetzt.

    Gibt es vielleicht einen Baustein mit dem man so etwas realisieren kann?

    Danke im Voraus.

     
  • gravieren - 2010-01-10

    Hi

    Frage bei TON den Wert "ET" ab.

    Durch Differenzbildung startest du dann.

    Irgendwie PTneu = PT - ET

    Dann TON mit PTneu.

    Oder so ähnlich.

    Du kannst auch einen neuen Baustein schreiben der das kann.

    Siehe auch w www.oscat.de w

     
  • tomiku - 2010-01-10

    Hi Karl,

    Habe ich schon ausprobiert.

    Würde auch funktionieren, aber

    das Problem ist in meiner Visualisierung wo die Zeit angezeigt werden soll.

    Wenn ich einen neuen Timer starte, fängt die Restzeit wieder bei Null an zu laufen.

    Ich möchte aber meine abgelaufene Zeit „einfrieren“.

    Zum Beispiel:

    Vorgabezeit: 60 Minuten

    Befehl Start: Zeit fängt an zu laufen.

    Befehl Pause nach 20 Minuten: Zeit hält an (in der Visualisierung soll dann Restzeit 40 Minuten angezeigt werden)

    Befehl Start: Zeit läuft weiter

        (in der Visualisierung soll dann
    

    von 40 Minuten weiter gezählt werden)

     
  • gravieren - 2010-01-10

    Hi

    Dann zeige in deiner Visu nicht den Werte PT sondern

    PTneu + PT an.

    Oder habe ich hier einen Denkfehler.

    Du kannst dur aus dem TON selber einen Baispein schreiben.

    Du benötigst lediglich noch einen Bausteineingang der z.b. "halt" heist.

     
  • tomiku - 2010-01-10

    Hi Karl,

    Ich bin ein absoluter Anfänger im programmieren.

    Wenn ich einen Baustein selber schrieben könnte

    hätte ich das Problem warscheinlich gar nicht.

    Ich weiß nicht genau ob es einen Baustein gibt mit einer

    Pausenfunktion, aber ich habe schon alles versucht und weiß einfach

    nicht weiter.

    Für einen guten Tipp wäre ich dankbar.

     
  • Anonymous - 2010-01-11

    Originally created by: jl

    Hallo

    Dieses Problem habe ich auch schon einmal gehabt, habe ich so gelöst, indem ich mit der Zykluszeit des Tasks eine Variable hochgezählt habe:

    zykZeit := t#10ms;

    sollzeit := t#60m;

    IF start THEN ( Startbefehl --> Zeit hochzählen )

      zeitabgelaufen := FALSE;
    
      t1 := t1 + zykZeit;
    
      restzeit := sollzeit - t1;       (* Restzeit berechnen *)
    

    END_IF

    IF t1 >= sollzeit THEN ( Abfrage ob Sollzeit abgelaufen )

      start := FALSE;
    
      restzeit := t#0ms;
    
      t1 := t#0ms;
    
      zeitabgelaufen := TRUE;
    

    END_IF

    IF zeitabgelaufen THEN

             (* entsprechende Befehle hier einfügen dass Timer abgelaufen *)
    

    END_IF

     
  • tomiku - 2010-01-15

    Hallo zusammen,

    Ich war einige Tage auf Montage deshalb die späte Antwort.

    Danke an alle.

    Werde ich morgen alles mal probieren.

     
  • hugo - 2010-01-18

    warum benutzt du für dein problem nicht einfach einen simplen integrator den du jederzeit resetten oder stoppen kannst

     
  • tomiku - 2010-01-22

    Hallo Hugo,

    Ich bin Neuling und wies nicht genau was du damit meinst.

    Kannst du mir das mal etwas genauer erklären?

    Danke im Voraus.

     

Log in to post a comment.