Erfahrungsbericht: Kurvenanzeige und Variablenarchive
Für mich gab es 3 Gründe, vom vertrauten WCF2007 zu WCF2008 umzusteigen
* Abstellmöglichkeit der User-Sperrung nach 3x falsches Passwort
* zur Laufzeit veränderbare Textlisten
* von Siemens versprochene "drastische" Erhöhung der Performance der Kurvenanzeigen
Nun, die ersten beiden Sachen funktionieren ganz unspektakulär wie erwartet, da gibt es bis jetzt nichts besonderes zu berichten.
Zu den Kurvenanzeigen hier mal ein Erfahrungsbericht.
Anfang 2008 hatte ich ein WCF-Projekt auf 15"-Touchpanels zu realisieren, wo 35 Variablen für ca. 1 Monat archiviert und in Kurvenanzeigen
dargestellt werden sollten. Für die Realisierung wurde das zu dem Zeitpunkt aktuelle WCF 2007 HF4 benutzt. Leider waren da die MP377 15"
überraschend für die Lieferung nicht freigegeben, so daß das Projekt noch mit MP370 15" realisiert werden mußte.
Ziemlich schnell mußte ich erkennen, daß das MP370 mit WCF2007 diese Aufgabe nicht praxistauglich erfüllen konnte. Das erste Aufrufen und das
Blättern in einer Kurvenanzeige dauerte bis zu 3 Minuten. Nur durch eine drastische Reduzierung der Anforderungen und mehrere Änderungen der
Projektierung konnte die Kurvendarstellung halbwegs benutzbar gestaltet werden: auf einer Kurvenanzeige durften maximal 4 Kurven dargestellt
werden, jede Kurvenanzeige erhielt ein eigenes Variablenarchiv (nun 9 Archive für 10 Kurvenanzeigen), der Archivumfang wurde auf reichlich
1 Woche reduziert und die Variablen wurden nur bei Änderung archiviert. Zusätzlich mußte jede Kurvenanzeige zweimal (umschaltbar) erstellt
werden: einmal aus den Archivdaten und einmal als Echtzeit-Kurve (da allerdings nur 999 Datenpunkte pro Kurve möglich, was ca. 1,3 Stunden
entspricht bei 1 Datenpunkt je 5 Sekunden).
Die Archiv-Variablen liegen alle direkt im Ordner Variablen (kein Unterordner), die Variablennamen sind durchschnittlich 16 Zeichen lang.
Archivumfang:
35 Variablen, zusammen ca. 600.000 Datensätze in 9 Archiven, Archivierungszyklus 15x 5s + 7x 10s + 13x 1min, alle nur bei Änderung ins Archiv,
Gesamtgröße ca. 27MB auf CF-Card (MP370: max 512MB-Card möglich)
Damit ich die Archive regelmäßig während laufender Runtime auf einen Windows-PC übers Netzwerk kopieren kann und auch immer mindestens 5 Tage
zurückblättern kann, hatte ich mich für segmentierte Umlaufarchive mit 5 Segmenten entschieden (dazu muß man in WCF2007 und WCF2008 übrigens
bei der Anzahl Archive = 4 einstellen
).
So sieht ein Datensatz in einem CSV-Variablenarchiv aus ("VarName";"TimeString";"VarValue";"Validity";"Time_ms"):
"T1_P_Steigleitung";"17.9.2010 04:32:12";1,77;1;40438189027,7778
Mit WinCC flexible 2007 HF4 ergaben sich folgende Zeiten:
Initialisierung der Archive bei Runtimstart: 5:10 Minuten (solange werden keine Skripte bearbeitet!)
Aufruf einer Archiv-Kurvenanzeige: 35 bis 50 Sekunden
Blättern in einer A.-Kurvenanzeige: 35 bis 50 Sekunden
Bei zu schnellem Blättern konnte es passieren, daß die Runtime Schaden nahm: Grafikanzeigen wurden mit den berühmten Kakteen dargestellt.
Erst nach einem Beenden und Neustart der RT wurden wieder die richtigen Grafiken angezeigt.
An der Anlage sind 4 Stück MP370 15" mit identischem WCF-Projekt vorhanden, von denen allerdings nur 1 Panel die Variablenarchive schreibt.
Vor vier Wochen habe ich nun an dieser Anlage das Update zu WinCC flexible 2008 SP2 Upd1 gemacht. Große Überraschung: 45 Sekunden nach RT-Start
meldete die Runtime, daß die Initialisierung der von WCF2007 vorhandenen Archive beendet sei. Allerdings wollten die Kurvenanzeigen auch nach
mehreren Minuten Eieruhr keine Kurven anzeigen. Es stellte sich dann leider heraus, daß sämtliche Archiv-Dateien von der neuen WCF2008-Runtime
zerschossen worden waren. Ich habe die Archiv-CF-Card neu formatiert und das Panel dann 3 Wochen in Ruhe archivieren lassen.
Nun nach 3 Wochen mit durchschnittlich 2 Wochen echten Daten in den Archiven ergeben sich folgende Zeiten unter WinCC flexible 2008 SP2 Upd1:
Initialisierung der Archive bei Runtimstart: 50 Sekunden
Aufruf einer Archiv-Kurvenanzeige: knapp 10 Sekunden
Blättern in einer A.-Kurvenanzeige: knapp 10 Sekunden
Das Finden des für die Kurvenanzeige relevanten Archiv-Abschnitts ist nun wesentlich besser gelöst. Man sieht aber immer noch deutlich, daß
die Kurvenanzeige die Datenpunkte für jede Kurve einzeln aus dem Archiv liest, also bei 4 Variablen das Archiv 4 mal ausliest.
Das Erscheinen der Kakteen statt der Grafiken konnte ich nicht mehr provozieren.
Warum schreibe ich diesen Erfahrungsbericht unter "WinCC flexible Wunschzettel"?
Weil es bei der Variablenarchivierung immer noch einen Schönheitsfehler gibt:
Wenn man wie in diesem Projekt Variablen nur bei Änderung archiviert, dann ist die Archivierungssoftware leider nicht so schlau, daß beim
Neu-Anlegen des Archivs oder beim Segmentwechsel alle Variablen einmal archiviert werden. Wenn sich nun über die Archiv-Gesamtdauer eine
Variable nicht einmal ändert, dann dauert der Erst-Aufruf der Kurvenanzeige und das Blättern wieder ca. 40 Sekunden, bis die Kurvenanzeige
feststellt, daß die gesuchte Variable überhaupt nicht im Archiv enthalten ist. Die Kurve wird dann nicht angezeigt und der Variablenwert in
der Wertetabelle als ######## ausgegeben.
Ich habe dieses Problem so gefixt, daß ich bei jedem Runtimestart und per Aufgabenplaner jede volle Stunde alle Variablen mit der Systemfunktion
"ArchiviereVariable" einmal zwangs-archiviere. Nun dauert das Aufrufen der Kurvenanzeige und das Blättern nur noch max. 10 Sekunden.
Übrigens bleibt die Systemzeitanzeige in einem Datum-Uhrzeit-Feld stehen, solange eine Kurvenanzeige "beschäftigt" ist. Dadurch läßt sich ohne
Stopuhr gut die benötigte Zeit für einen Vorgang ermitteln.
Harald