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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Zyklus-Verständnisproblem in SCL

  1. #1
    Registriert seit
    01.02.2010
    Beiträge
    345
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Ihr,

    ich hänge grad an einer SCL-Programmierung - muss da was ändern...


    Beispielsweise ist folgender (vereinfachte) Code programmiert:

    Code:
    CASE Status_2 OF      
    
    0:  IF ("Eingang_1" = true) THEN
            Status_2 := 2;  
        END_IF;
    
    
    2:  IF ("Eingang_2" = true) THEN
            Status_2 := 3;  
        END_IF;                                                 
    
    
    3:  IF ("Eingang_3" = true) THEN
            Status_2 := 4;  
        END_IF;
          
    END_CASE ;
    Soweit ich es verstehe handelt es sich um eine Art Schrittkette.


    1) Beim ersten Zyklusdurchlauf werden ja alle Schritte durchlaufen; also von oben nach unten erst Schritt 0, dann Schritt2 und dann Schritt3, oder?

    2) Nehmen wir jetzt mal an, es seien beim ersten Zyklusdurchlauf alle drei Bedingungen erfüllt gewesen, so sind dem Status_2 ja nacheinander die Werte 2, 3 und 4 zugewiesen worden.

    Jetzt kommt der 2. Zyklusdurchlauf:

    Was passiert nun? Wird nun zu jedem Schritt gesprungen, da im ersten Zyklus ja jeder Wert zugewiesen wurde, oder wird jetzt nur zu Schritt4 (in obigen Code nicht mehr aufgeführt) gesprungen, da der Wert 4 die letzte Zuweisung im ersten Zyklus war?


    Ist echt verwirrend für mich...

    Lieben Dank für eure Hilfe!
    Grüße
    anne
    Zitieren Zitieren Zyklus-Verständnisproblem in SCL  

  2. #2
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von anne Beitrag anzeigen
    Was passiert nun? Wird nun zu jedem Schritt gesprungen, da im ersten Zyklus ja jeder Wert zugewiesen wurde,
    Nein!
    Zitat Zitat von anne Beitrag anzeigen
    oder wird jetzt nur zu Schritt4 (in obigen Code nicht mehr aufgeführt) gesprungen, da der Wert 4 die letzte Zuweisung im ersten Zyklus war?
    Ja, letzte Zuweisung gilt!
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  3. #3
    anne ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.02.2010
    Beiträge
    345
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Paule Beitrag anzeigen

    Ja, letzte Zuweisung gilt!
    Vielen Dank Paule!

    Also würde im 2. Zyklus nur zu Schritt 4 gesprungen werden, richtig?

    Aber was passiert dann mit den Anweisungen in Schritt 0, 2 und 3? Die waren ja (im ersten Zyklus) auch alle erfüllt und werden jetzt (im zweiten Zyklus) einfach übersprungen... d.h. wenn dort z.B. Ausgänge geschaltet werden, passiert im zweiten Zyklusdurchlauf gar nichts!
    Grüße
    anne

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von anne Beitrag anzeigen
    Vielen Dank Paule!

    Also würde im 2. Zyklus nur zu Schritt 4 gesprungen werden, richtig?

    Aber was passiert dann mit den Anweisungen in Schritt 0, 2 und 3? Die waren ja (im ersten Zyklus) auch alle erfüllt und werden jetzt (im zweiten Zyklus) einfach übersprungen... d.h. wenn dort z.B. Ausgänge geschaltet werden, passiert im zweiten Zyklusdurchlauf gar nichts!
    Die CASE-Anweisung wird nach dem ersten erfolgreichen Vergleichs verlassen. Die nachfolgenden Anweisungen werden dann nicht mehr ausgeführt.

    In einem Programm wären die Werte der Variable "Status_2" in den Zyklen folgendermaßen:

    Zyklus 0 (Start): 0
    nach 1. Zyklus: 2
    nach 2. Zyklus: 3
    nach 3. Zyklus: 4

    Danach wird im CASE keine Anweisung ausgeführt, da keine Übereinstimmung gegeben ist und kein ELSE-Zweig vorhanden ist.

  5. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    Paule (28.01.2011)

  6. #5
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Die CASE-Anweisung wird nach dem ersten erfolgreichen Vergleichs verlassen.
    Oh man, klar. (Hand an Stirn schlag)
    Sorry Anne, da habe ich Blödsinn geschrieben.
    Thomas hat Recht.

    Danke Thomas.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  7. #6
    anne ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.02.2010
    Beiträge
    345
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    @Paule: Kein Problem, dafür gibt es ja dieses super Forum... sonst sind deine Antworten aber immer TOP!

    @Thomas: Danke, denke das habe ich dann verstanden.

    Kann man es auch so ausdrücken:

    1) Im allerersten Zyklus wird sogleich an die Stelle "0:" gesprungen, da ja zu Beginn der Wert 0 in der Variable "Status_2" steht.

    2) Bei Übereinstimmung wird jetzt der Wert 2 in die Variable "Status_2" geschrieben, so dass im zweiten Zyklus sofort an die Stelle "2:" gesprungen wird.

    Wenn dem so ist, dann handelt es sich ja eher um Sprunganweisungen als um eine Schrittkette, oder?
    Grüße
    anne

  8. Folgender Benutzer sagt Danke zu anne für den nützlichen Beitrag:

    Paule (28.01.2011)

  9. #7
    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

    Hi,

    was steht den sonst noch so in dem Baustein?

    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)

  10. #8
    Registriert seit
    18.01.2011
    Ort
    Mainz
    Beiträge
    42
    Danke
    0
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Zitat Zitat von anne Beitrag anzeigen
    Wenn dem so ist, dann handelt es sich ja eher um Sprunganweisungen als um eine Schrittkette, oder?
    Ich würde es als Fallunterscheidung bezeichnen. Genau wie IF..THEN..ELSE quasi eine Fallunterscheidung für boolsche Ausdrücke ist, ist CASE..OF eine Fallunterscheidung für numerische Ausdrücke.

  11. #9
    Registriert seit
    18.03.2008
    Beiträge
    267
    Danke
    3
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Zitat Zitat von mainzelmann Beitrag anzeigen
    Ich würde es als Fallunterscheidung bezeichnen. Genau wie IF..THEN..ELSE quasi eine Fallunterscheidung für boolsche Ausdrücke ist, ist CASE..OF eine Fallunterscheidung für numerische Ausdrücke.
    Das ist ganz klar eine Schrittkette.

  12. #10
    Registriert seit
    18.01.2011
    Ort
    Mainz
    Beiträge
    42
    Danke
    0
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Chefmech Beitrag anzeigen
    Das ist ganz klar eine Schrittkette.
    Jein!

    Eine CASE-Anweisung an sich ist eine Fallunterscheidung.

    Sie kann natürlich super verwendet werden (wie auch in der Fragestellung des TE) um eine Schrittkette zu programmieren.

Ähnliche Themen

  1. Verständnisproblem bei DB aufruf im FC
    Von S7online im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 13.02.2017, 13:57
  2. Verständnisproblem S7 400 H FH usw.
    Von Bender25 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 09.06.2015, 21:24
  3. AWL Verständnisproblem
    Von invoices im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 12.08.2010, 11:35
  4. Verständnisproblem mit pointer ?
    Von Waelder im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.08.2009, 09:02
  5. Profibus-DP-Zyklus mit OB1-Zyklus synchronisieren?
    Von Supervisor im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 08.06.2006, 13:09

Lesezeichen

Berechtigungen

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