WinCC Aufruf VB-Skript

Alex157

Level-1
Beiträge
23
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

kennt Ihr eine Möglichkeit ein VB-Skript permanent aufzurufen, wenn die RT läuft?

Ich nutze WinCC RT Advanced.

Hintergrund: Ich möchte zyklisch Variablen aus der PLC über eine RT auf einem PC in eine CSV wegschreiben. Aktuell habe ich das so gelöst, dass ein Trigger von der SPS zyklisch auf TRUE gesetzt wird. Bei Änderung dieses Triggers wird ein VB-Skript in der RT ausgeführt, welches die Daten wegschreibt und den Trigger wieder auf FALSE setzt. Das funktioniert auch alles, jedoch finde ich die Lösung nicht schön!

Was sind eure Ideen wie man zyklisch ein VB-Skript ausführen kann?

Danke für Eure Antworten

Alex
 
Aufgabenplaner: kleinster Zyklus 1 Minute

PS: Stimmen die Werte in der csv-Datei? Wie aktualisierst Du die Variablen? Hoffentlich als Rezeptur?

Harald
 
@DeltaMikeAir ich finde die Lösungen nicht schön, weil das Skript eine die Änderung einer Variablen gekoppelt ist. Besser ist wäre es, wenn das Skript einfach zyklisch mit der RT aufgerufen wird. Gibt es diese Möglichkeit?

@PN/DP
Ja die Werte der CSV stimmen. Hab mit Abtastzeiten von 100ms und mit je 100 Realwerten getestet. Das funktioniert.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set f = objFSO.OpenTextFile(pfad + dateiname, 8)
f.WriteLine(CStr(Now)&";"&SmartTags("y1")&";"&SmartTags("y2")&"; ...
f.close
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Alex:
wie schon geschrieben wurde : ein Script kann von der Visu selbst nur jede Minute (oder längeres Intervall) angestossen werden. Willst du das öfter haben so gibt es nur den Weg, den du ohnehin schon beschritten hast : Variable der SPS, die im gewünschten Zyklus ihren Wert ändert und in der Visu auf deren Wertänderung triggern.
Allerdings : 10x in der Sekunde 100 Realwerte wegschreiben ist schon ganz schön sportlich ...

Gruß
Larry
 
@PN/DP
Ja die Werte der CSV stimmen. Hab mit Abtastzeiten von 100ms und mit je 100 Realwerten getestet. Das funktioniert.
Und alle 100 Variablen werden in dem Bild verwendet wo das Skript aufgerufen wird oder stehen auf Aktualisierung "zyklisch fortlaufend"?
Falls nicht: Ist es egal wenn die Werte immer um einen Skriptdurchlauf versetzt in die csv-Datei geschrieben werden? Also nach RT-Neustart werden beim ersten Skript-Durchlauf zunächst alle Werte als 0.0 in die csv-Datei geschrieben, und danach immer die Werte vom Zeitpunkt des Skript-Durchlaufs davor. Wenn das Skript eine Stunde nicht aufgerufen wird (z.B. Logging-Pause) dann werden beim nächsten Skript-Durchlauf die Werte von einer Stunde vorher geschrieben.

Wie häufig soll das Skript aufgerufen werden? Wenn nur jede Minute oder alle paar Sekunden die Werte geschrieben werden sollen dann ist es nicht besonders sinnvoll, alle 100 Variablen alle 100ms zu aktualisieren.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Harald:
Deshalb hatte ich ja auch das geschrieben :
Allerdings : 10x in der Sekunde 100 Realwerte wegschreiben ist schon ganz schön sportlich ...
Ich war/bin mir nicht so sicher, ob der TE sich genau über die Randerscheinungen seines Tun's im Klaren ist.

@TE:
Hast du dir denn mal deine CSV-Datei angesehen, wie oft von Zeile zu Zeile sich Werte genau wiederholen obwohl sie eigentlich von deiner erwarteten Funktionalität gar nicht mehr gleich sein können ?
Was genau ist der Hintergrund deines Vorhabens ?

Gruß
Larry
 
ich wage auch zu bezweifeln das die werte korrekt in die csv geschrieben werden. das kleinste intervall bei zyklisch lesen ist 100ms.
die einzige möglichkeit die daten konsistent zu haben ist ein rezept. wie pn/dp schön erwähnt hat
 
Hallo, danke euch für eure Überlegungen!!!

Hintergrund der Geschicht:
Es sollen bei einer Versuchsanlage Experimente gefahren werden bei den ca. 10-15 Parameter (Real) mit einer noch unbekannten Abtastzeit (warschl. um ca. 1s) aufgezeichnet werden. Die Versuchsdauer liegt bei unter 10min.
Mit meinem Test habe ich es auf die Spitze getrieben, um zu sehen wo die Grenzen liegen und ich bin tatsächlich überrascht wie gut das funktioniert. Wie z.T. bereits beschrieben habe ich 100Real-Werte mit 100ms abgetastet. Um zu prüfen, ob die Werte stimmen oder ob der einfach nur 10 mal den gleichen Wert wegschreibt habe ich einen Sinus mit 100 unterschiedlichen Koeffizienten generiert und mir hinterher stichprobenartig einige Sinuse mit Octave darstellen lassen. Dabei sind keine doppelten Werte vorgekommen.
JEDOCH werden ca. 10%-15% der Werte verschluckt. (Hab einen Test über 12h gefahren). Möchte man also so schnell mit so vielen Werten aufzeichnen, dann darf man nicht davon ausgehen, dass die Abtastpunkte equidistant sind, sondern muss auch die Zeit mitplotten.
Ich gehe davon aus, dass bei langsamerer Abtastung und weniger Werten sich dieses Verfahren sehr gut zum Aufzeicnen eignet. Zumal man hier absolut felxibel die Abtastzeit und die Form der generierten CSV bestimmen kann.

Gruß
Alex
 
Zuviel Werbung?
-> Hier kostenlos registrieren
10 Minuten lang jede Sekunde 15 REAL sind ca. 36 kB

Der Versuch dauert doch bestimmt nicht endlos? Du könntest Messwert-Datensätze zunächst in einen Puffer in einem DB speichern/loggen (sogar zyklusgenau) und danach in aller Ruhe mit Handshake (z.B. als Rezeptur) die Daten sicher in die WinCC RT einlesen. Schau Dir mal diesen Thread an, besonders ab Beitrag #12, wo ein sicherer Export von Datensätzen aus der SPS in eine CSV-Datei beschrieben ist (ereignisgesteuert, kein Warten im Script).
Suchbegriffe für Forumssuche: GetDataRecordTagsFromPLC vbs csv script

Einfacher wäre es, wenn Du die Datensätze aus dem DB nicht mit der WinCC Adv. RT aus der SPS holst und in csv-Dateien speicherst, sondern mit einer selbstprogrammierten Anwendung mit einer S7-Kommunikationsbibliothek aus der SPS holst, z.B. ACCON-AGLink, oder kostenlose Bibliotheken wie Libnodave, Snap7, ...

PS: sind die Analogeingänge auch schnell genug für das Vorhaben?

Harald
 
@PN/DP
Einfacher wäre es, wenn Du die Datensätze aus dem DB nicht mit der WinCC Adv. RT aus der SPS holst und in csv-Dateien speicherst, sondern mit einer selbstprogrammierten Anwendung mit einer S7-Kommunikationsbibliothek aus der SPS holst, z.B. ACCON-AGLink, oder kostenlose Bibliotheken wie Libnodave, Snap7, ...

Das war mein erster Ansatz. Direkt aus der SPS. Sicher die eleganteste Lösung. Hierbei würde mich die ggf. vorhandene Diskrpanz zwischen PLC und RT auch nicht interessieren. Jedoch habe ich auf die Schenlle hierfür nur kostenpflichtige Anwendugen gefunden, die recht teuer sind. Die kostenlosen Sachen werde ich mir aber genauer anschauen. Danke für den Tipp.

Gruß
Alex
 
Zurück
Oben