OBs in S7-300 programmieren

Syntaxfehler

Level-1
Beiträge
117
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wir haben eine neue Steuerung S7-300 bekommen. Jetzt wollte ich unteranderem noch ein paar OBs programmieren.
Kann mir jemand sagen, wie ich die Obs aufrufen muss? Einfach "Neuer Organisationsbaustein" und "OB2" auf "OB82" ändern und dann hat er gleich die Funktion des Diagnosealarms wie im Buch beschrieben?

Folgende OBs wollte ich auch programmieren...

OB80 Zeitfehler (z.b. Zykluszeit überschritten)
OB82 Diagnosealarm (z.b. Kurzschluss in einer Eingangsbaugruppe)
OB83 Ziehen/Stecken-Alarm (z.b. Ziehen einer Eingabebaugruppe)
OB84 CPU-Hardwarefehler (Fehler an Schnittstelle zum MPI-Netz)
OB86 Baugruppenträgerausfall

Hat jemand schlechte Erfahrung gemacht mit diesen OBs, wenn sie mal einsetzen?

Gruß Syny
 
Erfahrung mit OB's

Hallo Syny!
Mit den OB's haben wir in unserer Firma positive Erfahrungen gemacht, weil sie unter anderem verhindern können, dass die CPU in Stop geht.
Wenn Du einen OB80 anlegst hat er im TEMP-Bereich seiner Schnittstellendefinition ein paar Variablen drin. Diese Lokalen Variablen solltest Du einmalig innerhalb des OB80 auf einen Datenbaustein schreiben.
Der OB wird vom Betriebssystem der CPU aufgerufen, nicht vom SPS-Programm (geht teilweise mit SFC's, ebenso die Unterdrückung des OB-Aufrufs; soll aber hier nicht das Thema...)!

OB 80
Netzwerk 1
U M8.0
SPB M001
L LW 0
T DB80.DBW 0
L LW 2
T DB80.DBW 2
L LW 4
T DB80.DBW 4
L #OB80_ERROR_INFO
T DB80.OB80_ERROR_INFO
L LW 8
T DB80.DBW 8
L LW 10
T DB80.DBW 10
L LW 12
T DB80.DBW 12
L LW 14
T DB80.DBW 14
L LW 16
T DB80.DBW 16
L LW 18
T DB80.DBW 18
M001: NOP 0
SET
S M8.0

Der Merker M8.0 wird zur Generierung einer Alarmmeldung am OP/TP genutzt und an anderer Stelle zurück gesetzt.

Die Daten in dem DB kannst Du dann an einem OP/TP in eine Fehlermeldung mit einbetten, oder anderweitig versenden (CP Ethernet) . Über die Fehlernummern kannst Du hinweise darauf bekommen, wo der Programmierfehler liegt, bzw. warum der OB aufgerufen wurde. Wenn Du aus versehen eine Endlosschleife programmierst (unvorhergesehener Wert) und keinen OB80 hast, suchst Du Dich zu Tode, warum die CPU in STOP gegangen ist. Mit OB80 und auswerten der Statusinformationen geht das schon leichter.
So wie oben am Beispiel des OB80 machst Du das dann mit den anderen OB's auch. Für jeden OB einen DB ist nicht Pflicht, vereinfacht aber die wiederverwendbarkeit. Nicht jede CPU unterstützt alle OB's, merkst Du spätestens beim Transfer juckt dann aber nicht. Ein Fehler der nicht auftreten kann ist schon eine Fehlerquelle weniger ;-)
Gruß Axel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Axel,

danke schon mal für die Info... das probiere ich gleich morgen mal aus.

Nur 1 Frage bleibt mir offen. Ein Ingenieur von Siemens war bei uns mal gewesen und hat eine Anlage programmiert. Und auf deren Steuerung hat er diese OBs unteranderen auch programmiert. Nur steht in allen diesen OBs nichts drinnen, daher dachte ich, das es ein Siemens geschützer Baustein ist, den man irgendwie aufrufen muss und diesen Ablauf schon enthält!

Leider ist er nur einmalig da gewesen und kann daher nicht mehr ihn fragen... da bleibt jetzt nur Ihr Alle ;)))

Ich will die Fehler erstmal nur aus dem Puffer/interner Schreiber auslesen, falls mal so ein Baustein aktiviert wird. Was muß ich daher im DB schreiben? Klingt doof die Frage, aber lieber doof gefragt als ne Dumme Antwort *lach*

Gruß Syny
 
grundsätzlich gilt.

tritt fehler auf, wird vom system der entsprechende ob aufgerufen. ist dieser ob nicht vorhanden geht die cpu auf stop
ist der entsprechende ob vorhanden aber dort ist nichts drin passiert gar nichts. der fehler wird also ignoriert.
die auswertung des fehlers obligt dem programmierer.

für die ob82/86 empfiehlt sich der fc125/fb125 (aus dem dp_diag)
 
Die OB's werden in dem Sinn nicht programmiert,
die OB's werden vom Betriebssystem aufgrund diverser Ereignisse aufgerufen.

Der Grundweg ist der, es wird ein OB vom Betriebssystem angefordert,
ist dieser OB vorhanden läuft die CPU weiter, wenn nicht, dann geht sie auf Stop.
Wenn ein leerer OB ist, dann passiert bei dessen Aufruf halt nichts, außer das die CPU weiterläuft.

Es gibt allerdings auch noch andere OB's, die in gewissen Zeitabständen aufgerufen werden,
zu bestimmten Uhrzeiten ...

Hierzu einfach mal die Standard-Library öffnen, die OB's mit F1 anschauen.

Wichtig: nicht jede CPU kann jeden OB ...

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hmm bei dem Thema OBs hätt ich auch noch ne Frage.

Wenn ich mehre DP-Stationen an einer S7 habe und 1 DP fällt weg wird der OB86 ja aufgerufen worin im einem Word die Adresse steht die weggefallen ist.

Frage ist nu:
Was passiert wenn eine 2te Station ausfällt. Überschreibt er mir das Word mit der neuen Adresse?
Was passiert wenn 2 Stationen gleichzeitig aus sind, weil einer quasi das Kabel durchgeschnitten hat?

Ich hätts gern ausprobiert doch dummerweise habe ich grade ne S7 und mehere DP Stationen nicht zu Hand.

gruß

Ray
 
der ob wird jedes mal angesprungen, wenn das system einen fehler bei der kommu mit dem slave hat. also steht auch jedes mal der entsprechende wert in dem wort. bei 2 stationen also quasi im wechsel.

wie oben erwähnt nimmst du dafür am besten den FB/FC125. der trägt alle fehlerhaften slave in einen db ein.

siehe dazu auch dp_diag_db.xls auf meiner hp
 
Zuletzt bearbeitet:
Zurück
Oben