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

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

Thema: Schleifenabfrage in SCL - Zeitüberschreitung!

  1. #1
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Ihr,

    habe da mal wieder ein Problemchen...

    Ich wollte gerne in einer Schleife etwas überwachen und bekomme stets die Fehlermeldungen, dass

    1) die max. freie Zykluszeit zweifach überschritten wurde UND
    2) Zeitfehler, Start von OB 80 angefordert


    Fragen:

    - Wie kann ich so etwas umgehen, denn offensichtlich kommt der Fehler ja dadurch zustande, dass die CPU zu lange in der Schleife verharrt?
    - Können solche Abfragen bei einer SPS überhaupt nicht gemacht werden?

    Code:

    Schleife.jpg


    Vielen Dank!
    L.G. schnecke
    Zitieren Zitieren Schleifenabfrage in SCL - Zeitüberschreitung!  

  2. #2
    Registriert seit
    30.08.2003
    Beiträge
    2.196
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    Hallo,

    du willst den Motor 3s laufen lassen? Dann frag das mit IF /THEN ab, sonst wartet das Programm solange an der Stelle -> CPU-STOP


    André
    www.raeppel.de
    mit innovativen SPS-Tools schneller ans Ziel ....

  3. #3
    Registriert seit
    15.04.2009
    Ort
    Nordsachsen
    Beiträge
    252
    Danke
    171
    Erhielt 105 Danke für 97 Beiträge

    Standard

    Die While-Schleife verhindert die zyklische Programm-Abarbeitung (z.B. für 3s).

    Eleganter ist es, mit einer If-Abfrage den aktuellen Zustand zu prüfen und die jeweilige Aktion auszuführen.

    Ein While-Konstrukt würde ich nicht für "Warteaufträge" einsetzen. Die Schleife wird solange durchlaufen, bis die Bedingung Wahr ist.

    Grüße

    Ralph

  4. #4
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für eure Antworten... Nun, das war jetzt nur ein Beispielprojekt.

    Im eigentlichen Projekt soll geprüft werden, ob best. Bedingungen erfüllt sind, während ein Timer abläuft.

    Lässt sich dieses Zeitproblem irgendwie anders in den Griff bekommen - habe gelesen dass z.B. "RE_TRIGER" in den OB1 eingefügt werden kann, was dann das Stoppen der CPU verhindern soll? Allerdings klappt das nicht bei mir; die CPU geht sofort in Stop!

    Danke!
    L.G. schnecke

  5. #5
    Registriert seit
    09.06.2008
    Beiträge
    138
    Danke
    16
    Erhielt 13 Danke für 13 Beiträge

    Standard

    Also da was drumherum bauen, damit die CPU nicht in Stop geht halte ich für unschön.
    Das sieht nach zweifelhafter Programmierung aus. Gib mal ein ordentliches Beispiel. Dann kann Dir auch besser geholfen werden.
    Man sollte hier das Problem an der Wurzel packen und sich fragen ob man unbedingt diese while-Schleife benötigt bzw. wie man es anders lösen kann.

  6. #6
    Registriert seit
    30.08.2010
    Ort
    Östereich
    Beiträge
    1.458
    Danke
    503
    Erhielt 217 Danke für 192 Beiträge

    Standard

    du darfst den Zyklus der SPS nicht unterbrechen (bin eigentlich gegner von SCl, darum mal nur im Kurzstil)

    mit Start des Motors startest du deinen timer

    Für die Abfrage fragst du den timer ab

    wenn der Timer 1 wird dann hast du dein Ergebnis
    Elektrotechnik und Elektronik funktioniert mit Rauch (Beweis: Tritt Rauch aus, funktioniert auch das Bauteil nicht mehr)

  7. #7
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Warum muss der Timer in der Schleife sein?
    Ändere deinen Aufruf so, dass der Timer gestartet wird und wenn der im zyklischen Programm fertig ist, mache mit deinem Programmteil weiter.


    bike

  8. #8
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von winnman Beitrag anzeigen
    du darfst den Zyklus der SPS nicht unterbrechen
    Yep, hab das Ganze jetzt umgebaut - danke!
    L.G. schnecke

  9. #9
    Registriert seit
    14.05.2012
    Beiträge
    157
    Danke
    28
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Ich bin noch ziemlich neu mit SCL, wollte eigentlich nur ne While Schleife probieren... habe mit folgendem Code, das gleiche Problem:

    Code:
    WHILE  wd_input <= 5 DO
       wd_output := 20;
            
    END_WHILE;
    wd_input und wd_output sind beide DINT.

    Wie muss man eine While Schleife in SCL dann verwenden ohne die CPU auf Stopp zubringen? Hat jmd. evtl. ein praktisches Bspl?

  10. #10
    Registriert seit
    07.06.2011
    Beiträge
    117
    Danke
    4
    Erhielt 18 Danke für 18 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    wie vorher schon geraten wurde - keine Schleife sondern If-Then-Abfrage.

    Das ganze SPS-Programm läuft schon als Schleife ab (die zeitlich überwacht wird). Du brauchst daher nur noch die Bedingung prüfen und die entsprechenden Werte setzen.
    Mario

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