Erst Impuls und dann Ausgang setzen

e-pappy
2010-07-01
2010-07-01
  • e-pappy - 2010-07-01

    Hallo zusammen!

    Dreh mich mal wieder beim programmieren im Kreis herum

    Hab schon sämtliche Sachen ausprobiert, komm aber nicht zu meinem gewünschten Ziel?!

    Folgendes möchte ich tun:

    Beim Druck auf einen "Taster" möchte ich eine LED ansteuern, die erst einmal kurz blinken soll und danach ständig an sein soll! Beim erneuten drücken auf den "Taster" soll die LED zweimal aufblinken und dann wiederum ständig leuchten und dann nochmal beim drücken des "Tasters" dreimal blinken und ständig leuchten. Wird dann wieder der Taster gedrückt, soll die LED ausgehen und fängt dann wieder von vorne an.

    Hab schon mit Triggern und Timern herumexperimentiert, aber dreh mich irgendwie nur im Kreis und bekomm es einfach nicht hin!? Ich glaub es ist zu warm

    Kann jemand helfen?

     
  • Matze001 - 2010-07-01

    Hast du einen Zähler (CTU) drin?

    Poste mal deinen Code hier, wenn es ST oder AWL ist mittels des Code-Tags, ansonsten per Screenshot.

    MfG

    Marcel

     
  • e-pappy - 2010-07-01

    Ich hab all meine Versuche schon wieder verworfen...

    Momentan sieht mein Code so aus (allerdings ohne Impulsfunktion):

    VAR
       DA00       AT %QX1.1.0.0 : BOOL;
       DA01         AT %QX1.1.0.1 : BOOL;
       DA02       AT %QX1.1.0.2 : BOOL;
       LED1         AT %QX1.2.1.0 : BOOL;
       LED2         AT %QX1.2.1.1 : BOOL;
       LED3         AT %QX1.2.1.2 : BOOL;
       Taster      AT %IX1.2.1.0 : BOOL;
       Trig1: R_TRIG;
       count: INT;
    END_VAR
    Trig1(CLK:= Taster );
    IF Trig1.Q THEN
       count := count+1;
       IF count = 5 THEN count := 0; END_IF;
    END_IF;
    IF count = 0 THEN        (* Automatikbetrieb *)
       DA00 := FALSE;
       DA01 := FALSE;
       DA02 := FALSE;
       LED1 := FALSE;
       LED2 := TRUE;
       LED3 := FALSE;
    ELSIF count = 1 THEN             (* Hand - Stufe 1 *)
       DA00 := TRUE;
       DA01 := FALSE;
       DA02 := FALSE;
            LED1 := TRUE
       LED2 := FALSE;
       LED3 := FALSE;
    ELSIF count = 2 THEN          (* Hand - Stufe 2 *)
       DA00 := FALSE;
       DA01 := TRUE;
       DA02 := FALSE;
       LED1 := TRUE;
       LED2 := FALSE;
       LED3 := FALSE;
    ELSIF count = 3 THEN          (* Hand - Stufe 3 *)
       DA00 := FALSE;
       DA01 := FALSE;
       DA02 := TRUE;
       LED1 := TRUE;
       LED2 := FALSE;
       LED3 := FALSE;
    ELSIF count = 4 THEN        (* AUS *)
       DA00 := FALSE;
       DA01 := FALSE;
       DA02 := FALSE;
       LED1 := FALSE;
       LED2 := FALSE;
       LED3 := TRUE;
    END_IF;
    

    In den "Hand-Stufen" soll nun die LED1 vor dem Dauerleuchten je nach Stufe kurz pulsen. Für Stufe 1 also ein kurzer Impuls und dann DauerEIN, bei Stufe 2 zwei kurze Impulse und dann DauerEIN und bei Stufe 3 soll die LED1 erst dreimal kurz pulsen und dann aktiviert werden.

    Wie gesagt, hatte es schon mit Triggern und Timern etc. probiert, bin aber nie zu einem brauchbaren Ergebnis gekommen.

     
  • Matze001 - 2010-07-01

    Dann bau dir einen Blinker, der anfängt zu blinken sobald eine Stufe neu aktiviert wurde. Dann zählst du die anzahl der Blinker, und vergleichst sie mit deiner Stufe. Sobald die identisch sind lässt du sie dauerleuchten.

    MfG

    Marcel

     
  • e-pappy - 2010-07-01

    Hallo Matze!

    Danke für den Tipp mit dem Blinker!

    Hab mir nun direkt drei Stück für die entsprechenden Stufen mit integriertem Zähler gebaut und es funktioniert sogar...

    Danke nochmal!

     

Log in to post a comment.