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

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

Thema: Frage zu SCL

  1. #1
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    habe grad bemerkt, dass der Timer in SCL immer abläuft - also auch dann, wenn E1.0 kurz nach deim Einschalten sofort wieder auf 0 gestellt wird.

    In AWL ist das Verhalten einer Einschaltverzögerung doch anders...

    Warum ist das in SCL anders?

    Code:
    FUNCTION FC1 : VOID
     
    VAR
        biVal_R2 :WORD;//timer
        actFlag_R2: BOOL;//timer
        curr_time_R2 : S5TIME;//timer
        S5Timer_flag_R2 : BOOL; // Timer
    END_VAR
     
    BEGIN
     
          curr_time_R2 := S_ODT (T_NO:=T1, 
                            S:=S5Timer_flag_R2, 
                            TV:=T#3S,
                            R:=FALSE, 
                            BI:=biVal_R2, 
                            Q:=actFlag_R2); 
     
            IF (E1.0 = true) THEN                        // Start Timer
                S5Timer_flag_R2 := true; 
            END_IF;    
     
            IF (actFlag_R2 = true) THEN                  // Timer abgelaufen
                S5Timer_flag_R2 := false;
            END_IF;               
     
    END_FUNCTION
    Danke!
    Grüße
    petzi
    Zitieren Zitieren Frage zu SCL  

  2. #2
    Registriert seit
    27.09.2010
    Beiträge
    516
    Danke
    36
    Erhielt 63 Danke für 56 Beiträge

    Standard

    wenn ich deinen code nun richtige deute, hast du keine einschaltverzögerung sondern ein zeitgetriggertes flipflop programmiert, oder bin ich neuerdingszu doof für scl?

  3. #3
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Rupp Beitrag anzeigen
    oder bin ich neuerdingszu doof für scl?


    Nee Rupp, du sicher nicht - dann schon eher ich; ist aber auch Neuland für mich...

    ALSO:

    "S_ODT" ist ja eine Einschaltverzögerung. Der Timer sollte doch nur dann laufen, wenn "S5Timer_flag_R2" true ist - und die IF-Anweisung besagt ja, dass "S5Timer_flag_R2" nur dann true ist, wenn E1.0 den Status 1 hat - oder habe ich hier einen Denkfehler?
    Geändert von petzi (28.09.2010 um 15:00 Uhr)
    Grüße
    petzi

  4. #4
    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 Petzi,
    die Sequenz :
    Code:
           IF (E1.0 = true) THEN                        // Start Timer
                S5Timer_flag_R2 := true; 
            END_IF;
    bewirkt ein SETZEN des gewählten Bits.
    In AWL würde das heißen :
    Code:
    U E1.0
    S #S5Timer_flag_R2
    damit hast du eine Art speichernde Einschaltverzörgerung programmiert (S_ODT ist natürlich eine Einschaltverzörgerung), weil auch nach Abfallen von E1.0 das Triggerbit weiterhin aktiv ist.
    Du löscht das Bit ja erst dann wieder, wenn der Timer abgelaufen ist ...

    Und das Tolle daran ... du hast es auch genau so, wie es arbeitet, dokumentiert. Wo ist also das Problem ...?

    Gruß
    Larry

  5. #5
    Registriert seit
    27.09.2010
    Beiträge
    516
    Danke
    36
    Erhielt 63 Danke für 56 Beiträge

    Standard

    also wenn du willst das die var: actFlag_R2 high bleibt mußt du die zweite if bedingung folgender massen nacharbeiten

    IF (E1.0 = false) THEN // Timer abgelaufen
    S5Timer_flag_R2 := false;
    END_IF;,

    Das sollte dann ein TON sein
    Geändert von Markus Rupp (28.09.2010 um 15:13 Uhr)

  6. #6
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Und das Tolle daran ... du hast es auch genau so, wie es arbeitet, dokumentiert. Wo ist also das Problem ...?

    Gruß
    Larry
    Danke für eure Antworten!

    Das Problem ist:

    Der Timer startet ja über "S5Timer_flag_R2". Dieses ist ja aber nur TRUE, wenn E1.0 den Status 1 hat (siehe IF-Anweisung). Wenn ich nun aber E1.0 nach dem Start auf 0 setze, so läuft der Timer dennoch, obwohl ja dann "S5Timer_flag_R2" FALSE sein sollte...
    Grüße
    petzi

  7. #7
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    @Rupp: Ja stimmt, mit deiner Änderung ist es eine reine TON!

    Danke!
    Geändert von petzi (28.09.2010 um 15:30 Uhr)
    Grüße
    petzi

  8. #8
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    bewirkt ein SETZEN des gewählten Bits.
    Achja, jetzt sehe ich es... das Wörtchen SETZEN. Das ist dann bei einer IF-Anweisung offensichtlich immer so, oder?

    Vielen Dank!
    Grüße
    petzi

  9. #9
    Registriert seit
    27.09.2010
    Beiträge
    516
    Danke
    36
    Erhielt 63 Danke für 56 Beiträge

    Standard

    deine bedingung E1.0 ist erfüllt, nur dann wird S5Timer_flag_R2 gesetzt

    und danach nicht mehr angerührt, ergo nein es ist nicht immer so sonder nur wenn IF (?) erfüllt ist, d.h. du mußt entweder eine else-if/else-or/nor verzweigung programmieren oder aber du läßt die if-bedingung und programmierst "konventionell"

    edit "wie und was gesetzt wird hängt vom zuweisungsoperator und seiner wertigkeit ab, fakt ist es passiert immer nur wenn if (?)= true ist

  10. #10
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    noch etwas, ich weiß ja nicht ob das so gewollt ist, aber das beschreiben von temporären am Ende des Bausteins (FC) ist gefährlich. Im nächsten Zyklus kann diese einen anderen zustand haben.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

Ähnliche Themen

  1. Frage
    Von waldy im Forum Stammtisch
    Antworten: 15
    Letzter Beitrag: 29.10.2010, 20:17
  2. frage mpi
    Von mortus im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 13.05.2009, 20:26
  3. Antworten: 15
    Letzter Beitrag: 09.04.2009, 20:57
  4. s7 frage
    Von maresic.s im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.08.2005, 13:59
  5. Antworten: 4
    Letzter Beitrag: 18.05.2005, 18:49

Lesezeichen

Berechtigungen

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