Diagnosealarm im OB82 auswerten?

Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für eure Antworten und Erklärungen...

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

In etwa so?

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


Fehler kommend:

Code:
[COLOR=red]A001[/COLOR]: L     'JA  '
      T     MD    90
      [COLOR=blue]S M "Visu"[/COLOR]
      BEB

Und beim Rücksetzen einfach M "Visu" rücksetzen, oder?
 
Zuletzt bearbeitet:
A001: L 'JA '<---brauchst Du doch nicht
T MD 90 <---Das auch nicht
S M #Visu <---nimm eine globale Variable (M 100.0 / DB1.DBX0.0 )
BEB

Hier wird jetzt nur auf Fehler ausgewertet, nicht aber welcher Teilnehmer.


M #Visu ?
M "Visu" ? Schreibfehler?
Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hm, ich meinte eigentlich ob mein Merker an dieser Stelle richtig wäre... aber offensichtlich nicht.

Ich würde an der Sprungmarke -Fehler- ein Bit (Merker/Datenbausteinbit..) setzen.
Wo ist denn diese Sprungmarke?

So besser?


Code:

N200: NOP 0
S M100.0
L #OB82_EV_CLASS
L B#16#39
==I
SPB A001
SPA A002


Falls ja, an welcher Stelle müsste der Merker M100.0 rückgesetzt (gehendes Ereignis) werden?


PS:

Ja, #Visu war Schreibfehler
Sollte eigentlich "Visu" heißen!
 
Zuletzt bearbeitet:
OK

Ein Beispiel anbei mit OB86 aber im Prinzip das gleiche.

Bild 1: Bei Fehler (kommend) wird M220.0 gesetzt (DP-Fault)
Danach wird der Fehler einem Teilnehmer zugeordnet (DP3_FAULT)

Bei einem gehendes Ereignis (B#16#38) wird DP_FAULT zurückgesetzt.

DP3_FAULT wird auch zurückgesetzt, meine Störung (Bild 2) bleibt anstehen


Bild 2: DP3_FAULT setzt meine Störmeldung (Datenbausteinbit - Kommunikation VISU)

Reset Taster resetet Störmeldung


Gilt alles auch für OB82
 

Anhänge

  • f1.jpg
    f1.jpg
    83,7 KB · Aufrufe: 49
  • f2.jpg
    f2.jpg
    37,2 KB · Aufrufe: 39
Zuletzt bearbeitet:
Herzlichen Dank Verpolt für deine Mühe... aber jetzt ist es mir klar!

Ähm, bis auf eine Kleinigkeit:

Im Grunde könnte man doch auch schreiben

Code:
L #OB86_EV_Class
L B#16#39
==I
S "DP_FAULT"
 
[COLOR=red]L #OB86_EV_Class[/COLOR]
L B#16#38
==I
R "DP_FAULT"
 
usw.


Ohne den zweiten Ladebefehl L #OB86_EV_Class und ohne den Befehl TAK würde der Inhalt von Akku2 (B#16#39) und B#16#38 verglichen (==I) werden, richtig?

Durch den Befehl TAK (Tausche Akku1 mit Akku2) wird aber im Grunde wieder die rote Ladeanweisung verwendet, oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
L #OB86_EV_Class   //#OB86_EV_Class in Akku1 laden
L B#16#39          //Inhalt von Akku1 nach Akku 2 kopieren und 39 in Akku1 laden
==I
S "DP_FAULT"
 
[COLOR=red]TAK                //Inhalt von Akku1 und 2 miteinander vertauschen = ...[/COLOR]
[COLOR=#ff0000]                    #OB86_EV_Class ist jetzt in Akku 1 und 39 in Akku 2[/COLOR]
[COLOR=#000000]L B#16#38          //Inhalt von Akku1 nach Akku 2 kopieren und 38 in Akku1 laden[/COLOR]
[COLOR=#000000]==I[/COLOR]
[COLOR=#000000]R "DP_FAULT"[/COLOR]

Klar?
 
Wenn ich eine Variable mehrfach auf verschiedene Werte vergleichen will, dann benutze ich nicht die Operation TAK
sondern POP. Da wird der Sinn der Operation deutlicher sichtbar.
Code:
L #OB86_EV_Class   //#OB86_EV_Class in Akku1 laden
L B#16#39          //#OB86_EV_Class von Akku1 nach Akku2 und 39 in Akku1 laden
==I
S "DP_FAULT"
 
[COLOR=red]POP                //#OB86_EV_Class von Akku2 zurück in Akku1[/COLOR]
L B#16#38
==I
R "DP_FAULT"
Gruß
Harald
 
Zurück
Oben