Elektroda.pl
Elektroda.pl
X
SterControl
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Siemens S7 zatrzymuje się z błędem Cycle time exceeded

grigor252 16 Kwi 2016 21:30 870 5
  • #1 16 Kwi 2016 21:30
    grigor252
    Poziom 8  

    Witam. Wykorzystałem w swoim programie pętle programowe, skoki do etykiet. I pojawił się problem "Cycle time exceeded" jak sobie z nim poradzić? Diagnostic buffer poradził wgrać OB80 ale to nie pomaga. :-)

    0 5
  • SterControl
  • Pomocny post
    #2 16 Kwi 2016 22:06
    Markos80

    Specjalista Automatyk

    Wydłużyć czas monitorowania cyklu (we właściwościach CPU, Cycle monitoring time).
    Napisz jakie CPU i jaki finalnie masz czas cyklu, bo może nie do końca dobrze skonstruowałeś program i zrobił pętlę nieskończoną.

    0
  • SterControl
  • #3 18 Kwi 2016 11:47
    grigor252
    Poziom 8  

    CPU mam 313C a czas 150ms. Na pewno zrobiłem pętle bez końca bo czas monitorowania cyklu wydłużyłem i nie pomogło. Pytanie moje jest takie. Jaki jest sposób kończenia pętli? Bo ja chciałbym żeby program cały czas monitorował wejścia w celu sprawdzenia czy nie ulegają zmianie. Więc wydaje się że program ma pracować w sposób ciągły a jednak nie może. Chcę zrobić sterowanie nastawami pieca węglowego( opcje menu: czas podawania, czas przerwy w podawaniu, czas podtrzymania i sila nadmuchu) Parametry zmieniam wejściami (I0.3- w górę, I0.4- w dół). Poniżej zamieszczam kod z krótkim opisem o co w nim chodzi.


    Kod: text
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #4 18 Kwi 2016 15:34
    Rafikusa
    Poziom 14  

    Sterownik sam robi pętlę.
    Na początku cyklu (tak w uproszczeniu) sterownik czyta wejścia, zagląda do OB1, wykonuje wszystko po kolei, co tam jest zapisane (wywołane funkcje lub kod), po wyjściu z OB1 włącza wyjścia i znowu od początku.
    W programach na sterowniki raczej nie stosuje się skoków na górę, raczej tylko w dół, aby pominąć części kodu.
    Jak widzisz, twój program nie może działać, bo sterownik nigdy nie dochodzi poniżej ostatniej linijki i nie może zakończyć cyklu.

    rafikusa

    0
  • #5 18 Kwi 2016 17:14
    grigor252
    Poziom 8  

    Dzięki, pomogło. Należy skoki wykonywać w dół, omijając część kodu. A jak to jest ze składnią programu dla sterownika? Doświadczeni programiści stosują dowolną ilość pętli nie przejmując się ich nadmiarem? Czy powodować to może ostateczne pojawienie się błędów w działaniu urządzeń dla których pisano programy? Chyba również ważne jest minimalizowanie programu, czy dla sterowników wielkość programu nie ma znaczenia? (Ilość Networków i linii programu) Uczę się i chciałbym przestrzegać standardów stosowanych przez doświadczonych programistów. Mogę prosić o parę wskazówek w tej kwestii?

    0
  • #6 19 Kwi 2016 01:41
    Rafikusa
    Poziom 14  

    Przecież napisałem, że jest tylko jedna pętla. Jedyne co dochodzi, to cykliczne wywoływanie OB35 co stały, zdefiniowany czas. OB1 nie startuje co jakiś stały czas, bo ten zależy od długości całego programu.
    Twój program piszesz dla sterwonika Siemens, gdzie indziej tego kodu raczej nie użyjesz.
    Ilość networków (niemieckie: Netzwerke), nie ma znaczenia. Liczy się kompletna długość programu oraz jakie polecenia są w nim zawarte. Różne polecenia mają różny czas wykonania.

    Co do nauki, to zapraszam do lektury dostępnych źródeł.

    0
  Szukaj w 5mln produktów