Impulsdauer messen

hwesbe
2009-07-23
2009-07-24
  • hwesbe - 2009-07-23

    Hallo,

    wie kann ich die Länge eines Impulses messen der über einen Dig.Eingang kommt? Ich möchte lediglich eine Ausgabe in Sekunden die ein Signal/Impuls an einem Eingang ansteht.

    Mein System besteht aus einer WAGO 750-841 + 1x750-430.

    Gruß hwesbe

     
  • Erik Böhm - 2009-07-23

    Moin

    VAR

    Timer:  TON;
    
    tImpulsDauer:   TIME;
    
    DigInPut: BOOL := FALSE;
    
    fTrig: F_TRIG;
    

    END_VAR


    fTrig.CLK := DigInPut;

    fTrig();

    IF fTrig.Q THEN

    tImpulsDauer    := Timer.ET;    (* Abgelaufene Zeit speichern *)
    

    END_IF

    Timer(IN:= DigInPut, PT:=t#1h);

    Gruß

    Erik

     
  • Rolf-Geisler - 2009-07-23

    Variante 2: Der Aufruf von TIME ohne Parameter liefert die aktuelle CPU-Zeit zurück. Damit lässt sich die Dauer eines Impulses auch so messen:

    VAR
      DigInput : BOOL;
      LHFlanke : R_TRIG;
      HLFlanke : F_TRIG;
      ImpulsAnfang : TIME;
      ImpulsEnde : TIME;
      ImpulsDauer : TIME;
    END_VAR
    LHFlanke (CLK := DigInput);
    HLFlanke (CLK := DigInput);
    IF LHFlanke.Q
    THEN ImpulsAnfang := TIME();
    END_IF;
    IF HLFlanke.Q
    THEN ImpulsEnde := TIME();
    END_IF;
    ImpulsDauer := ImpulsEnde - ImpulsAnfang;
    

    Gruss Rolf

     
  • hwesbe - 2009-07-24

    Danke Euch,

    war ja doch einfach. Manchmal sieht man den Wald vor lauter Bäumen nicht.

    Gruß hwesbe

     

Log in to post a comment.