WinCC Flex Archive: Protokolldatei selbst zusammenstellen

Paul

Level-2
Beiträge
929
Reaktionspunkte
239
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen
Ich habe eine Frage an die Skript Spezialisten.

Ich will ca. 15 Maschinenzustände, alle 10 Minuten, archivieren und und einmal pro Tag auf ein Netzlaufwerk exportieren.
Ich weiß es gibt dafür die Funktion <Exportiere Protokolldatei>.
Diese Funktion hat aber (für mich) den großen Nachteil, dass da ein Riesenhaufen total unübersichtlicher Einträge rauskommt
Vorne steht der PLC-Variablenname (kryptisch für Kunden) ohne Maßeinheiten, hinten dran die Time in ms (sorgt auch nur für Verwirrung).

Deshalb also mein Plan da was eigenes zu machen.
In der S7 gibt es für jedes "Pseudo-Archiv" eine DB der alle 10 Minuten um einen Wert "erweitert" wird.
Das ergibt in 24 Std 144 Werte.
Ebenso verfahre ich mit der SPS-Systemzeit (für einen Zeitstempel), da mich nur die Stunden und Minuten interessieren und nicht die Mikrosekunden.

Ich habe ein Skript geschrieben in dem folgendes passiert:
Es wird eine CSV-Datei erzeugt (mit aussagekräftigem Namen und Spalten-Überschriften etc....

In der ersten Spalte baue ich mir die 144 Zeilen für einen Zeitstempel zusammen
Zweite Spalte 144 Zeilen für Temperatur Behälter 1
Dritte Spalte 144 Zeilen für pH-Wert Behälter 1
......
......

Das Ganze funktioniert soweit ganz gut, aber halt momentan nur auf einem Probeaufbau.

Was mir jetzt Bedenken macht:
Dadurch dass ich mit die Zeileneinträge über Schleifen aus den SmartTags hole befürchte ich, dass
da im "Echten" Betrieb die Kommunikation schon sehr gefordert wird und evtl. schon mal
der eine oder andere Wert verschluckt wird oder andere Phänomene auftauchen.
Wie schlägt das überhaupt bei den PowerTags zu Buche?
Wenn ich ein weiteres Array mit 144 Einträgen in dem Skript verwende erhöht sich die Zahl der PowerTags nur um 1.
Kann das sein oder kommt da das Dicke Ende noch?

Was meint ihr dazu, ist mein Ansatz überhaupt ein gangbarer Weg oder ist das eigentlich von vorn herein zum Scheitern verurteilt?
Im Kleinen funktioniert das super, aber letztendlich werden es schon eine ganze Menge Daten......

Bin für jede Meinung dankbar, da Skripte nicht wirklich meine Freunde sind.

PS: das Ganze läuft auf einem Panel-PC, WinCCflex 2008 und S7-Classic
 
Hallo Paul,
da habe ich keine Bedenken, dein Ansatz ist der Richtige und wurde von mir auch
schon einige Male für anders gelagerte Anwendungen umgesetzt.
Ein Arrray ist wirklich nur ein PT und somit auch der richtiger Weg für deine Datenmenge,
die ich persönlich noch nicht als zu groß ansehe.
Skripte muss man auch nicht verteufeln, manchmal ist es sehr Sinnvoll diese einzusetzen.

Gruß RN
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Helmut

Danke für Deine Antwort.
Da bin ich ja halbwegs beruhigt. :D

Skripte muss man auch nicht verteufeln, manchmal ist es sehr Sinnvoll diese einzusetzen.
Naja, verteufeln ist vielleicht zu krass ausgedrückt, mir geht das Programmieren damit einfach nur schwer von der Hand.
Das hat verschiedene Gründe:
1-Man kann nicht im Status anschauen was eigentlich los ist.
2-Wenn die Generierung fehlschlägt sind die Informationen, weshalb, sehr, sehr dürftig.
3-Ich habe noch nichts gefunden wie <Gehe zur vorherigen/nächsten Verwendungsstelle> (Vielleicht kannst Du mir ja einen Tipp geben)
4-Wenn eine Variable rot unterringelt ist, heißt das nicht dass mit der Variable selbst was nicht stimmt, Ursache kann auch weiter hinten im Text sein.
5-Ich habe schmerzlich lernen müssen, dass es einen Unterschied zwischen "Generieren und dann Runtime starten" und nur "Runtime starten" gibt
6-Ich finde nichts, wo man sich mal den Befehlsvorrat "geballt" anschauen kann. (Auch hier wäre ich für einen Tipp dankbar)
7-Es sind jede Menge "Sauereien" möglich die in AWL niemals vom Compiler akzeptiert würden
8-Wenn dir ein Skript im SPS Programm "rumschmiert" ist es schon fast Zufall wenn man das findet (speziell in Fremdprogrammen).
9-.....
10-......

Falls Du einen Link oder eine Empfehlung für gute Anleitungen hast, immer her damit.
 
Zuletzt bearbeitet:
Was mir jetzt Bedenken macht:
Dadurch dass ich mit die Zeileneinträge über Schleifen aus den SmartTags hole befürchte ich, dass
da im "Echten" Betrieb die Kommunikation schon sehr gefordert wird und evtl. schon mal
der eine oder andere Wert verschluckt wird oder andere Phänomene auftauchen.
Gut befürchtet! Es werden ziemlich sicher Werte "verschluckt" werden. Stichworte: Variablen Aktualisierung, Rezeptur, GetDataRecordTagsFromPLC
Hier mal auf die Schnelle für den Einstieg eine Zusammenstellung von Links zu den Problemen
(Bin ich eigentlich der Einzige, der immer wieder und wieder und wieder auf diese Probleme hinweist?)

In der ersten Spalte baue ich mir die 144 Zeilen für einen Zeitstempel zusammen
Zweite Spalte 144 Zeilen für Temperatur Behälter 1
Dritte Spalte 144 Zeilen für pH-Wert Behälter 1
Wie meinst Du das? In einer csv-Datei kann man nicht Spalten mit 144 Zeilen zusammenbauen, sondern nur Zeilen mit x Spalten.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie meinst Du das? In einer csv-Datei kann man nicht Spalten mit 144 Zeilen zusammenbauen, sondern nur Zeilen mit x Spalten.
Hallo Harald
OK, da habe ich mich vielleicht etwas missverständlich ausgedrückt.
Es wird natürlich 144 mal eine Zeile mit x Spalten geschrieben.

Jetzt habe ich aber noch eine Frage zu den SmartTags an sich:
Sagt mir bitte mal ob ich da richtig liege
Wenn ein SmartTag im Skript "aufgerufen" wird dann wird das aus dem Panel-Speicher gelesen und nicht aus der PLC.
Das hat zur Folge dass (während die Schleife läuft) in jedem Fall "schnell" Daten verfügbar sind, auch wenn diese evtl schon x Sekunden alt sind.
Wie alt, kommt halt auf den eingestellten Erfassungszyklus an.
Jedenfalls wird die HMI <-> PLC Kommunikation während der Schleife(n) nicht mehr belastet als ohne Schleife.
Stimmt das so?
 
Zurück
Oben