TIA Variabler Dateiname über SPS Variable ändern in VB-Skript WinCC Advanced

Link_it

New member
Beiträge
3
Punkte Reaktionen
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin, ich bin seit einiger Zeit dabei ein VB Script zu erstellen, welches Daten in einer CSV Datei sichert. Das erstellen der Datei war bislang grundsätzlich kein Problem. Nun muss allerdings je nach Auftragsdaten der Dateiname über die Auftragsdaten variabel angepasst werden. Ich bekomme allerdings nicht den Bezug auf die Variable hin. Wenn ich eine interne HMI Variable als WString anlege und über eine Ein/Ausgabe auf der HMI den Pfad mit Dateiname ändere, funktioniert alles. Wird jedoch statt der internen Variable der selbe Datentyp auch von der Länge aus der SPS genommmen funktioniert es nicht.

Habt ihr da informationen?

Anbei mal ein Ausschnitt aus dem Skript:

' Konstanten
Const DateiLesen = 1, DateiSchreiben = 2, DateiAnhaengen = 8

' Deklaration lokaler Variablen
Dim DateiObjekt, DateiInhalt, Datei, Pfad , Verzeichnis , Dateiname

' Definition lokaler Variablen

SmartTags("TempPfad") = "\Storage Card SD\NeueDatei.csv" '---- Das hier geht

Pfad = TempPfad

Im Endeffekt muss ich bei dem Punkt Pfad eine variable aus der SPS haben in der der Pfad mit richtigem Dateinamen dann immer angegeben wird.
 

JesperMP

Well-known member
Beiträge
7.650
Punkte Reaktionen
1.631
Ich kapiere deine Beschreibung nicht ganz.

Aber egal, die Pfad ist ein String den man von mehrere Strings mit die "&" zusammenbauen kann
Z.B
Code:
SmartTags("WriteFileName") = "C:\LOGS\LOG_" & SmartTags("SPS_String") & ".csv"

Die Pfadname "\Storage Card SD\" scheint mir kommt von ein Comfort Panel, nicht ein WinCC Advanced runtime.
Ist das Zielgerät ein PC oder ein Panel ?
 

faust

Well-known member
Beiträge
598
Punkte Reaktionen
140
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Link.

Die üblichen Fragen zuerst (Sorry, wenn das etwas unfreundlich rüberkommt, aber irgendwann wird es halt nervig):
1.1. Welche TIA-Version?
1.2. Welches Zielgerät?

Die weiteren (üblichen) Fragen:
2.1. WAS funktioniert WANN nicht? Simulierst du, oder testest du auf der Ziel-Hardware?
2.2. Gibt es Fehlermeldungen? Hast du mal Hilfsmeldungen zu Debugzwecken implementiert? Eventuell sogar einen Script-Debugger eingesetzt?
2.3. Wie ist die Variable mit Steuerungsanbindung projektiert? Z.B.Erfassungsart, Erfassungszyklus etc.

Wird in der Steuerung wirklich der komplette Pfad in die Variable geschrieben? Ich berücksichtige dabei auch Jesper's Frage.


Gruß, Fred
 
OP
L

Link_it

New member
Beiträge
3
Punkte Reaktionen
0
Hey, danke für die schnelle Antwort.

Ja ursprünglich wollten wir mal ein Comfort Panel mit nutzen, mittlerweile sind wir auf einen PC mit WinCC Runtime Advanced umgestiegen.
Grundsätzlich ist es halt irgendein Dateipfad. Also z.B. \Datensicherung\Dateiname.csv

Ich habe das Problem das ich den Dateiname variabel anpassen muss. Wenn ich deine Variante probiere, dann erstellt er die Datei mit z.B. C:\TestOrdner\.csv allerdings die Stelle nach dem "\" vor dem ".csv" ergänzt er nicht mit dem Inhalt der Variable die ich dort angelegt habe.

Die Datei ist als String angelegt und hat in der Steuerung den Inhalt 'Test' gehabt allerdings fügt er dies nicht an.
 
OP
L

Link_it

New member
Beiträge
3
Punkte Reaktionen
0
Hallo Link.

Die üblichen Fragen zuerst (Sorry, wenn das etwas unfreundlich rüberkommt, aber irgendwann wird es halt nervig):
1.1. Welche TIA-Version?
1.2. Welches Zielgerät?

Die weiteren (üblichen) Fragen:
2.1. WAS funktioniert WANN nicht? Simulierst du, oder testest du auf der Ziel-Hardware?
2.2. Gibt es Fehlermeldungen? Hast du mal Hilfsmeldungen zu Debugzwecken implementiert? Eventuell sogar einen Script-Debugger eingesetzt?
2.3. Wie ist die Variable mit Steuerungsanbindung projektiert? Z.B.Erfassungsart, Erfassungszyklus etc.

Wird in der Steuerung wirklich der komplette Pfad in die Variable geschrieben? Ich berücksichtige dabei auch Jesper's Frage.


Gruß, Fred
Hey entschuldige,

genutzt wird TIA V15.1. Es wird aktuell ein Testaufbau über eine 1515-2PN betrieben die über eine Runtime auf meiner Engineering Station dieses Skript ausführen soll.

Grundsätzlich kann ich die Dateien erstellen auch inhaltlich wie ich es brauche. Mein Problem ist, wenn ich den Pfad gegen eine Variable aus der SPS austauschen möchte um z.B. den Dateinamen variabel zu gestalten. Hierfür hatte ich zuerst eine Interne HMI Variable vom Typ WSTRING Angelegt, mit dieser habe ich über eine Ein/Ausgabe den Pfad mit Dateiname in dieser Struktur eingegeben "\Testordner\Testdatei.csv". Hiermit war es kein problem. Wenn ich nun in einem Datenbaustein eine Variable anlege vom Typ WSTRING mit dem Aktualwert '\Testordner\Testdatei.csv' kommt die Meldung Error #5 ungültiger Prozeduraufruf oder ungültiges Argument.
 
Zuletzt bearbeitet:

Heinileini

Well-known member
Beiträge
5.733
Punkte Reaktionen
1.333
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Datei ist als String angelegt und hat in der Steuerung den Inhalt 'Test' gehabt allerdings fügt er dies nicht an.
Sondern? Was genau?
Beim Anfügen das Trennzeichen '\' vergessen?
Wenn ich eine interne HMI Variable als WString anlege und über eine Ein/Ausgabe auf der HMI den Pfad mit Dateiname ändere, funktioniert alles.
WSTRING muss es sein?
Ich weiss nicht, wie "gut" die Umsetzung eines S7-STRINGs in einen VBS-String vom BetriebsSystem gemacht wird.
Wird dabei automatisch berücksichtigt, dass ein S7-STRING am Anfang 2 zusätzliche LängenBytes hat bzw. ein S7-WSTRING am Anfang 2 zusätzliche LängenWorte?
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2022
Power-User
Beiträge
19.632
Punkte Reaktionen
5.917
Wenn ich nun in einem Datenbaustein eine Variable anlege vom Typ WSTRING mit dem Aktualwert '\Testordner\Testdatei.csv' kommt die Meldung Error #5 ungültiger Prozeduraufruf oder ungültiges Argument.
siehe diese von Dir unbeantwortete Nachfrage:
2.3. Wie ist die Variable mit Steuerungsanbindung projektiert? Z.B.Erfassungsart, Erfassungszyklus etc.
Deine Variable mit dem Pfad wird vermutlich gar nicht aktualisiert und hat im HMI noch leeren Inhalt. Wird die Variable mit dem Pfad auch irgendwo anders im HMI verwendet? Wenn Dein Skript aufgerufen wird, ist da immer dasselbe Bild am HMI aktiv? Wann/wie wird Dein Skript aufgerufen? Wann bekommt die Variable in der SPS den gewünschten Wert? Warum hast Du die Variable in der SPS als WSTRING projektiert?

- Mache testweise in eine Bild ein Ausgabefeld und lasse den Wert der Variable da anzeigen
- Setze testweise bei der Variable die Erfassungsart auf "Zyklisch fortlaufend"

siehe TIA Hilfe zu "Aktualisieren des Variablenwerts in Runtime" und "Erfassungszyklus einer Variable festlegen"

Harald
 
Oben