Vernünftig Programmieren / aber wie?

sascha-nrw

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

habe folgende Problemstellung:
Besitze 1x S7-300 und 7x ET200S über Ethernet miteinander verbunden.

Nun möchte ich einen digitalen Ausgang z.B. A1.0 setzen, sobald die CPU in den "STOP" Zustand geht. Außerdem soll dieser Ausgang gesezt werden, sobal eine ET200S nicht mehr erreichbar ist (Stationsausfall).

Nun meine Frage an Euch:
"Wie kann ich dies sinnvoll programmieren?"

Wäre für jeden TIPP dankbar!
 
Hallo.

Es gibt die OB80 - OB8x.

Wenn du diese OB´s in deinem Programm hast, kannst du den CPU Stop verhindern und statdessen einen Ausgang oder ein kleines Programm starten. Um herauszufinden, welcher OB für was ist gibt es bei Siemens die "F1" Taste, wo due die Ob´s erklärt bekommst.

Andy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einen Ausgang setzen bei Stop geht nicht. Für solche fälle verwenden wir (wir nennen es Pilot) einen ausgang mit dem du ein Relais schaltest. Geht die CPU jetzt auf Stop, wird der Ausgang abgeschaltet und das Relais fällt ab >> Dann meldung
 
genau, verwende NC an einem Relais und versorge es mit den 24 V der CPU Versorgung. Schleife einen gesetzten Ausgang durch das Relais zu einem Meldegerät. Das ist auf jeden Fall sicherer.
 
Zuletzt bearbeitet:
Wie wärs damit:

Bei CPU Stop Schirmstrom von Bus messen, parasitäre Leiter-Erde-Kapazitäten überwachen, damit Relais schalten, was den Bus unterbricht, somit schaltet ein Relais ab welches auf einer Feldbusinsel angeschlossen ist, was ein Relais ausschaltet welches die Zuleitung zum Schaltschrank unterbrich. Damit sieht mann nicht sofort dass die CPU auf stop gegangen ist, aber falls du das Gebäudelicht via Schaltschrank speist, dann sieht mans.


http://www.spsforum.de/showthread.php?t=20847




anis
 
Ok. Hast also schon rausgefunden wie man alle Beiträge eines Benutzers ansieht. Weiste, eigentlich haste recht, die Welt hat nicht auf meine Antwort gewartet, soweit ist deine Kritik berechtigt. Nun, wenn du schon meinen Beitrag postest, dann sag mir Bitte eine technisch einwandfreie Antwort auf meine damalige Frage. Wenn ich nichts von Dir höre, betrachte ich deinen (ebenfalls total unnötigen) Beitrag als gegenstandslos. Meiner hat zumindest zum Thread gepasst.

(Und immer schön aufregen. kurbelt den Kreislauf an)

Gruss Anis
 
Hallo Leute,

ich habe mir den OB86 mal genauer angesehen.
Für mich waäre u.a. interessant einen Ausgang zu setzen, sobal eine Profinet IO-Station ausfällt.

Code:
B#16#39/38 B#16#CB PROFINET IO-Stationsausfall/Stationswiederkehr· 
OB86_RESERVED_1: - 
B#16#C4: keine weitere Station ist gestört- 
B#16#CF: weitere Stationen sind ausgefallen/gestört·
 
OB86_MDL_ADDR: logische Basisadresse des IO-Controllers· 
 
OB86_Z23:- 
Bit 0 bis 10: Stationsnummer- 
Bit 11 bis 14: IO-System-ID- 
Bit 15: 1- Bit 16 bis 30: logische Basisadresse der Station- 
Bit 31: I/O-Kennung

Aber wie bekomme ich das nun untergebracht?
 
Bei dez. Per.-Stationen mit Profibus gibt's nen schönen Diagnosebaustein (FB 125 vom Dumens).
Gibt's nix vergleichbares für Ethernet-Verbindungen? :confused:
 
dodo der dritte....aus der sternenmitte.....bin ich der.....oh ehmm..wo waren wir?

Sorry sollte keine Provokation sein. Is mir nur gerade eingefallen:)
Ich mag das Lied.
Also nix :-x sein.


Also wenn du den ausgefallenen Teilnehmer lokalisieren willst, brauchts schon mehr. aber wenn nur ein Bit gesetzt werden soll, dann reicht ein FRB (OB). So wies aussieht kannste sogar da die Adresse lokalisieren

Code:
     B#16#39/38 B#16#CB PROFINET IO-Stationsausfall/Stationswiederkehr· 
OB86_RESERVED_1: - 
B#16#C4: keine weitere Station ist gestört- 
B#16#CF: weitere Stationen sind ausgefallen/gestört·
 
OB86_MDL_ADDR: logische Basisadresse des IO-Controllers· 
 
OB86_Z23:- 
Bit 0 bis 10: Stationsnummer- 
Bit 11 bis 14: IO-System-ID- 
Bit 15: 1- Bit 16 bis 30: logische Basisadresse der Station- 
Bit 31: I/O-Kennung


oder irre ich mich da?



Gruss Anis
 

Anhänge

  • ob86.jpg
    ob86.jpg
    129,1 KB · Aufrufe: 34
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo !

Erstmal vielen Dank für Eure Antwort.
Leider bin ich blutiger S7-Anfänger... und kenne diesen Baustein gar nicht.

Könnt ihr mir vielleicht mehr darüber erzählen?
Eventuell ein Programmbeispiel für "Stationsausfall Profninet IO" geben?

Vielen DANK!
 
Mutige Aufgabe für nen blutigen Anfänger:)

Lokale Variabeln kannste mit nem # Aufrufen

sprich
Code:
#Variabel_XY

oder gibst einfach als Operand Variabel_XY ein dann erscheint das # automatisch.
Somit hättest due die gewünschte Variabel aufgerufen.
Was du nun damit anfangen möchtest ist ja Dir überlassen. Wenns n Bit ist kannste damit was auslösen, Ists ne Adresse kannste die am Panel anzeigen, mit der Fehler ID kannste zBsp. die Reaktion definieren usw.

Wenn du allerdings nur ein Bit/Ausgang setzen möchtest wenn ein Teilnehmer ausfällt, kannste im NW1 den Ausgang "immer" setzen, der wird mechanisch nur dann gesetzt wenn der FRB(OB) aufgerufen wird




gruss anis
 
Das kann ich Dir sagen :confused::confused::confused: !!!

Wenn ich das nun einigermaßen verstanden habe, muss ich im OB86 die Veriable #Variabel_XY einfügen - mehr nicht?

Und diese im OB1 einfach aufrufen?

Mir reicht es, wenn ich damit einen Ausgang setzten kann.
Es soll jediglich die Störung mit einem aktustischen Signal (Leitstand) bekannt werden.

Puuhhhh - alles sehr verwirrend!
:TOOL:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ne sorry hab mich zu unpräzise ausgedrückt.
In diesem Falle kannst du den OB1 mal vergessen.
Der OB1 wird zyklisch abgearbeitet. Nun Haste aber nen anderen OB.
Nähmlich nach deiner Aussage den 86. Der wird separat abgearbeitet. Unabhängig vom OB1. Allerdings nur dann wenn der entsprechende Fehler auftritt. Der OB86 ist ja ein sogenannter FRB Fehlerreaktionsbaustein.
Also wird alles was du im OB86 (Oder andere FRB) Programmierst oder aufrufst nur dann bearbeitet, wenn der entsprechende Fehler auftritt. Ansonsten wird nur der OB1 bearbeitet.

Wenn du also einen Ausgang im OB86 so programmierst, dass er immer ansteht, zbsp

Code:
      O      M     10.1
      ON    M     10.1
      =      A     10.0

dann wird der Ausgang immer nur dann gesetzt, wenn der OB86 bearbeitet wird, also wie beschrieben nur dann, wenn auch der Fehler ansteht.
Und somit hast du deine Fehlersignalisierung erstellet.

Ich hoffe ich habe mich verständlich ausgedrückt. Ansonsten knallste mir nen Quelle Katalog auf den Hinterkopf und ich versuchs nochmals:)

Gruss Anis
 
Du hast nen Leitstand, aber keine Visualisierung, sondern tausend verschiedene Hupen?
Wenn eine Visualisierung vorhanden ist, würde ich den Ausfall einer ET dort einbinden.

Der OB86 wird automatisch im Fehlerfall aufgerufen! Nimm dir mal die Zeit und lies dir die Hilfe im Step7 durch (F1 drücken)
 
Hallo Schnick und Schnack!!!


Habe jetzt folgendes Programmiert:

OB86:
Code:
U    M10.1
UN  M10.1
=    M10.2

OB1:
Code:
U    M10.2
=    A3.0

War das so richtig gemeint?

Ich beobachte nun folgendes Verhalten:
Wenn eine Station ausfällt, setzt sich der Ausgang A3.0.
Allerdings bleibt dieser gesetzt, selbst wenn die Station wieder einkehrt.

Meine Anforderung:
Wenn die Sattion wieder läuft, soll der Ausgang A3.0 wieder auf "0" gehen.

Habe bestimmt nur eine Kleinigkeit übersehen.
Hast Du noch einen Tipp für mich?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie wärs wenn du einfach im OB1 den Ausgang zurücksetzt?

Der OB1 läuft ja wieder, wenn alles in Ordnung ist. Also würde das Zurücksetzen signalisieren, dass die Station wieder da ist und alles läuft wie es soll.

Oder sehe ich das falsch??
 
der ob wird bei kommenden ereignis aufgerufen.

progge eine quitttaste um den m10.2 zurückzusetzen
 
Bin auch Volkers Meinung. Entweder Quittaste oder nach einer gewissen Zeit Fehler zurücksetzen.

Wie verhält es sich wenn du statt M10.2 gleich den A3.0 im Ob86 aktivierst?

Gruss Anis
 
Zurück
Oben