Ich finde das System nicht sonderlich gut konstriert.
Einmal müssen die Bits für "Quittiervariable Lesen" in der gleichen Meldevariable wie die Triggervariable liegen. Ich sehe keinen Grund warum dies so sein muss. Das hat nur Nachteile, vor allem wenn man seine Meldungsbausteine objekt-orientiert (z.B. UDT für Antriebe, Messungen etc.) angelegt hat.
Ansonsten ist die Funktion "Quittiervariable Lesen" von der Funktion noch logisch zu verstehen. Steht eine Meldung an und das entsprechende Bit in der "Quittiervariable lesen" wird gesetzt, so wird die Meldung am Panel quittiert.
Ich nutze das dazu, um z.B. mit einem Quittiertaster am Schaltschrank alle Meldungen am Panel zu quittieren.
Die Merkwürdigkeit in Person ist aber die Funktion "Quittiervariable schreiben".
Bei einem Projekt mit mehreren identischen Panels die an einer Anlage sehr weitläufig verteilt waren hatte ich mal so gedacht, dass wenn jemand an einem Panel eine Meldung im Meldefenster quittiert, diese Meldung auch an allen anderen Panels quittiert werden soll. Leider funktioniert das nicht wenn man alle Panels identisch projektiert hat, also überall die "Quittiervariable schreiben" identisch ist. Das liegt daran, dass wenn eine neue Meldung auftritt, jedes Panel sofort einen Schreibauftrag in die "Quittiervariable schreiben" absetzt, und zwar an den kompletten Bereich.
Nun merkt sich das Panel aber intern, ob eine Meldung schonmal quittiert wurde, und setzt dann in die Schreibvariable die entsprechenden Bitkombinationen. Ist ein Panel mal während eine Störung auftritt zufällig nicht online, so Gerät das ganze System außer tritt, weil die Panels nicht mehr synchron in ihrem Quittierungszustand sind (hört sich konfus an, ist es auch). Außerdem setzt das Panel auch die Bits in der "Quittiervariable schreiben", wenn die Meldung durch die "Quittiervariable lesen" quittiert wurde.
Hatte damals auch bei Siemens eine Support Anfrage wegen dieses Problem. Als Antwort kam, ich soll in den SPSen den Verbindungszustand zu den Panels auswerten und dann damit hantieren. Nur hatte ich da 14 SPS mit 8 Panels, keine Ahnung wie das laufen soll.
Ich habs dann verworfen, und am Panel einen zusätzlichen Button angebracht mit dem alle anderen Panels quittiert werden können.
Wenn ich WinCC flex Entwickler wäre hätte ich es doch so gemacht:
- Eine Meldung wird am Panel quittiert -> Es wird das (und nur das) Bit in der SPS gesetzt welches bei "Quittiervariable schreiben" eingestellt wurde
- Im SPS Programm kann ich das Quittierbit auswerten und dann im Programm das damit machen was ich will, z.B. die Bits in "Quittiervariable lesen" setzen, was die anderen Panels quittiert. Danach setze ich alle Bits vom Programm aus zurück.
Meine Empfehlung wäre:
- "Quittiervariable lesen" -> ja (mit den entsprechenden Nachteilen bezüglich Bereich, etvl. Umstellung im Programm notwendig)
- "Quittiervariable schreiben" -> nope