WinCC V13 Archivierung starten mit bestimmten Bit

JFKjo

Level-2
Beiträge
90
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich stehe vor der Aufgabe Prozessdaten mit Hilfe eines Variablenarchiv zu speichern. Nun soll das Archiv mit einem bestimmten Bit gestartet und gestoppt werden. Am besten mit dem Stop noch abgelegt werden und eventuell mit einem aktuellen Datum oder Vorlaufenden Nummer versehen werden.

Gibt es hierzu eine Möglichkeit bzw. ein fertiges Script?

Ich bedanke mich für Hilfe.

Viele Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

danke für Antwort.
Für das Erste habe ich einfach Anweisungen gefunden über eine IF Abfrage.
Nun hänge ich gerade am Punkt, wie ich es mache, damit beim Ablegen auf den USB-Speicher unterschiedliche Log-Dateien mit zb fortlaufender Nummer oder Datum gespeichert werden.

Das Speichern mache ich bisher einfach so: ArchiveLogFile hmiDataLog, "Prozess", "\Storage Card USB\Daten", hmiCopy '

Grüße
 
Bisher habe ich folgendes:


If Drucker_Ein = True Then 'Alle Logfiles werden geöffnet
OpenAllLogs
StartLogging hmiDataLog, "Temperatur",
End If


If Drucker_Ein = False Then
ClearLog hmiDataLog, "Temperatur"
StopLogging hmiDataLog, "Temperatur" 'Beenden des Loggen der Prozessdaten in angegebener Variable
ArchiveLogFile hmiDataLog, "Temperatur", "\Storage Card USB\Daten", hmiCopy 'Ablegen auf USB-Speicher
End If


Mache ich hier etwas falsch?
 
Eine Idee von mir:

If Drucker_Ein = 1 & Test = 0 Then
OpenAllLogs
StartLogging hmiDataLog, "Temperatur",'Starten des Loggen der Prozessdaten in angegebener Variable
End If


If Drucker_Ein = 0 & Test = 1 Then
StopLogging hmiDataLog, "Temperatur" 'Beenden des Loggen der Prozessdaten in angegebener Variable
CloseAllLogs
ArchiveLogFile hmiDataLog, "Temperatur", "\Storage Card USB\Daten", hmiCopy 'Ablegen auf USB-Speicher
End If


If Drucker_Ein = 1 Then
SetBit "Test"
Else
ResetBit "Test"
End If


Hier gehe jetzt einfach vom Zyklus aus somit wird beim ersten Zyklus die erste If genutzt. Solange Drucker_Ein vorhanden ist und Bit Test gesetzt ist, wird keine weitere If aufgerufen.
Fällt Drucker_Ein ab, so wird ein Zyklus nichts passieren und dann beim 2. Zyklus die 2.If aufgerufen.

Oder sehe ich das falsch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, das ist eine Flankenauswertung,
mit Drucker_Ein=true wird OpenAllLogs... einmalig ausgeführt, mit Drucker_Ein=false wird CloseAllLogs... einmalig ausgeführt.

Darüber würde ich mir weniger Sorgen machen, ich würde aber mal ausprobieren ob das Starten und Stoppen des Logs, sowie das auslagern auf USB funktioniert.
 
Hallo,

danke für die Antwort.
Genau darin steckt ja meine Frage: geht das so, oder steckt hier noch ein gedanklicher Fehler. :)
 
Ich möchte dieses Thema wieder aufgreifen und habe ein paar Fragen dazu.

Ich möchte ebenfalls die Archivierung per Bit starten. Bei jeden neuen Aufruf sollen die neuen Archivdaten im gleichen Archiv/CSV-File hinter einander gespeichert werden. Das oben genannte Code Beispiel habe ich auch im Netz gefunden. Dieses Beispiel habe ich für meine Bedurfnisse angepasst.

Sub Archiv()

If DATEN_GUELTIG = True Then

OpenAllLogs

StartLogging hmiDataLog, "Test",

End If


If DATEN_GUELTIG = False Then

StopLogging hmiDataLog, "Test",

CloseAllLogs

End If


End Sub

Leider funktioniert es noch nicht. Ich habe zwei Befehle weg gelassen da ich diese meiner Meinung nach nicht brauche:

1. ClearLog hmiDataLog, "Test" - Ich will das Archiv ja nicht löschen
2. ArchiveLogFile hmiDataLog, "Test", "\Storage Card USB\Daten", hmiCopy 'Ablegen auf USB-Speicher - Warum muss ich den Speicherort angeben? Der wird doch in den Archiv-Einstellungen schon angegeben.

Eine weitere Frage die ich noch habe ist, wie starte ich das Skript? Wird das mit der Runtime mit gestartet oder muss es angestoßen werden. Wenn ja wie?

Danke!
 
2. ArchiveLogFile hmiDataLog, "Test", "\Storage Card USB\Daten", hmiCopy 'Ablegen auf USB-Speicher - Warum muss ich den Speicherort angeben? Der wird doch in den Archiv-Einstellungen schon angegeben.
In den Archiv-Einstellungen wird festgelegt, wo das Arbeits-Archiv liegen soll. Mit ArchiveLogFile wird das vorhandene Arbeits-Archiv ("Test") an einen zweiten Speicherort ("\Storage Card USB\Daten") kopiert (z.B. als Sicherung) - der zweite Ort muß natürlich angegeben werden.

Eine weitere Frage die ich noch habe ist, wie starte ich das Skript? Wird das mit der Runtime mit gestartet oder muss es angestoßen werden.
Ein Skript wird nicht automatisch gestartet, man mußt es aufrufen, wann immer die Funktion des Skriptes ausgeführt werden soll.

Harald
 
Du könntest den Aufruf des Skriptes z.B. an eine Schaltfläche anbinden. Dann wird es immer dann aufgerufen, wenn die Schaltfläche gedrückt wird (oder losgelassen oder geklickt, je nachdem an welches Ereignis Du den Skriptaufruf anbindest).

Harald
 
Du könntest den Aufruf des Skriptes z.B. an eine Schaltfläche anbinden. Dann wird es immer dann aufgerufen, wenn die Schaltfläche gedrückt wird (oder losgelassen oder geklickt, je nachdem an welches Ereignis Du den Skriptaufruf anbindest).

Harald

Das ist mir klar. Meine Frage ist wie und wo definiere ich denn dieses Ereignis?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ereignisse werden von Objekten ausgelöst. Was bei dem Ereignis passieren soll projektiert man in den Eigenschaften des Objektes. (nicht alle Ereignisse sind bei allen Objekten möglich)

Harald
 
Ich habe es gefunden. Wenn man beispielsweise einen Taster zum Starten des Skriptes nutzen möchte so muss man bei der entsprechenden HMI Variable unter Ereignissen unter Wertänderung das VB Skript auswählen.
 
Falsch - da würde das Skript bei (fast) jeder Wertänderung der Variable aufgerufen, unabhängig vom Drücken des Tasters.
Wenn das Skript nur beim Drücken des Tasters ausgeführt werden soll, dann ist der Skriptaufruf an das Ereignis "Drücken" des Tasters anzubinden.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Falsch - da würde das Skript bei (fast) jeder Wertänderung der Variable aufgerufen, unabhängig vom Drücken des Tasters.
Wenn das Skript nur beim Drücken des Tasters ausgeführt werden soll, dann ist der Skriptaufruf an das Ereignis "Drücken" des Tasters anzubinden.

Harald

Ja - Stimmt. Jedenfalls weiß ich jetzt was du meinst und wie ich das Skript starten kann.

Danke!
 
Ich bekomme das Skript einfach nicht zum laufen. Das CSV File wird zwar angelegt aber es bleibt leer.

Das oben genannte Skript starte ich über einen Hardware-Taster (keine Panel Taste). Der Eingang bzw. die boolsche Variable die diesen Taster überwacht soll das Skript starten. Da es bei boolschen Variablen nur Wertänderung als Ereignis gibt würde das Skript jeweils beim drücken und beim los lassen des Tasters gestartet. Durch die If-Bedingungen im Skript sollte das aber kein problem sein.

Das Archiv hat die Archivierungsmethode "Auslösen bei Ereignis". Die Erfassungsart der Variablen lautet auf "Anforderung".

Kann mir bitte jemand einen Tipp geben wo der Fehler liegt?
 
Ich bekomme das Skript einfach nicht zum laufen. Das CSV File wird zwar angelegt aber es bleibt leer.
Daß das Archiv leer bleibt hat wohl nichts mit dem Skript zu tun, es liegt vermutlich daran, daß keine Ereignisse auftreten, die etwas in das Archiv schreiben würden. Das Skript gibt lediglich die Archivierung frei oder stoppt und schließt die Archive.


Das oben genannte Skript starte ich über einen Hardware-Taster (keine Panel Taste). Der Eingang bzw. die boolsche Variable die diesen Taster überwacht soll das Skript starten. Da es bei boolschen Variablen nur Wertänderung als Ereignis gibt würde das Skript jeweils beim drücken und beim los lassen des Tasters gestartet. Durch die If-Bedingungen im Skript sollte das aber kein problem sein.
Das kann man so machen, man muß nur dafür sorgen, daß die Variable auch verwendet wird (zyklisch lesen oder durch Verwendung in allen Bildern), damit eine Wertänderung der Variable erkannt wird. Im Skript kann man die auslösende Variable nochmal abfragen, um das Skript nur beim "Kommen" der Variable abzuarbeiten.

Warum soll die Archivierung eigentlich gestoppt und gestartet werden? Kann die Archivierung nicht immer aktiv sein und höchstens zum Kopieren der Archive kurzzeitig gestoppt werden?


Die Erfassungsart der Variablen lautet auf "Anforderung".
Warum ist "Auf Anforderung" eingestellt?

Wenn als "Erfassungsart Archivierung" "Auf Anforderung" eingestellt ist, dann muß man auch eine Anforderung erzeugen - z.B. bei Wertänderung einer anderen Variable die Systemfunktion "ArchiviereVariable" für die zu archivierende Variable aufrufen.

Lies mal folgendes Hilfethema:
WinCC flexible Information System
+ Arbeiten mit WinCC flexible
+ Variablen archivieren und darstellen
+ Arbeiten mit Variablenarchiven
* Archivieren von Variablenwerten
  • Archivierung der Variablen konfigurieren
    Weiterhin legen Sie fest, wann und wie oft die Werte einer Variablen archiviert werden. Hierfür gibt es folgende Möglichkeiten:
    • "Auf Anforderung":
      Die Variablenwerte werden durch Aufruf der Systemfunktion "ArchiviereVariable" archiviert.
    • "Bei Änderung":
      Die Variablenwerte werden archiviert, sobald das Bediengerät eine Wertänderung der Variablen feststellt.
    • "Zyklisch fortlaufend":
      Die Variablenwerte werden in regelmäßigen Abständen archiviert.

ArchiviereVariable schrieb:
Syntax
ArchiviereVariable (Variable)
Im Skript verwendbar: nein

Harald
 
Zurück
Oben