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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Schrittkette und TON-Timer

  1. #1
    Registriert seit
    26.05.2009
    Ort
    Sächsische Schweiz Osterzgebirge
    Beiträge
    27
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habe folgendes Problem: Ich habe eine Schrittkette porgrammiert. Diese funktioniert auch eigentlich sehr gut und die einzelnen Schritte werden nacheinander abgearbeitet. Nur in einem Schritt wollte ich einen TON einfügen. Dieser wird aber einfach übersprungen und es geht mit dem Schritt 7 weiter.

    CASE Step OF
    .........
    6: IF Sensor_1 AND NOT Timer_3.Q THEN
    Timer_3.IN := TRUE;
    Step := Step +1;
    END_IF
    7: IF Timer_3.Q THEN
    Finish := FALSE;
    Step := Step +1;
    END_IF
    8: Step := 0;
    END_CASE

    Timer_3 (PT:= T#5s, );
    Zitieren Zitieren Schrittkette und TON-Timer  

  2. #2
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard

    Hallo spoon,

    versuche es vielleicht mit

    7: IF Timer_3.Q THEN
    Timer_3.IN := FALSE;
    Finish := FALSE;
    Step := Step +1;
    END_IF

    Gruß,
    witkatz

  3. #3
    Spoon ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.05.2009
    Ort
    Sächsische Schweiz Osterzgebirge
    Beiträge
    27
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Habe es so geändert wie witkatz es beschrieben hat. Leider funktioniert es nicht. Der Timer wird einfach übersprungen und die Schrittkette springt wieder in Schritt 1.
    Bleibt dort aber stehen, da der Merker Finsh erst zurück gesetzt werden muss.

  4. #4
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    Kannste mal deinen Schritt 5 und evtl auch Schritt 4 posten?

    Du schreibst Schritt 6 wird übersprungen. Dann wird das Problem bestimmt voher zu suchen sein.

  5. #5
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Hallo Spoon!

    Also dein Ansatz ist soweit in Ordnung. Es fehlt aber noch an ein paar Kleinigkeiten.

    1. Mit "Timer_3.IN := TRUE;" wird dein Timer nicht gestartet. Das liegt daran, dass der Timer-Baustein mit diesem Aufruf nicht aufgerufen wird. Besser ist "Timer_3(IN:= TRUE, PT:= T#5s);".

    2. Um zu schauen, ob dein Timer abgelaufen ist, ist es richtig den Ausgang Q zu überprüfen. Das funktioniert auch mit "Timer_3.Q". Allerdings musst du vor deiner Abfrage den Timer aktualisieren, da er ansonsten nicht den aktuellen Wert übernimmt. Also einfach ein "Timer_3(IN:= TRUE);" vor der Abfrage einfügen.

    3. Nachdem dein Timer abgelaufen ist, musst du ihn zurücksetzen, sonst kannst du ihn in deinem weiteren Programmablauf nicht mehr verwenden. Das hat auch schon witkatz angemerkt. Also einfach nach deiner Abfrage ein "Timer_3(IN:= FALSE);" einfügen.

    Code:
    6: IF Sensor_1 AND NOT Timer_3.Q THEN
    Timer_3(IN := TRUE, PT := T#5s);         (* Timer starten *)
    Step := Step +1;
    END_IF
    7: Timer_3(IN := TRUE);                  (* Timer aktualisieren *)
    IF Timer_3.Q THEN                        (* Timer abgelaufen? *)
    Timer_3(IN := FALSE);                    (* Timer zurücksetzen *)
    Finish := FALSE;
    Step := Step +1;
    END_IF
    Gruß Cerberus
    Geändert von Cerberus (15.12.2009 um 09:42 Uhr) Grund: Schreibfehler
    A programmer is just a tool which converts caffeine into code.

  6. #6
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    @ Cerberus:
    Spoon ruft den Timer am Ende der Schrittkette jeden Zyklus auf.
    ... hoffe zumindest, dass ich seinen Code korrekt interpretiere.

    Zitat Zitat von Spoon Beitrag anzeigen

    CASE Step OF
    .........
    6: IF Sensor_1 AND NOT Timer_3.Q THEN
    Timer_3.IN := TRUE;
    Step := Step +1;
    END_IF
    7: IF Timer_3.Q THEN
    Finish := FALSE;
    Step := Step +1;
    END_IF
    8: Step := 0;
    END_CASE

    Timer_3 (PT:= T#5s, );
    Ich halte die Art des Aufrufs auch für die sauberste.

  7. #7
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Zitat Zitat von trinitaucher Beitrag anzeigen
    @ Cerberus:
    Spoon ruft den Timer am Ende der Schrittkette jeden Zyklus auf.
    ... hoffe zumindest, dass ich seinen Code korrekt interpretiere.



    Ich halte die Art des Aufrufs auch für die sauberste.
    Sorry hab ich überlesen. In diesem Fall haben sich meine Punkte 1 und 2 erledigt. Trotzdem sollte der Timer wieder zurückgesetzt werden.
    A programmer is just a tool which converts caffeine into code.

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    nach meiner Meinung wird das so mit dem Timer niemals was werden. Der Timer muß um sinnvoll funktionieren zu können, die steigende und auch die fallende Flanke am IN mitbekommen. Das klappt normalerweise in einem CASE oder auch in einer IF-THEN Anweisung nicht.
    Ich würde den Timer außerhalb des CASE programmieren und zuweisen - dann von mit aus den Q etc. im CASE verwenden - das gibt dann keine Probleme ...

    Gruß
    LL

  9. #9
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    nach meiner Meinung wird das so mit dem Timer niemals was werden. Der Timer muß um sinnvoll funktionieren zu können, die steigende und auch die fallende Flanke am IN mitbekommen. Das klappt normalerweise in einem CASE oder auch in einer IF-THEN Anweisung nicht.
    Ich würde den Timer außerhalb des CASE programmieren und zuweisen - dann von mit aus den Q etc. im CASE verwenden - das gibt dann keine Probleme ...

    Gruß
    LL
    @ Larry

    Ich verwende Timer regelmäßig in CASE-Schleifen. Wie im dem oben geposteten Code. Und es funktioniert einwandfrei.

    Gruß Cerberus
    A programmer is just a tool which converts caffeine into code.

  10. #10
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Spoon Beitrag anzeigen
    Habe es so geändert wie witkatz es beschrieben hat. Leider funktioniert es nicht. Der Timer wird einfach übersprungen und die Schrittkette springt wieder in Schritt 1.
    Code:
    PROGRAM MAIN
    VAR
        Step: INT;
        Timer_3: TON;
        Sensor_1: BOOL;
    END_VAR
    CASE Step OF
    0:
        (*.........*)
        Timer_3.IN := FALSE;
        step:= 6;
    6:
        IF Sensor_1 AND NOT Timer_3.Q THEN
            Timer_3.IN := TRUE;
            Step := Step +1;
        END_IF
    7:
        IF Timer_3.Q THEN
            Timer_3.IN := FALSE;
            Step := Step +1;
        END_IF
    8:
        Step := 0;
    END_CASE
    
    Timer_3 (PT:= T#5s, );
    Die Schrittkette überspringt den Schritt 6 nicht. Der dauert nur einen Zyklus, man sieht das in der Online-Anzeige nicht. Dafür ist sie zu träge.
    Um zu sehen ob der Schritt 6 bearbeitet wird, musst du einen Breakpoint oder eine Testvariable in dem Schritt setzen, oder den Schrittzähler Tracen.

    Gruß,
    witkatz

Ähnliche Themen

  1. Schrittkette
    Von Horschd im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 15.06.2011, 11:40
  2. Schrittkette
    Von degano im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 24.10.2007, 11:44
  3. Suche Ersatz für IFM TIMER LG ( Logik Timer)
    Von GrafLaugenkotz im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 16.01.2007, 17:02
  4. Timer in einer Schrittkette
    Von DirkKuhn im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.08.2005, 16:53
  5. S7 Schrittkette
    Von Hugo-Soft im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.10.2004, 13:48

Lesezeichen

Berechtigungen

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