Einlesen eines kontinuierlichen Signales

2009-10-27
2009-10-29
  • Student-Andidas - 2009-10-27

    Ich möchte ein kontinuierliches Signal alle 4 sekunden abtasten und in ein Array schreiben. Habe nun versucht das ganze mit dem Blink-Baustein zu machen. Woher soll ich nun wissen wie lange das Programm zum lesen eines Messwertes braucht? Zur zeit sieht das bei mir so aus, dass das Programm versucht alle werte in der timehigh phase aufzunehmen...

    Kann mir da jemand helfen?

    Danke

     
  • Rolf-Geisler - 2009-10-27

    Hi,

    wenn ich Dich recht verstehe, zeichnet Dein Programm während der ganzen Zeit, in der der Blinker High liefert, Messwerte auf. Du musst die Aufzeichnung an die Flanken des Blinkersignals anhängen:

    VAR
      lhFlanke : R_TRIG;  (* steigende Flanke *)
      hlFlanke : F_TRIG;  (* fallende Flanke *)
    END_VAR
    lhFlanke (CLK := Blinker);
    hlFlanke (CLK := Blinker);
    IF lhFlanke.Q
    (* OR hl.Flanke.Q, wenn Du beide Blinkerflanken auswerten willst / musst *)
    THEN ArrayWert[..] := Messwert;
    END_IF;
    

    Gruss Rolf

     
  • Student-Andidas - 2009-10-28

    danke danke problem gelöst...am anfang findet man nicht so schnell die benötigten FBs.

    grüße andreas

     
  • Student-Andidas - 2009-10-29

    Hallo Rolf,

    ich habe deinen vorschlag nun umgesetzt.

    Habe nun eine Visualisierung von dem Ausgang des Blinkers und des R_TRIG

    gemacht und musste erschreckend feststellen, dass der Ausgang des Blinkers unregelmäßig ist. dazu kommt noch, dass der Ausgang des Triggers nicht auf jede positive flanke reagiert sondern ab und zu mal.

    Woran könnte das liegen?

    Die Taskkonfiguration hab ich nun offen gelassen, sodass er mich immer automatisch returned...

    danke

     
  • Rolf-Geisler - 2009-10-29

    Hallo Andreas,

    habe ehrlich gesagt keine Ahnung. Ist mir noch nicht untergekommen.

    Betreffs des R_TRIG kann ich mir bestenfalls vorstellen, dass Du die Bearbeitung dieses Flankentriggers in bestimmten Situationen überspringst. Wenn dann eine LH- und eine HL-Flanke in der Ausblendzeit einlaufen, hat das Kerlchen keine Chance zu schalten.

    Was die Regelmäßigkeit des Blinkers angeht, kann das auch nur scheinbar so sein. Die Kommunikation zwischen der SPS und der Visualisierung ist nicht besonders schnell (auch die onboard-Visualisierung direkt im System - Arbeitsblatt Visualisierungen - reagiert ziemlich träge, selbst auf ausgesprochen schnellen Systemen wie TwinCAT auf einer Raketen-CPU). Du kannst ja mal testweise die SPS-Zyklen von einer Blinkerflanke zur nächsten mitzählen, der Wert sollte bei von Zyklus zu Zyklus einigermassen gleicher Rechenzeit immer annähernd gleich sein.

    Gruss Rolf

     

Log in to post a comment.