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

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

Thema: CPU 1212 Fehler aus dem nichts.

  1. #1
    Registriert seit
    13.08.2013
    Beiträge
    69
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    ich habe eine CPU 1212 V3.0 die meine Heizung regelt.
    Läuft seit einem halben Jahr ohne Probleme.
    Heute morgen war die CPU in Stop.
    Nebenbei erfasst die CPU noch ein paar Zähler -S0-Signale im OB31 im 10ms Zyklus.
    Folgende Diagnosemeldungen hat die CPU geliefert:

    Temporary CPU error: Buffer overflow for OB 31 events
    buffer size: 2 events
    priority class 7
    Function will continue (system reaction)

    Temporary CPU error: Accepted number of pending OB 31 events exceeded
    set warning limit: 2 events
    priority class 7
    Time error, OB80 start requested

    Temporary CPU error: Time error (OB start event)
    CPU changes to STOP mode (no OB processing)

    Zur Fehlerzeit hat die CPU nichts besonderes getan (Tageswerte rotieren oder so) was sonderlich viel Rechenzeit benötigen würde.

    Hat jemand eine Idee, an was sowas liegen kann?

    Ach ja, was müsste ich denn im OB80 machen, damit sowas nicht wieder auftritt?

    Gruß
    Otwin
    Zitieren Zitieren CPU 1212 Fehler aus dem nichts.  

  2. #2
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard

    Hi!

    Das laden des OB80 wird beim Auftreten der Fehlers von der cpu angefordert. Da er nicht vorhanden ist, geht die cpu in Stopp. Für was ist denn der OB80 genau? Vielleicht findest du so etwas über den Fehler heraus.

    EDIT:
    Scheinbar dauert dein OB31 zu lange, wodurch ein Stau auftritt. Was ist im OB31 denn alles programmiert?

    Gruß,

    Ottmar
    Geändert von Ottmar (09.01.2015 um 16:22 Uhr)

  3. #3
    Otwin ist offline Benutzer
    Themenstarter
    Registriert seit
    13.08.2013
    Beiträge
    69
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Hi,
    der OB80 ist ein "Time error interrupt", zumindest sagt das TIA, wenn ich den OB80 anlege.
    Dieser wird wohl aufgerufen, wenn die max. Zykluszeit überschritten wird. Zumiondest hab ich die Hilfe so verstanden.
    Nur was soll ich in diesem OB80 machen, um einen CPU-Stop abzuwenden?
    Bzw. was passiert, wenn ein leerer OB80 vorhanden ist?

    Im OB31 passiert eigentlich nicht viel, der wertet nur die Eingänge der S0-Schnittstellen der Zähler aus, und addiert die Verbrauchswerte. Das macht er aber seit langem ohne Fehler.
    Ich hab die S0-Abfrage in den 10ms OB31 gelegt, weil die S0-Impulse teilweise nur 20ms lang sind.

  4. #4
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    Zitat Zitat von Otwin Beitrag anzeigen
    Nebenbei erfasst die CPU noch ein paar Zähler -S0-Signale im OB31 im 10ms Zyklus.
    Ok, OB31 läuft mit 10ms
    Zitat Zitat von Otwin Beitrag anzeigen
    Temporary CPU error: Buffer overflow for OB 31 events
    buffer size: 2 events
    priority class 7
    Function will continue (system reaction)

    Temporary CPU error: Accepted number of pending OB 31 events exceeded
    set warning limit: 2 events
    priority class 7
    Time error, OB80 start requested
    Scheint eigentlich recht eindeutig.
    Die CPU hat einen Puffer für die Anzahl der ausstehenden OB31-Zyklen die abgearbeitet werden müssen.
    Scheint 2 zu sein.
    Wenn also der OB31 (und falls noch andere Interupts in der selben Prioritätsklasse) nicht innerhalb der vorgegebenen 10ms abgearbeitet werden könne, dann kommt es zum "Rückstau". Die CPU möchte dann als Fehlerreaktion den OB80 (Zeitfehler-OB) aufrufen, wenn der nicht da ist geht sie auf Stop.
    Wenn du den OB80 drin hast könnte man theoretisch darauf in irgendeiner Art und Weise reagieren. Wenn man nur den Stopp verhindern will, dann kann der OB80 auch leer bleiben. Die CPU ruft dann OB80 auf, läuft ihn durch, tut nichts und geht auch nicht in Stopp.

    Trotzdem würde ich mir anschauen warum es zu dem Problem kommen kann. Sie dir die Routienen innerhalb von OB31 (und möglciherweise noch anderern OBs) an und schaue ob es dort zu einem Zeitproblem kommen kann.

    Ich hab das erst einmal bei einer 300er gesehen. Da hat ein Kollege einen Rücksprung in den OB35 geschrieben...

    OB80 wird zum Beispiel bei folgenden Ereignissen angefordert:
    Zitat Zitat von TIA-Hilfe
    B#16#01: Zykluszeit überschritten
    B#16#02: Der angeforderte OB ist noch in Bearbeitung.
    B#16#05: abgelaufener Uhrzeitalarm durch Uhrzeitsprung
    B#16#06: abgelaufener Uhrzeitalarm bei Wiedereintritt in RUN nach HALT
    B#16#07: Überlauf des OB-Anforderungspuffers für die aktuelle Prioritätsklasse
    B#16#08: Taktsynchronalarm-Zeitfehler
    B#16#09: Alarmverlust durch zu hohe Alarmlast
    B#16#0B: Technologiesynchronalarm-Zeitfehler
    Ich nehme an du hast Fehlercode B#16#07
    Geändert von RONIN (09.01.2015 um 16:36 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. #5
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Zitat Zitat von RONIN Beitrag anzeigen
    Wenn du den OB80 drin hast könnte man theoretisch darauf in irgendeiner Art und Weise reagieren. Wenn man nur den Stopp verhindern will, dann kann der OB80 auch leer bleiben. Die CPU ruft dann OB80 auf, läuft ihn durch, tut nichts und geht auch nicht in Stopp.
    Was passiert dann mit den noch pendenten OB31? Ich meine wenn der OB80 durchlaufen wurde müsste ja wieder zur nächstniedrigeren Prio springen und das wäre der noch laufende OB31 was ja dann gleich wieder den OB80 auf den Plan rufen würde.

    Ich hab das erst einmal bei einer 300er gesehen. Da hat ein Kollege einen Rücksprung in den OB35 geschrieben...
    Der klassiker

    mfG René

  6. #6
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Hallo,

    Ist deine Gesamtzykluszeit größer als 10ms?
    Wenn nein, dann könntest den Code aus dem OB31 zyklisch im Programm bearbeiten.
    Es sei denn, es muss immer im gleichen Takt reagiert werden. S0, Heizung usw...

  7. #7
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Was passiert dann mit den noch pendenten OB31? Ich meine wenn der OB80 durchlaufen wurde müsste ja wieder zur nächstniedrigeren Prio springen und das wäre der noch laufende OB31 was ja dann gleich wieder den OB80 auf den Plan rufen würde.
    Ja, bin auch der Meinung das der OB80 einen nicht zwingend rettet da die OB31-Warteschlange warscheinlich nicht gelöscht wird.
    Könnte dann sein das man bei jedem OB31-Aufruf auch gleich einen OB80-Aufruf mitbekommt.
    Ob CPU aber dann auf Stop geht weiß ich nicht, ich glaub schon dass sie weiterlaufen würde, aber schön ist der Systemzustand nicht.

    Wenn da Problem so wie beim TE sporadisch auftritt könnte schon seine dass man die Situation übertauchen kann und sich das System wieder fängt,
    man ist aber trotzdem gut daran beraten zu schauen woher das Problem kommt.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  8. #8
    Otwin ist offline Benutzer
    Themenstarter
    Registriert seit
    13.08.2013
    Beiträge
    69
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Die Zykluszeit liegt bei ca. 12ms. Es würde also im Moment auch noch im OB1 funktionieren.
    Aber wer weiss schon, was einem noch so alles einfällt, deswegen habe ich die Abfrage der S0-Impulse von Anfang an in den 10ms-OB gelegt. Hat ja bis jetzt auch problemlos funktioniert.

    Gibt es denn eine Möglichkeit, die bearbeitungsdauer des OB31 zu erfassen?

    Kann man im OB80 den Puffer irgendwie löschen, damit die CPU weiterläuft und nicht mehr versucht, die angestauten Anfragen an den OB31 zu bearbeiten?
    Wäre ja kein Problem, wenn der mal nicht abgearbeitet wird. (Wenns nicht jeden zweiten Zyklus ist)

  9. #9
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    Zitat Zitat von Otwin Beitrag anzeigen
    Gibt es denn eine Möglichkeit, die bearbeitungsdauer des OB31 zu erfassen?
    Schau dir den Befehl "RUNTIME" an. In der TIA-Hilfe ist sogar das Beispiel für dass was du suchst.

    Du könntest dir auch den Wert "Event-Count" (Events Discarded) der in den Temp-Bereich des OB geschrieben wird anschauen.
    Ob der z.B. größer 0 wird.

    Hast du nur den OB31 oder auch noch andere?
    Geändert von RONIN (09.01.2015 um 17:48 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  10. #10
    Otwin ist offline Benutzer
    Themenstarter
    Registriert seit
    13.08.2013
    Beiträge
    69
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von RONIN Beitrag anzeigen
    Schau dir den Befehl "RUNTIME" an. In der TIA-Hilfe ist sogar das Beispiel für dass was du suchst.

    Du könntest dir auch den Wert "Event-Count" (Events Discarded) der in den Temp-Bereich des OB geschrieben wird anschauen.
    Ob der z.B. größer 0 wird.
    Ich war der Meinung, RUNTIME gäbe es nur bei den 1500er CPUs.
    Danke für den Tip!

    Die Sache mit dem "Event-Count" versteh ich nicht so ganz, wo find ich den?

Ähnliche Themen

  1. TIA AG Abzug von CPU 1212 DC/DC/DC nicht möglich ?
    Von PLRK im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 22.08.2014, 19:26
  2. Step 7 CPU 313-2DP steigt sporadisch aus SF Fehler leuchtet
    Von Eisabiagr im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 09.06.2014, 11:06
  3. Antworten: 1
    Letzter Beitrag: 17.03.2011, 09:47
  4. Step7 Basic / CPU 1212 / KTP 600 / Adressfehler
    Von JandeFun im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 10.10.2010, 13:05
  5. Siemens CPU 1212 werte im db nicht remanent
    Von bernd81 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 30.09.2010, 11:23

Lesezeichen

Berechtigungen

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