Beitragstyp: FAQ, Beitrags-ID: 5668269, Beitragsdatum: 12.04.2007
(0)
Bewerten

Wie wird die Eigenschaft "MsgFilterSQL" des WinCC Alarm Controls verwendet, um mit einem SQL-Statement die anzuzeigenden Meldungen zu filtern?

  • Beitrag
  • Betrifft Produkt(e)

Anleitung:
Dieser Beitrag zeigt anhand eines Beispiels, wie die Eigenschaft "MsgFilterSQL" des WinCC Alarm Controls dynamisiert wird, um folgenden Meldungsfilter an einem WinCC Alarm Control einzustellen. Mit Hilfe eines Meldungsfilters sollen nur diejenigen Meldungen angezeigt werden, die:

  • den Meldeklassen "Klasse 1" ("Alarm"), "Klasse 2" ("Warnung") oder "Klasse 4" ("AS Leittechnik-Meldungen") zugeordnet sind.
  • im Anwendertextblock "tb1" ("Herkunft") die Zeichenkette "TI4711" enthalten.
  • im Anwendertextblock "tb2" ("Bereich") genau die Zeichenkette "area1" oder "area2" enthalten.
  • nicht ausgeblendet sind. (Die Möglichkeit, Alarme auszublenden, steht ab WinCC V6.2 zur Verfügung.)

Das im folgenden Bild dargestellte Skript belegt die Eigenschaft "MsgFilterSQL" des WinCC Alarm Controls mit einer "SQL-where-Klausel" und einem zusätzlichen Flag, sodass nur die gewünschten Meldungen angezeigt werden.


Bild 01

Allgemeine Informationen finden Sie in der WinCC Online-Hilfe unter "SQL-Statements zur Filterung von Meldungen im WinCC Alarm Control" (V6.0) bzw. im WinCC Information System unter "Arbeiten mit WinCC > Aufbau eines Meldesystems > Darstellung von Meldungen zur Runtime > SQL-Statements zur Filterung von Meldungen im Alarm Control" (ab V6.2).

Die folgende Tabelle beschreibt die Bestandteile des verwendeten SQL-Statements:
 

Nr. Beschreibung
1 "#VisibleOnly\\"
Ab WinCC V6.2
ist es möglich Meldungen auszublenden. Um nur die ausgeblendeten bzw. nur die eingeblendeten Meldungen anzuzeigen, stehen die beiden Steuerzeichenketten "#VisibleOnly\" und "#HiddenOnly\" zur Verfügung. Da das Zeichen "\" in der Programmiersprache "C" ein Sonderzeichen ist, wird es innerhalb einer C-Zeichenkette durch "\\" vorgegeben.
  • Die Steuerzeichenketten "#VisibleOnly\" und "#HiddenOnly\" können ganz am Anfang oder ganz am Ende des SQL-Statements verwendet werden.
  • Durch die Steuerzeichenketten "#VisibleOnly\" werden nur eingeblendete Meldungen angezeigt.
  • Durch die Steuerzeichenketten "#HiddenOnly\" werden nur ausgeblendete Meldungen angezeigt.
  • Wird weder die Steuerzeichenkette "#VisibleOnly\" noch die Steuerzeichenkette "#HiddenOnly\" verwendet, so werden aus- und eingeblendete Meldungen angezeigt.

Hinweis:
Das SQL-Statement beinhaltet die Einstellungen des "Selektions-Dialogs". Ab WinCC V6.2 beinhaltet das SQL-Statement zusätzlich die Einstellungen des Dialogs "Anzeigeoptionen". Die Einstellungen in beiden Dialogen beeinflussen sich gegenseitig nicht. Beachten Sie die Hinweise im Abschnitt "Nicht darstellbare SQL-Statements".

2 "CLASS IN(1,2,4)"
Durch diesen Anweisungsteil werden nur die Meldungen angezeigt, die den Meldeklassen "Klasse 1" ("Alarm")"Klasse 2" ("Warnung") und  "Klasse 4" ("AS Leittechnik-Meldungen") zugeordnet sind. Die verwendeten Meldeklassen werden durch die Meldeklassennummern vorgegeben. Die jeweilige Nummer einer Meldeklasse können Sie im Editor Alarm Logging im Dialog "Meldeklassen konfigurieren" entnehmen.
3 "AND TYPE IN(1, 2, 19, 20, 55, 56)"
Durch diesen Anweisungsteil wird das Filterkriterium erweitert. Es werden nur diejenigen Meldungen angezeigt, die den Meldearten "Art 1", "Art 2", "Art 19", "Art 20", "Art 55" oder "Art 56" zugeordnet sind. Die verwendeten Meldearten werden durch die Meldeartennummern vorgegeben. Die jeweilige Nummer einer Meldeart können Sie im Editor Alarm Logging im Dialog "Art" einer Meldeart entnehmen.

Hinweis:
Da in diesem Anwendungsbeispiel keine ausdrückliche Filterung bezüglich der Meldearten erfolgen soll, so könnte dieser Anweisungsteil aus SQL-Abfragesicht auch einfach weggelassen werden, um die gleiche Wirkung zu erzielen. Beachten Sie jedoch den Hinweis in Zeile 2 der unten stehenden Tabelle.

4 "AND TEXT1 LIKE 'TI4711'"
Durch diesen Anweisungsteil wird das Filterkriterium erweitert. Es werden nur diejenigen Meldungen angezeigt, die im Anwendertextblock "TB1" die Zeichenkette "TI4711" enthalten.

Hinweis:
Die "LIKE"-Anweisung weicht an dieser Stelle etwas von der gewöhnlichen SQL-Syntax ab. In der LIKE-Anweisung in WinCC darf das Sonderzeichen "%" nicht als Platzhalter verwendet werden.

5 "AND TEXT2 IN('area1', 'area2')"
Durch diesen Anweisungsteil wird das Filterkriterium erweitert. Es werden nur diejenigen Meldungen angezeigt, die im Anwendertextblock "TB2" genau die Zeichenkette "area1" oder "area2" enthalten.

Hinweise:
Beachten Sie jedoch den Hinweis in Zeile 1 der unten stehenden Tabelle.

Nicht darstellbare SQL-Statements:
Wird der Meldungsfilter durch eine SQL-Anweisung definiert, kann der Fall eintreten, dass der eingestellte Meldungsfilter nicht im Selektions-Dialog bzw. Dialog "Anzeigeoptionen" des WinCC Alarm Controls angezeigt werden kann. Ist ein derartiges Filterkriterium am WinCC Alarm Control aktiv und öffnen Sie dann den Selektions-Dialog oder den Dialog "Anzeigeoptionen", dann erhalten Sie die Meldung, dass die aktuelle Selektion nicht im Selektions-Dialog angezeigt werden kann und verworfen wird.


Bild 02

Die folgende Tabelle beschreibt  SQL-Filterbedingungen, die zwar zur Runtime den gewünschten Meldungsfilter ausführen, jedoch nicht im Selektions-Dialog des WinCC Alarm Controls angezeigt werden können.
 

Nr. Beschreibung
1 "IN-Klausel bei Anwendertextblöcken"
Mit Hilfe des IN-Operators ist es möglich,  mehrere Texte festzulegen, die als Filterkriterium für einen gemeinsamen Anwendertextblock gelten. Zum Beispiel kann mit dieser Methode ein Filterkriterium definiert werden, dass die Meldungen mehrerer ausgewählter Bereiche (z.B. Teilanlage A oder Teilanlage B) anzeigt.

Eine derartige Filterbedingung kann nicht im Selektions-Dialog des WinCC Alarm Controls angezeigt werden, da im Selektions-Dialog nicht mehrere Zeichenketten als Filterkriterium für einen Anwendertextblock  vorgegeben werden können.

2 Filtern ohne Angabe der Meldearten
Soll ein Meldungsfilter bezüglich Meldeklassen definiert werden, wobei die Meldearten nicht relevant sind, kann aus SQL-Abfragesicht auf die explizite Angabe der Meldearten verzichtet werden. Der Meldungsfilter kann dann jedoch nicht mit dem Selektions-Dialog des Alarm Controls vollständig angezeigt werden. Werden alle Meldearten für alle Meldeklassen explizit im SQL-Statement angegeben, ist die Anzeige vollständig.

Hinweis:
In diesem Fall erscheint nicht die oben genannte Warnmeldung, dass das Filterkriterium nicht angezeigt werden kann.

3 Groß/Kleinschreibung von SQL-Operatoren
DerSelektions-Dialog des WinCC Alarm Controls unterstützt nicht in allen Fällen die Kleinschreibung von SQL-Operatoren (z.B. LIKE, TYPE). Der Meldungsfilter wird zwar richtig ausgeführt, die Anzeige des Meldungsfilters im Selektions-Dialog ist jedoch nicht vollständig.
Schreiben Sie die SQL-Operatoren deshalb immer groß.

Hinweis:
In diesem Fall erscheint nicht die oben genannte Warnmeldung, dass das Filterkriterium nicht angezeigt werden kann.

4 Gemeinsame Verwendung
Verwenden Sie keine Filterbedingung, bei der Sie bestimmte Anwendertextblöcke auf exakte Gleichheit (Operator "=") und andere Anwendertextblöcke nicht auf exakte Gleichheit (Operator "LIKE") abzufragen. Das Mischen dieser beiden Operatoren führt zu einer falschen Anzeige der Meldungen im WinCC Alarm Control.

Hinweis:
Sie können anstelle des Operators "=" den Operator "IN" verwenden, um die gleiche Filterbedingung für die Meldungen zu definieren. Der IN- und der LIKE-Operator können kombiniert auf Anwendertextblöcke angewandt werden. Beachten Sie jedoch die Hinweise in Zeile 1 dieser Tabelle.

Fehlerdetails
Detailierte Fehlerbeschreibung
Helfen Sie uns, den Online Support zu verbessern.
Die aufgerufene Seite kann nicht angezeigt werden. Bitte kontaktieren Sie den Webmaster.
Kontakt zum Webmaster