Diagnosealarm im OB82 auswerten?

anne

Level-1
Beiträge
347
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Ihr,

ich verstehe nicht so ganz, was bei dem SIWAREX-Modul ausgewertet werden soll - könnt ihr mir da etwas helfen? Das Beispiel ist von Siemens!

OB82/NW1:

Code:
// *** Diagnosealarm von Baugruppe mit Adresse 298 ? ***
      L     #OB82_MDL_ADDR              // Baugruppenadresse der Baugruppe, die Alarm auslöst
      L     298                         // SIWAREX U mit Anfangsadresse 298
      ==I                               // ja,
      SPB   N200                        // dann Alarm auswerten
      BEB


OB82/NW2:

Code:
N200: NOP   0
      L     #OB82_EV_CLASS              // prüfen, ob Fehler "kommend"
      L     B#16#39                     // "39" heißt Fehler "kommend"
      ==I   
      SPB   A001                        // Fehler "kommend" gemeldet
      SPA   A002                        // Fehler "gehend" gemeldet


OB82/NW3:

Code:
A001: L     'JA '
      T     MD    90
      BEB


OB82/NW4:

Code:
A002: L     'NEIN'
      T     MD    90


1) NW1 ist klaro!

2) In NW2 wird offensichtlich geprüft, ob der Fehler kommend oder gehend ist - wofür das?

3) In NW3/4 wird 'JA' bzw. 'NEIN' in ein Merkerdoppelwort geladen - so etwas hab' ich noch nie gesehen... ist das siemensspezifisch und was steht denn dann in dem MD - dort kann doch nicht JA oder NEIN stehen? :confused:

Lieben Dank, bin hier grad völlig überfordert...
 
Hallo,


L B#16#39 // Kommendes Ereignis

L B#16#38 // Gehendes Ereignis

Mit einem kommenden Ereigniss darauf reagieren.
Mit einem gehenden Ereigniss zu Überprüfung oder ähnliches auswerten

zB.: Kommendes Ereignis --Setze Fehler
nach Quittierung der Störung und....
Prüfen auf gehendes Ereignis-->Reset Fehler

`ja` soll ein CHAR sein (Text)

MD 90 --Deklaration (4 byte = 4 char

also

MB90 = J oder N
MB91 = A oder E
MB92 = oder I
MB93 = oder N


Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank schon mal Verpolt!

Hm, also wird dann im Grunde das MD90 ausgewertet - wenn also z.B. 'JA' im MD steht, liegt ein kommendes Ereignis vor.

Ein kommendes Ereignis könnte ja z.B. ein Fehler vom SIWAREX-Modul sein; heißt das dann, dass sich bei einem Fehle automatisch dieses 'JA' in das MD90 einträgt?
 
Gut, vielen Dank... dann bin ich schon ein Stück weiter... ;)

Also angenommen, es tritt ein Fehler am SIWAREX-Modul auf und es wird daraufhin automatisch dieses 'JA' in das MD eingetragen:

- reagiert dann der OB82 und unterbricht den Zyklus oder

- muss ich selbst das MD90 auswerten?

Sorry für die doofen Fragen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der OB82 Aufruf ist schon eine Unterbrechung des Zyklus.

Wenn der nicht da ist , geht CPU in Stop.

Was dort verarbeitet wird, mußt Du entscheiden.

Anbei ein Beispiel mit OB86 :

Diese Störmerker verwende ich im Programm für Störmeldungen--Ausfunktionen...
 

Anhänge

  • dp.jpg
    dp.jpg
    211,7 KB · Aufrufe: 176
Ja ok, aber in dem Siemens-Beispiel müsste im OB82 im Grunde nichts mehr hinzugefügt werden, damit der Zyklus bei einem Fehler unterbrochen wird - d.h. die Unterbrechung würde auch mit dem momentanen Code (NW1-4) stattfinden?

Habe mal dieses 'JA' in ein MD geladen:

Dann steht im MD (Anzeigeformat = Zeichen) unter Statuswert DW#16#00004A41. Stimmt das echt?
 
Zuletzt bearbeitet:
Ja ok, aber in dem Siemens-Beispiel müsste im OB82 im Grunde nichts mehr hinzugefügt werden, damit der Zyklus bei einem Fehler unterbrochen wird - d.h. die Unterbrechung würde auch mit dem momentanen Code (NW1-4) stattfinden?

Ja, richtig

Dann steht im MD (Anzeigeformat = Zeichen) unter Statuswert DW#16#00004A41. Stimmt das echt?

in deiner Vat nicht MD eintragen, sondern auflösen

MB90
MB91
MB92
MB93

Anzeigeformat = "Zeichen"/"char" definieren


Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der OB82 Aufruf ist schon eine Unterbrechung des Zyklus.

Wenn der nicht da ist , geht CPU in Stop.

Grüße

Aber der ist doch nur da, wenn ich ihn auch explizit in den Bausteinordner lade...
Wenn ich den OB82 nicht benötige, dann muss er doch auch nicht in die SPS geladen werden und dann geht die doch auch nicht in Stop.

Oder verstehe ich da jetzt was falsch?

Lieben Dank!
 
Aber der ist doch nur da, wenn ich ihn auch explizit in den Bausteinordner lade...
Wenn ich den OB82 nicht benötige, dann muss er doch auch nicht in die SPS geladen werden und dann geht die doch auch nicht in Stop.


Wenn er NICHT da ist, geht die CPU in Stop.

Wenn er da ist, Programm rein, auswerten, reagieren-->CPU (Anlage) läuft weiter

Beschreibung

Wenn eine diagnosefähige Baugruppe, bei der Sie den Diagnosealarm freigegeben haben, eine Änderung ihres Diagnosezustands erkennt, stellt sie eine Diagnosealarmanforderung an die CPU:

· Es liegt eine Störung vor oder eine Komponente muss gewartet werden oder beides (kommendes Ereignis).

· Es liegt keine Störung mehr vor, und keine Komponente muss mehr gewartet werden (gehendes Ereignis).

Daraufhin ruft das Betriebssystem den OB 82 auf.

Der OB 82 enthält in seinen lokalen Variablen die logische Basisadresse sowie eine vier Byte lange Diagnoseinformation der fehlerhaften Baugruppe (siehe folgende Tabelle).

Haben Sie den OB 82 nicht programmiert, geht die CPU in den Betriebszustand STOP.

Sie können den Diagnosealarm-OB mit Hilfe der SFCs 39 bis 42 sperren bzw. verzögern und wieder freigeben.


Grüße und F1 auf OB82
 
Ja ok,

dann muss aber explizit der Diagnosealarm in der Baugruppe freigegeben werden... sonst muss der entsprechende OB nicht in die SPS geladen werden, oder?

Und es müsste ja auch schon reichen, dass der entsprechende OB vorhanden ist, auch wenn er keinen Programmcode besitzt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
dann muss aber explizit der Diagnosealarm in der Baugruppe freigegeben werden... sonst muss der entsprechende OB nicht in die SPS geladen werden, oder?

Normal geht CPU in Stop, wenn der entsprechende OB nicht geladen ist.

nd es müsste ja auch schon reichen, dass der entsprechende OB vorhanden ist, auch wenn er keinen Programmcode besitzt?

ja *ACK*
 
Beschreibung

Wenn eine diagnosefähige Baugruppe, bei der Sie den Diagnosealarm freigegeben haben, eine Änderung ihres Diagnosezustands erkennt, stellt sie eine Diagnosealarmanforderung an die CPU:

· Es liegt eine Störung vor oder eine Komponente muss gewartet werden oder beides (kommendes Ereignis).

· Es liegt keine Störung mehr vor, und keine Komponente muss mehr gewartet werden (gehendes Ereignis).

Daraufhin ruft das Betriebssystem den OB 82 auf.

Der OB 82 enthält in seinen lokalen Variablen die logische Basisadresse sowie eine vier Byte lange Diagnoseinformation der fehlerhaften Baugruppe (siehe folgende Tabelle).

Haben Sie den OB 82 nicht programmiert, geht die CPU in den Betriebszustand STOP.

Sie können den Diagnosealarm-OB mit Hilfe der SFCs 39 bis 42 sperren bzw. verzögern und wieder freigeben.

Hab ich noch nie gesperrt. Möchte immer eine Diagnose haben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wie wäre es denn eigentlich, wenn ich zwei getrennte SIWAREX-Module einsetze?

Den OB82 brauche ich doch trotzdem nur einmal. Kann dann das NW1-4 im gleichen OB82 einfach noch einmal programmiert werden; nur halt beim zweiten Mal mit einem anderen Merkerdoppelwort, oder wie macht man das dann?

Vielen Dank.
 
Das ganze auf eine andere Anfangsadresse abfragen

Code:
// *** Diagnosealarm von Baugruppe mit Adresse 298 ? ***
      L     #OB82_MDL_ADDR              // Baugruppenadresse der Baugruppe, die Alarm auslöst
      L     298                         // SIWAREX U mit Anfangsadresse 298
      ==I                               // ja,
      SPB  N200                  // dann Alarm auswerten
      BEB

und jetzt als Bspl.: 256 (Anfangsadresse)

Code:
// *** Diagnosealarm von Baugruppe mit Adresse[B][I][U] 256 [/U][/I][/B]? ***
      L     #OB82_MDL_ADDR              // Baugruppenadresse der Baugruppe, die Alarm auslöst
      L    [B][I][U] 256[/U][/I][/B]                        // SIWAREX U mit [U][I][B]Anfangsadresse 256[/B][/I][/U]
      ==I                               // ja,
      SPB   [U][I][B]N202[/B][/I][/U]                        // dann Alarm auswerten
      BEB

jetzt Sprungmarke N202 definieren

Code:
N202: L ´ok´
T MD94

das gleiche mit den "Nein" Sprungmarken.

Grüße
 
Ok Verpolt, danke für deine Ausführungen.


Nun hätte ich noch zwei Fragen dazu:

1) Kommt nun von einer der beiden SIWAREX-Baugruppen ein Fehler, so würde bei der angegebenen Programmierung der OB82 nur den Zyklus unterbrechen - aber weiter würde nichts passieren; sehe ich das richtig?

2) Wenn ich nun bei einem Fehler der Wiegebaugruppe einen Alarm in der Visualisierung haben möchte, muss ich dann das Merkerdoppelwort in der Visualisierung heranziehen?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, könnte mir evtl. noch jemand meine zwei Fragen beantworten?

Nun hätte ich noch zwei Fragen dazu:

1) Kommt nun von einer der beiden SIWAREX-Baugruppen ein Fehler, so würde bei der angegebenen Programmierung der OB82 nur den Zyklus unterbrechen - aber weiter würde nichts passieren; sehe ich das richtig?

2) Wenn ich nun bei einem Fehler der Wiegebaugruppe einen Alarm in der Visualisierung haben möchte, muss ich dann das Merkerdoppelwort in der Visualisierung heranziehen?

Danke für die Hilfe!
 
Hallo again,

Zitat von petzi

Nun hätte ich noch zwei Fragen dazu:

1) Kommt nun von einer der beiden SIWAREX-Baugruppen ein Fehler, so würde bei der angegebenen Programmierung der OB82 nur den Zyklus unterbrechen - aber weiter würde nichts passieren; sehe ich das richtig?

2) Wenn ich nun bei einem Fehler der Wiegebaugruppe einen Alarm in der Visualisierung haben möchte, muss ich dann das Merkerdoppelwort in der Visualisierung heranziehen?

1. Ja, passiert nix. Wenn Du nix programmierts. Leerer OB82 verhindert CPU-Stop. (im Beispiel passiert auch nix-nur Auswertung der Teilnehmer und Ja/nein Antwort)

2. Ich würde an der Sprungmarke -Fehler- ein Bit (Merker/Datenbausteinbit..) setzen. Dieses an die Visu schicken. (Ja/Nein Doppelwort ist unnötig)

Rücksetzen wenn quittiert und "gehendes Ereigniss"


LG
 
es ist so das bei einen Fehlerereignis das den OB82 aufruft, dieser dann
einmal durchlaufen wird und dann geht es mit den zyklischen Programm
weiter ("OB1").
Am besten machst du es so das du deinen Fehler im entprechenden OB
auswertest, in diesen fall OB82. Dort ist es dann von vorteil das du einfach
nur einen Merker oder Datenbit setzt für den endsprechenden fehler und dieses
dann im zyklischen Programm weiterverarbeitest.
Das könnte z.b. sein eine Störmeldung ausgeben und entsprechend
reagieren wenn eine baugruppe ausgefallen ist. D.h. wenn die Wage
nicht mehr arbeitet, den Produktionspozess an dieser stelle anhalten.
 
Zurück
Oben