WinCC flex 08 Zähler archivieren

deltafox1002

Level-2
Beiträge
60
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo@all

ich möchte gerne folgende Funktion ausführen, finde aber nicht das Richtige.

- Es sind 3 Zählwerte in einem DB als DINT geschrieben
- Diese Zähler werden bei Schichtwechsel manuell auf 0 gesetzt.
- Beim 0-setzen sollen erst die Zählerwerte archiviert werden, also in die csv Datei geschrieben werden, und dann erst der DBD mit 0 überschrieben werden.
- Habe es schon mit Wertänderung versucht, aber dann schreibt sich der Wert immer doppelt rein, da ich einen Merker nutze, der bei Start der Archivierung auf 1 und nach dem Archivieren wieder auf Null gesetzt wird und die negative Flanke für das rücksetzen verwende.
- Ich nutze die Wincc flex 08 sp2 runtime auf winxp
 
Setzt den merker doch einfach nicht auf "0", deine Funktion wird ja immer
bei Wertänderung ausgeführt. Invertiere in der Steuerung nur immer den
Merker wenn dein Ereignis auftreten soll, in diesen Fall wenn deine Zähler
auf "0" gesetzt werden soll.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte "bei Wertänderung" des Merkers auch ein Script aufrufen, was die Archivierung nur durchführt, wenn der Merker = 1 ist - der Aufruf des Scriptes also die 0-1-Flanke war. Den Merker als Parameter dem Script mitgeben oder im Script abfragen.
Sehr gut macht sich auch ein Rücksetzen des Merkers im Script - das löst nämlich kein "bei Wertänderung" aus und die CPU bekommt so auch noch mitgeteilt/quittiert, daß die Zählerwerte archiviert wurden und nun auf 0 gesetzt werden können.

Harald
 
Danke erst mal für eure Antworten.

Den Merker als Parameter dem Script mitgeben oder im Script abfragen.

Wie kann ich aber im Script schreiben, das eine bestimmte Variable archiviert werden soll ? Ich habe unter den Systemfunktionen keine Möglichkeit gefunden.

In der Hilfe stand, das die Funktion ArchiviereVariable, Im Script verwendbar = nein ist.
 
In der Hilfe stand, das die Funktion ArchiviereVariable, Im Script verwendbar = nein ist.
Ach so, Du benutzt ein "richtiges" Variablenarchiv, da müsste ich erst mal nachschauen, wie ich das schon mal hinbekommen habe.

Ich dachte, Du schreibst die 3 Zählerwerte einfach in eine selbst erzeugte csv-Datei. Wäre das nicht sowieso besser? Wie willst Du das Archiv später auswerten?
WinCCflex schreibt beim archivieren jede Variable in eine eigene Zeile und die Reihenfolge der Werte kann man nicht erzwingen, es kann also gut vorkommen, daß zuerst Zähler3 in das Archiv geschrieben wird, dann Zähler1 und dann Zähler2.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte "bei Wertänderung" des Merkers auch ein Script aufrufen, was die Archivierung nur durchführt, wenn der Merker = 1 ist - der Aufruf des Scriptes also die 0-1-Flanke war. Den Merker als Parameter dem Script mitgeben oder im Script abfragen.
Sehr gut macht sich auch ein Rücksetzen des Merkers im Script - das löst nämlich kein "bei Wertänderung" aus und die CPU bekommt so auch noch mitgeteilt/quittiert, daß die Zählerwerte archiviert wurden und nun auf 0 gesetzt werden können.

Harald

So hatte Ich das auch schon ab und an, doch Ich hatte schon das Problem das das Script nach dem Neustart der Runtime nicht aufgerufen wurde da es keine Wertänderung gab, und somit die Variable hängen geblieben ist.

Ich machs eigendlich mitlerweile nur noch mit einer byte oder int variablen, bei der Ich einen Grenzwert definiere und das Ereignis dann bei Grenzwert überschritten ausführe, darin setzte Ich dann auch den Wert wieder zurück!
 
Zurück
Oben