Step 7 OB121: Verständnisfrage

Spoonman

Level-1
Beiträge
86
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine kleine Verständnisfrage zum OB121. Bei mir steht im Diagnosepuffer einer SPS folgender Fehler:
OB121.PNG
Ich habe hier einen alten Thread gelesen und bin zunächst dem Rat gefolgt das Programm in einen Simulator zu schieben und dann das ganze nochmal auszulesen.
Resulatat: Die Meldung tritt nicht auf.

Ich wollte jetzt mit dem OB121 arbeiten. Funktioniert folgendes wenn ich es im OB121 reinschreibe?


Code:
//Baustein auslesen
L     #OB121_BLK_TYP
T     MB1000

//Bausteinnummer bestimmen
L     #OB121_BLK_NUM
T     MB1001

Ich möchte nur auf Nummer sicher gehen. Ich möchte nicht das mir die CPU in Stopp geht.

Vielen Dank im Voraus.

Gruß Ralf
 
Ich mach das immer so... OB121 rauslöschen und schauen in welchem Baustein die CPU den Riemen abwirft. Wenn du einen echten Stop gerade nicht gebrauchen kannst dann halt mit PLCSim. Dort kannst du auch testen ob dein Code funktioniert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In PLCsim kan mann die baugruppe status nie auslesen.
In ein S7-400 kan man machen was du geprogrammiert habe aber in ein 300 habe dass keine sin da diese sps da einfalse code inschreib. selectieren in S7 manager OB121 und drukke auf die F1 taste.
In die hilfe wurde dass getoont. Wenn ein OB121 in die SPS sitz geht er nicht in stop bei ein programmcode fehler oder mann muste ein stop anfordeung in OB121 programmieren.

Joop
 
Wenn es in der CPU passiert, muss es eigentlich auch im Simulator passieren. Der Grund, weshalb es nicht funktioniert könnte auch der sein, dass du von falschen Voraussetzungen ausgehst. Z.b. hast du das falsche Codestück reingeladen und der Fehler passiert an anderer Stelle, oder das den Fehler auslösende Ereignis wird im Simulator nicht nachgestellt.
Mir ist das mal mit Telegrammverkehr passiert, bei dem ich im Simulator nichts finden konnte, weil meine simulierten Telegramme natürlich immer stimmten.

Mein Rat wäre, jag die CPU in Stop und schau im Stack nach wo der Hase im Pfeffer liegt. Wenn es aktuell nicht geht, dann musst du damit leben dass dich der OB am laufen hält.
 
Hallo spoonman,

was ich schon mal gemacht hab ist aber mühsam ohne Ende. Du kannst im Ob 1 ganz oben einen Merker setzen und im Fehler Ob Rücksetzen dann zuerst nach jedem fc/fb aufruf im Ob 1 den merker mit und auf einen Anderen Merker legen so siehst du wo ungefähr das Problem ist jetzt jetzt kannst du denn Merker im Fc abfragen und den Fehler weiter eingrenzen. Jetzt musst du nur noch hoffen das dein Problem nicht in einem Interrapt Ob liegt dies kannst du aber mit weiteren Merker den du am Anfag des Interrapt Obs setzt und wieder im Fehler ob zurücksetzt.

Mit freundlichen Grüßen Tia
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo spoonman,

was ich schon mal gemacht hab ist aber mühsam ohne Ende. Du kannst im Ob 1 ganz oben einen Merker setzen und im Fehler Ob Rücksetzen dann zuerst nach jedem fc/fb aufruf im Ob 1 den merker mit und auf einen Anderen Merker legen so siehst du wo ungefähr das Problem ist jetzt jetzt kannst du denn Merker im Fc abfragen und den Fehler weiter eingrenzen. Jetzt musst du nur noch hoffen das dein Problem nicht in einem Interrapt Ob liegt dies kannst du aber mit weiteren Merker den du am Anfag des Interrapt Obs setzt und wieder im Fehler ob zurücksetzt.

Mit freundlichen Grüßen Tia

Die Idee ist gut aber ich glaube nicht, dass das auch nur irgendjemand richtig verstanden hat, der das selbst noch niemals angewendet hat.
Er meint das so, dass du im OB1 erstes Netzwerk sowas reinschreibst:
Code:
O MX.X
ON MX.X
= MX.X
Nun baust du nach jedem FC Aufruf im OB 1 ein weiteres Netzwerk ein, in das du folgendes schreibst
Code:
U MX.X
= MX.X
Im Fehler- OB schreibst du in ein Netzwerk folgendes rein:
Code:
U MX.X
R MX.X

Danach schaust du dir den OB1 Online an (Brille aktivieren)

Der Baustein, nach welchem die Abfrage
Code:
U MX.X
= MX.X
nicht mehr wahr ist, ist der FC in dem der Fehler- OB aufgerufen wird.

Die Idee ist auch gut, kann halt verdammt lang sein, je nachdem wie groß das Programm ist.
Vorteil, du musst die SPS nicht stoppen.

Wenn in dem FC/FB der den Fehler verursacht noch weitere Bausteine aufgerufen werden, musst du das Spiel dort wiederholen.
PS: X.X sind Platzhalter für ein freies Merkerbit. (Muss man immer dazusagen, man weiß ja nie wer das mal umsetzt) ;)
 
Zuletzt bearbeitet:
Hallo zusammen,

vielen Dank erst einmal für die vielen Antworten.
Ich kann die CPU leider nicht während des laufenden Betriebes in Stopp gehen lassen. Wir haben einen 24h Betrieb. Ich müsste dafür am Sonntag herkommen.
Der Fehler hat sich mittlerweile erledigt. Ich habe in einem FB einen Multiinstanz-FB aufgerufen (ich habe im FB einen FB aufgerufen). Ich musste einfach den FB mit dem dazugehörigen DB im OB1 nochmal neu initialisieren.

Was mich aber immer noch brennend interessiert ist, ob ich den Quellcode, den ich oben geschrieben, auch so funktionieren würde.

Gruß Ralf
 
Was mich aber immer noch brennend interessiert ist, ob ich den Quellcode, den ich oben geschrieben, auch so funktionieren würde.
Die Frage könntest Du Dir selber beantworten: Laut Deinem Screenshot im Beitrag #1 hast Du eine CPU 315-2PN/DP.
Im Beitrag #3 hat JoopB geschrieben, daß Dein Code in einer S7-300 nicht funktioniert und hat Dir empfohlen, die Hilfe zum OB121 zu lesen. In der Bausteinhilfe zum OB121 steht ungefähr:
Hilfe zu OB121 schrieb:
Lokaldaten des Programmierfehler-OB

OB121_BLK_TYPE - bei S7-300 wird hier kein gültiger Wert eingetragen

OB121_BLK_NUM - bei S7-300 wird hier kein gültiger Wert eingetragen

Harald
 
Zurück
Oben