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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Schrittkette und TON-Timer

  1. #11
    Registriert seit
    24.02.2009
    Beiträge
    1.244
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wenn der Timer gestartet wurde und hochzählt wurde Schritt 6 erfolgreich ausgeführt. Eigentlich sollte er nach 5s in Schritt 8 springen und im nächsten Zyklus nach 0 zurück und der ganze Tanz geht von vorne los.

  2. #12
    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

    Danke erstmal für die vielen Antworten.

    Hab das ganz nochmal ein bischen umgeschrieben:

    Case Step OF
    ......
    6: IF Reed_1 AND NOT Time_Go THEN
    Go_Auto := FALSE;
    Finish := TRUE;
    TIME_Go := TRUE;
    Step := Step +1;
    END_IF
    7: IF TIME_OK THEN
    Time_Go := FALSE;
    Finish := FALSE;
    Step := Step +1;
    END_IF
    8: Step := 0;
    END_CASE

    Timer_3 (IN:=Time_Go, PT:= T#5s, Q=>, PT=>, );
    IF Timer_3.Q THEN
    TIME_OK:= TRUE;
    ELSE
    TIME_OK:= FALSE;
    END_IF

    Der Timer beginnt bei dem Aufruf des Schritt 6 zulaufen.
    Es wird aber direkt in den Schritt 8 gesprungen und dann halt wieder in den Schritt 1. Als wäre die Zeit schon abgelaufen, obwohl sie ja noch läuft. So sehe ich das Online.
    Ich will aber erst 5 Sekunden warten und dann wieder in den Schritt ein Springen. Vielleicht gibt es dafür noch eine andere Lösung.

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

    Standard

    Sicher dass du nicht noch irgendwo außerhalb der CASE ein Step := Step + 1 drin hast oder der Timer irgendwo nochmal aufgerufen wird?
    Setz zur Sicherheit mal in den Schritte die Variable Step auf absolute Werte, also im Schritt 6: Step := 7, im Schritt 7: Step := 8 usw.

    Lass den Timer zur Sicherheit mal allein laufen mit manuellem Setzen der .IN.
    Geändert von trinitaucher (15.12.2009 um 20:10 Uhr)

  4. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo,
    wo ist denn TIME_OK deklariert ? TEMP oder STAT ?
    Du kannst in dem CASE-Konstrukt den Timer3.Q durchaus abfragen - wichtig ist das du den Timer selbst ausserhalb steuerst.

    Gruß
    LL

  5. #15
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Den Timer setzt man vor die Switch-Case-Anweisung. Daher

    Code:
    eier_timer(IN:=triggervar ... )
    
    switch....
    Setzt man den Timer über das Programm und nicht über IO-Eingänge muss der In-Eingang einen Low-High übergang machen.Entweder so:

    Code:
    Mann kann den Timer auch in die Switch-Case-Anweisung packen, aber dann wird es richtig unübersichtlich ergo hässlich. Ich halte diese Lösung für die sauberste, weil sie leicht wartbar ist. 
    
    case schritt_100: 
       triggervar := FALSE;
       state := schritt_101;
    
    case schritt_101:
       triggervar := TRUE;
       if eier_timer.out then
           state := schritt_xyz;
       end_if;
    oder

    Code:
    case schritt_100:
       eier_timer(IN:=NOT eier_timer.out);
       if eier_timer.out then
           state := schritt_xyz;
       end_if;
    Eine dritte Lösung ist ziemlich hässlich, wenn man die obige Struktur einsetzt:
    Code:
    case schritt_100:
       eier_timer(IN:=False);
       eier_timer(IN:=True);
       state := schritt_101;
    
    case schritt_101:
       if eier_timer.out then
            state := schritt_xyz;
        end_if;
    Wichtig ist in jedem Fall, dass der IN-Eingang einen Low-High-Übergang macht und bei jedem Wechsel des Eingangs der FB-Code ausgeführt wird, was nur dann geschieht, wenn der so dasteht:

    Code:
    eier_timer(....);
    Geändert von drfunfrock (16.12.2009 um 10:05 Uhr)

Ä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
  •