Zeit eines geschaltenes Ausganges messen

chucky
2009-11-15
2009-11-22
  • chucky - 2009-11-15

    Hallo zusammen

    Ich möchte die Zeit eines Ausganges messen welcher eingeschaltet ist. Das heiss: Die Zeit von der Einschaltung bis zur Ausschaltung.

    Kann mir jemand ein Beispiel zeigen das im FUB ist?

    Ich muss die Differenz von einer Vorgabezeit zu der eingeschalteten Zeit ausrechnen.

    Vielen Dank für eure Hilfe

    Gruss Christian

     
  • Rolf-Geisler - 2009-11-15

    Hallo Christian,

    mit FUP kann ich leider nicht dienen, schreibe nur in ST. Aber wenn Du das das nachfolgende Codebeispiel als ST-Baustein speicherst und dann von CoDeSys nach FUP konvertieren läßt, kommst Du auch dahin.

    Nun zu Deiner Frage: Der Aufruf von TIME() liefert die aktuelle CPU-Zeit zurück. Beim Einschalten des Ausgangs (z.B. mit einem R_TRIG erfasst) liest Du also die CPU-Zeit und speicherst sie als Zeitpunkt des Einschaltens. Das Ausschalten erfasst Du mit einem F_TRIG, liest wieder die CPU-Zeit und bildest die Differenz zum Einschaltzeitpunkt - fertig.

    FUNCTION_BLOCK Schaltzeit
    VAR_INPUT
      ixAusgang : BOOL;
    END_VAR
    VAR_OUTPUT
      qtEinschaltzeit : TIME;
    END_VAR
    VAR
      lhAusgang : R_TRIG;
      hlAusgang : R_TRIG;
      ZeitpunktEinschalten : TIME;
    END_VAR
      (* Signalflanken erfassen *)
      lhAusgang (CLK := ixAusgang);
      hlAusgang (CLK := ixAusgang);
      (* CPU-Zeit abfragen *)
      IF lhAusgang.Q  (* Einschaltflanke *)
      THEN ZeitpunktEinschalten := TIME();
      END_IF;
      IF hlAusgang.Q  (* Ausschaltflanke *)
      THEN qtEinschaltzeit := TIME() - ZeitpunktEinschalten;
      END_IF;
    

    Gruss Rolf

     
  • chucky - 2009-11-22

    Hallo Rolf

    Vielen Dank für deinen Typ. Das mit dem baustein hat sehr gut geklappt.

    Bei dem Code hat sich ein kleiner Fehler eingeschliechen. Die zweite Flanke ist ebenfalls eine positive. Nachdem ich diese durch eine negative ersetzt haben, funktionierte es einwandfrei.

    Nochmals vielen Dank

    Gruss

    Christian

     

Log in to post a comment.