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

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

Thema: Schleifenabfrage in SCL - Zeitüberschreitung!

  1. #11
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Django2012 Beitrag anzeigen
    ...
    Wie muss man eine While Schleife in SCL dann verwenden ohne die CPU auf Stopp zubringen? Hat jmd. evtl. ein praktisches Bspl?
    Vereinfacht kann man sagen:
    Wenn Du innerhalb der Schleife dafür sorgst, daß die Ausstiegsbedingung auch erreicht wird, z.B. durch Wertberechnung, kannst Du sie verwenden. Also ähnlich FOR-NEXT-Schleifen - definiertes Ende, das von der Schleife bzw. den Befehlen innerhalb selbst gesteuert wird.
    Kommt die Ausstiegsbedingung von außerhalb der Schleife, z.B. der Zustand eines Eingangs, dann besser IF-THEN verwenden (und damit die Schleife über den zyklischen Aufruf haben).

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

    Django2012 (14.08.2012)

  3. #12
    Registriert seit
    05.09.2011
    Beiträge
    176
    Danke
    43
    Erhielt 28 Danke für 20 Beiträge

    Standard

    Du musst dir die Schleifen so vorstellen, dass immer nach dem END_xxx "zurück gesprungen" wird! Aber das immer im selben SPS-Zyklus!!

    Also um bei deinen Beispiel zu bleiben...

    Code:
    WHILE  wd_input <= 5 DO
    wd_output := 20;
    END_WHILE;
    WHILE wd_input <=5 DO ... heißt soviel wie: Solange wd_input kleiner gleich 5 mache ... das was zwischen WHILE und DO steht nennt man auch Durchführungsbedingung!

    Also hat wd_input z.B. den Wert 4 dann wird wd_output zwar mit dem Wert 20 überschrieben aba bei dem END_WHILE springt er wieder zurück zur Durchführungsbedingung!
    Nachdem wir uns immer noch im selben Zyklus befinden und sich der Wert von wd_input nicht ändern wird, wird die Schleife immer und immer wieder durchgeführt (theoretisch unendlich).

    Deine SPS geht dadurch in STOP.

    Code:
    Index := 0;
    Out := 0;
    WHILE Index < Endwert DO
    Index := Index + 1;
    Out := Out + Index;
    END_WHILE
    Das ist zwar kein praktisches Beispiel, aber überleg dir mal folgendes:

    Endwert = 7

    Wie oft wird die Schleife durchlaufen?
    Welchen Wert hat Out nachdem die Schleife beendet wurde?

  4. #13
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.725
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du musst dir zu allererst mal vorstellen das die SPS ohne irgendwelches äußeres zutun eine Endlose Schleife ist.
    Wenn du diese Denkweise mal begriffen hast, dann kommst du auch zum Ergebnis das eine WHILE-Schleife
    von ein paar Spezialfällen abgesehen (hat aber dann mit Datenhandling zu tun), vollkommen unnötig ist.

    Ich verwende eine WHILE Schleife praktisch gelegentlich mal zum durchsuchen eines Datenbereichs,
    also ein Array durchsuchen bis ich im Array finde wonach ich suche, natürlich sollte man auch hier eine entsprechende Abbruchbedingung vorsehen.
    P.S. Das könnte man auch mit FOR Schleife und Exit machen, ist aber optisch umständlicher.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

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

    Django2012 (14.08.2012)

Ähnliche Themen

  1. SCL: FB Aufruf unter SCL mit Variablen DB
    Von ThorstenK im Forum Programmierstrategien
    Antworten: 32
    Letzter Beitrag: 10.02.2011, 19:15
  2. Fehlermeldung bei Zeitüberschreitung?
    Von pinolino im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 09.09.2009, 16:19
  3. Antworten: 4
    Letzter Beitrag: 07.10.2006, 00:34
  4. SCL - AWL Kommando "SRD" in SCL
    Von Floh im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 09.06.2006, 09:37
  5. Brauche Hilfe bei SCL.SFC Aufrufen in SCL
    Von Gerold im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 06.10.2005, 10:47

Lesezeichen

Berechtigungen

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