# Fehlermeldung OP73 von SPS wuittieren



## manas (24 März 2010)

Hallo Forumexperten, 
versuche in WinCC 2005 eine Fehlermeldung OP73 durch die SPS zu quittiren. 
Allerdings erscheint eine Fehlermeldung bei der Eingabe der Quittiervariablen. Hab Versucht die als Bit, Byte, Word, Int zu deklarieren. 

Hat jemand ne Idee?
Danke 
Gruß
manas


----------



## smartie (24 März 2010)

Soweit ich mich erinnere muss das Bit für die Quittierung im gleichen Wort wie die zu quittierende Störmeldung liegen.

Also Wenn Bit 0 aus deinem Wort "DB_Stoermeldungen_1_16" die Störung Nummer 1 setzt, dann müsste 
zum Beispiel das Bit 8 aus dem Wort "DB_Stoermeldungen_1_16" als Quittiervariable dienen.

Dazu müsstest du bei "Quittiervariable Schreiben" das Wort "DB_Stoermeldungen_1_16" eingeben und Bit 8 auswählen.

So haben wir das beim OP77A immer gemacht und das ist der einzige Weg, den ich kenne.

Gruß smartie


----------



## manas (24 März 2010)

*Fehler HMI*

Hallo Smartie, 
danke für dein Feedback. 
Dumerweise hab ich alle 16 Bit der Triggerwariablen (INT) mit Fehlermeldungen belegt. Deswegen kontte das auch nicht funktioniéren.

Gruß
manas


----------



## PN/DP (24 März 2010)

Wie kann im Voraus die Bitnummer für die "Trigger-Variable" und das Bit "Quittiervariable Schreiben" berechnet/ermittelt werden?

Gruß
Harald


----------



## PN/DP (24 März 2010)

Normalerweise sind die Meldevariable und die Quittiervariable vom Typ ARRAY OF WORD

Gruß
Harald


----------



## manas (24 März 2010)

*Fehlermeldungen von der SPS quittieren*

Die Fehlermeldungen sind bereits als Bitmeldungen projektiert. Gibt es keine andere Möglichkeit eine Gruppe von Bitmeldingen von der SPS zu quittieren? 

Danke
Gruß
manas


----------



## Paule (24 März 2010)

smartie schrieb:


> Also Wenn Bit 0 aus deinem Wort "DB_Stoermeldungen_1_16" die Störung Nummer 1 setzt, dann müsste
> zum Beispiel das Bit 8 aus dem Wort "DB_Stoermeldungen_1_16" als Quittiervariable dienen.
> 
> Dazu müsstest du bei "Quittiervariable Schreiben" das Wort "DB_Stoermeldungen_1_16" eingeben und Bit 8 auswählen.
> ...


Also bei mir ist das nicht so! 
Störungsbit High = Störung erscheint
Störungsbit Low = Störung ist weg
Ich habe keine Quittiervariable.
Frag mich im Moment aber nicht was ich da eingestellt habe, der Teil wird immer kopiert.


----------



## Ralle (24 März 2010)

Paule schrieb:


> Also bei mir ist das nicht so!
> Störungsbit High = Störung erscheint
> Störungsbit Low = Störung ist weg
> Ich habe keine Quittiervariable.
> Frag mich im Moment aber nicht was ich da eingestellt habe, der Teil wird immer kopiert.



Vielleicht sind das bei dir ja nur Betriebsmeldungen.


----------



## Paule (24 März 2010)

Ralle schrieb:


> Vielleicht sind das bei dir ja nur Betriebsmeldungen.


Ne ne, schon richtige Störmeldungen. Ich habe allerdings kein Meldeindikator, nur Störmeldeseite.
Betriebsmeldungen habe ich extra.

Schau hier wurde noch mal ein Thread mit fast demselben Thema gestartet, und der Jan macht da auch so.

http://sps-forum.de/showthread.php?t=34708   Post Nr.6

Ich muss morgen echt mal schauen wie ich das immer mache.


----------



## PN/DP (25 März 2010)

@manas
Mich würde mal interessieren, *warum Du die Meldungen von der SPS quittieren lassen willst*.
Sind das eigentlich nur Betriebsmeldungen, die Du nach einer in der SPS programmierten Zeit oder 
nach einer festen Zeit von ein paar Sekunden wieder "gehen" lassen willst? 

Oder erzeugst Du Meldungen nur dafür, daß sie im Meldepuffer geloggt werden und ist es herzlich 
egal, ob der Bediener die Meldungen gesehen hat?
Dann deklariere diese Meldungen als Meldeklasse "Warnungen" oder erstelle eine eigene Meldeklasse
"Betriebsmeldung" (oder wie Du die auch nennen willst) mit der Einstellung "Quittierung: Aus".

Ich verwende "Quittieren durch die SPS" (Quittiervariable Schreiben) nur, wenn ich mehrere Panels 
an der SPS habe und bei der Bediener-Quittierung an irgendeinem Panel die Meldung auch für die 
anderen Panels quittieren will.

Oder willst Du eigentlich der SPS mitteilen, wann ein Bediener die Meldung gesehen und quittiert 
hat, damit die SPS die Meldung wieder deaktivieren kann? 
In dem Fall mußt Du die "Quittiervariable Lesen" verwenden. 
Dann setzt Dir das Panel das entsprechende Quittierbit, wenn der Bediener die Meldung quittiert.

Ansonsten gibt es in WCCflex noch die Möglichkeit, bei jeder Meldung eine Funktion beim Ereignis 
"Quittieren" anzubinden. Da kannst Du z.B. bei allen Meldungen das selbe "Sammelquittierbit" 
setzen. Du mußt diese Aktion dann allerdings an jede einzelne Meldung projektieren.

Gruß
Harald


----------



## Paule (25 März 2010)

Also ich habe definitive keine Quittier-Variable.
Ich habe eine Quittier-Taste im Panel die ich direkt der SPS übergebe. 
Die SPS entscheidet nun ob die Störung quittiert werden kann oder noch nicht.
Wenn ja da wird einfach das Störungsbit weggenommen und dadurch rutscht die Störung im Panel automatisch ins Störmeldearchiv.
Anbei ein paar Bilder die meine Einstellungen zeigen. Das Triggerereignis ist auch das Störmeldebit.


----------



## manas (25 März 2010)

*Fehlermeldungen*

Hallo PN/DP! Danke für Dein Feedback.
Für den Bediener ist es zu VIEL Anstrengung die Fehlermeldungen am OP und danach noch mit einer Taste am Bedienpult zu quittieren. Deswegen müssen sie mit der Taste "Fehler quittieren" am Hauptbedienpult quittieret werden. Mit dieser Taste werden die Meldungen auch in der SPS gleichzeitig zurückgesetzt. 
Also, ich lege am besten ein UDT 16 Bit. Dafon 8 Bit für Fehlermeldungen und 8 Bit für entsprechende Quittiervariablen


----------



## manas (25 März 2010)

*Quittieren*

Schön wäre es! Aber OP73 hat kein Meldearchiv.
Gruß
manas


----------



## manas (25 März 2010)

*Quittieren*

Das müssen schon Fehlermeldungen sein, die explizit durch Betätigund einer Taste am BP quittiert werden müssen. 
Bei Quittierung in WCC durch "Quittervariable schreiben" muss das Quittierbit und das Fehlermeldebit in einer Variablen sein (Word, DWord). Eine größere Struktur kann in WinCC als Variable nicht deklariert werden. 
Hier aber eine Lösung von Siemens. 
Anscheinend ist die Variable doch größer als DWord. (Bit 32, 33....)
Wie haben die das hingekriegt?
Gruß
manas


----------



## Paule (25 März 2010)

manas schrieb:


> Anscheinend ist die Variable doch größer als DWord. (Bit 32, 33....)
> Wie haben die das hingekriegt?


Als Array of Word!

PS: Meine Variante funktioniert auch bei einem OP73 ohne Meldearchiv


----------



## manas (25 März 2010)

*Quittieren*

Danke Paule, 
aber wie verbinde ich dieses ARRAY mit einer WinCC-Variablen? 
Die zulässigen Datentypen in WinCC siehe Abbildung
Grúß
manas


----------



## Paule (25 März 2010)

manas schrieb:


> Danke Paule,
> aber wie verbinde ich dieses ARRAY mit einer WinCC-Variablen?
> Die zulässigen Datentypen in WinCC siehe Abbildung
> Grúß
> manas


Ich mache das folgendermaßen:
In der Steuerung möchte ich ja die einzelnen Bits haben.
In WinCCFlex möchte ich aber ein Array of Word haben.
Also kopiere ich am Ende meiner Störungszuweisung den ganzen Bereich auf das Array:

```
[COLOR=black][FONT=Verdana]Call SFC20[/FONT][/COLOR]
[COLOR=black][FONT=Verdana]       SRCBLK := Störungen (DB mit den einzelnen Bits) [/FONT][/COLOR]
[COLOR=black][FONT=Verdana]       RET_VAL:= RET_V[/FONT][/COLOR]
[COLOR=black][FONT=Verdana]       DSTBLK := Störungen_OP (Array of Word)[/FONT][/COLOR]
```
In Deinem Fall wäre der Störbereich P#Mx.x Byte x


----------



## manas (26 März 2010)

*Quittieren*

Hallo PN /DP, 
danke für Dein Feedback und den Link 
http://support.automation.siemens.c...lib.csinfo&lang=de&objid=24638486&caller=view. 

Wenn ich das richtig verstehe, ist die Variable "Meldungen.Message" vom Typ ARRAY of WORD. Dieses ARRAY ist in einem DB in der SPS deklariert. Anschenend ist das ARRAY 8 Byte groß (4 Byte Meldungen und entsprechend 4 Byte Quttierbits). 
Wie erfolgt denn die Einbindung von diesem ARRAY in WinCC? Nach Siemens Angaben muss das Meldebit und das Quittierbit in EINER Variablen liegen. 

So ein Problem!!! Da wird zu diesem Thema so oft diskutiert! Hätte man das einfach machen können: Meldegruppe anlegen, eine Quittiervariable der Gruppe zuordnen. Fertig. Geht leider nicht. Zumindest bei OP73 ist mir nicht bekannt

Gruß
manas


----------



## manas (26 März 2010)

*Quiitieren*

Hallo Paule. Und wie Greifst Du in WinCC auf die einzelnen Bits von "Störungen_OP" zu?
Danke 
Gruß
manas



Paule schrieb:


> Ich mache das folgendermaßen:
> In der Steuerung möchte ich ja die einzelnen Bits haben.
> In WinCCFlex möchte ich aber ein Array of Word haben.
> Also kopiere ich am Ende meiner Störungszuweisung den ganzen Bereich auf das Array:
> ...


----------

