Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 29

Thema: Taster auf einem Touchscreen programmieren, welchen man auch sperren kann

  1. #11
    Registriert seit
    13.01.2013
    Beiträge
    627
    Danke
    26
    Erhielt 64 Danke für 59 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich würde es dann so versuchen
    Code:
    IF taster THEN
    timer(IN:=Taster AND NOT timer.Q, PT:=t#3s);
    END_IF
    IF timer.Q THEN
     taster_sperre:=NOT taster_sperre;
    END_IF
    Dann hast du die selbe struktur wie oben vorgeschlagen

  2. Folgender Benutzer sagt Danke zu Dr.MirakulixX für den nützlichen Beitrag:

    lasse (04.07.2013)

  3. #12
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    752
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Die Sperre soll also genauso funktionieren wie die Schaltfunktion, nur eben nicht sofort beim Druck auf den Taster, sondern erst nach 3 Sekunden. Wie sowas geht, hast Du ja schon im ersten Teil Deines Programms geschrieben. Dann brauchst Du doch nur den Ausgang des Timer-FB's auf einen weiteren Trigger-FB geben und mit dessen Ausgang die Sperre umschalten.

    Etwas zu spät gepostet. Die All in one-Lösung von Dr. MirakulixX ist natürlich eleganter. Aber auf jeden Fall den Einwand von KingHelmer beachten. Das
    Code:
    timer(IN:=taster and not timer.Q,
    muss aber schon so bleiben, damit timer.Q nur für einen Programmzyklus TRUE wird.
    Geändert von StructuredTrash (04.07.2013 um 08:32 Uhr)

  4. #13
    Registriert seit
    21.02.2011
    Ort
    Deutschland, Baden-Würtemberg
    Beiträge
    990
    Danke
    115
    Erhielt 125 Danke für 100 Beiträge

    Standard

    Lass das zweite if komplett weg und nimm "taster" als eingang des Timers.

    Timer(
    In:= taster
    Pt:= t#:s
    )

    Taster_sperre := timer.q

    Oder gibt es einen grund warum der timer bedingt aufgerufen wird?


    Sent from my iPhone using Tapatalk

  5. #14
    lasse ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.07.2013
    Beiträge
    26
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das Problem bei Dr. MirakulixX Programmierung ist, dass wenn die Sperre einrastet man nur einmal kurz auf den taster drücken kann und die Sperre ist aufgehoben...

    Außerdem geht die schaltfkt weiterhin auf TRUE was eigentlich nicht sein darf bei aktivierter tasten_sperre.

    Außerdem toggelt die tasten_sperre ganze zeit zwischen TRUE und FALSE wenn ich einmal kurz den Taster betätige?!

    Danke übrigens schonmal^^
    Geändert von lasse (04.07.2013 um 08:45 Uhr)

  6. #15
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    752
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Allein der Name "tasten_sperre" für Deine Variable bewirkt recht wenig, Du musst sie schon beim Umschalten der Schaltfunktion abfragen.
    Code:
    IF taster_flanke.Q and not tasten_sperre
    THEN
       schaltfkt:=not schaltfkt;
    END_IF
    Um dem Problem beim Umschalten der Tastensperre beizukommen, poste bitte mal Deinen aktuellen Code.

  7. #16
    lasse ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.07.2013
    Beiträge
    26
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Code:
    taster_flanke(CLK:=taster);
    IF((taster_flanke.Q)AND(schaltfkt=0))THEN
        schaltfkt:=1;
    ELSE IF ((taster_flanke.Q)AND(schaltfkt=1))THEN
        schaltfkt:=0;
    END_IF
    END_IF
    (*IF taster_flanke.Q
    THEN
       schaltfkt:=NOT schaltfkt;
    END_IF*)
    
    IF taster THEN
    timer(IN:=Taster AND NOT timer.Q, PT:=t#3s);
    END_IF
    IF timer.Q THEN
     taster_sperre:=NOT taster_sperre;
    END_IF
    Code:
    PROGRAM PLC_PRG
    VAR
        taster:BOOL;
        schaltfkt:BOOL;
        taster_flanke:F_TRIG;
        taster_sperre:BOOL;
        timer:TON;
    END_VAR
    mir ist außerdem aufgefallen, dass der taster_sperren befehl sich immer verändert nachdem er ein paar mal richtig läuft... nur dann schaltet er sich mit einem einzelnen kurzen taster druck wieder um...
    Geändert von lasse (04.07.2013 um 10:28 Uhr)

  8. #17
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    752
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Ohne es im Detail geprüft zu haben, denke ich, dass der bedingte Aufruf des Timers den Ärger macht. Dafür ist der TON eben nicht gedacht. Ein Weglassen der "IF taster THEN"-Bedingung vor dem Timer-Aufruf würde aber ein anderes Problem bringen. Wenn der Taster dann für längere Zeit gedrückt bleibt, würde die Sperre immer nach jeweils 3 Sekunden umgeschaltet.
    Dann wohl doch besser mein erster Vorschlag mit dem zweiten Trigger-FB.
    Code:
    timer(IN:=taster,
            PT:=t#3s);
    timer_trig(Clk:=timer.Q);  (* Weiterer R_TRIG für den Timer-Ausgang *)
    IF timer_trig.Q
    THEN
       tasten_sperre:=not tasten_sperre;
    END_IF

  9. #18
    lasse ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.07.2013
    Beiträge
    26
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Kannst du mal bitte meinen Code umschreiben, wie du es nun meinst, weil ich gerade leicht konfus bin. Wäre super und danke für die schnelle Antwort

  10. #19
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    752
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Also gut, noch mal im Zusammenhang, aber ungetestet:
    Code:
    PROGRAM PLC_PRG
    VAR
        taster:BOOL;
        schaltfkt:BOOL;
        taster_flanke:R_TRIG;   (* Hier war vorher ein F_TRIG, aber Du willst doch die steigende Flanke, oder? *)
        taster_sperre:BOOL;
        timer:TON;
        timer_trig:R_TRIG;
    END_VAR
    
    (* Code *)
    taster_flanke(CLK:=taster);
    IF taster_flanke.Q and not tasten_sperre
    THEN
       schaltfkt:=NOT schaltfkt;
    END_IF
    
    timer(IN:=taster,
            PT:=t#3s);
    timer_trig(Clk:=timer.Q);  (* Weiterer R_TRIG für den Timer-Ausgang *)
    IF timer_trig.Q
    THEN
       tasten_sperre:=not tasten_sperre;
    END_IF

  11. #20
    lasse ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.07.2013
    Beiträge
    26
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielen Vielen Dank

    und jetzt wo du gerade dabei bist ha(s)t du/jemand Ideen zu der 2. und 3. Möglichkeit?
    Also ein Extramenü mit Abfrage ob man fortfahren will.

    mfg lasse
    Geändert von lasse (04.07.2013 um 11:17 Uhr)

Ähnliche Themen

  1. Kann man mit Pointern auch WORD adressieren ?
    Von mega_ohm im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.09.2012, 18:00
  2. Kann man diese Formel in S7 programmieren?
    Von Jan im Forum Programmierstrategien
    Antworten: 19
    Letzter Beitrag: 24.11.2009, 19:44
  3. Kann man Steuerungen nicht auch in C++ anstatt Ladder programmieren ?
    Von pvbrowser im Forum Sonstige Steuerungen
    Antworten: 0
    Letzter Beitrag: 16.12.2008, 10:19
  4. Man kann das Geldsparen auch übertreiben.
    Von vollmi im Forum Stammtisch
    Antworten: 13
    Letzter Beitrag: 19.08.2008, 19:38

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •