WinCC Exeldatei (Spalte A) über VB Script im HMI durchsuchen und Werte ( Zeile) auslesen

Treut1012

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

Ich benutze aktuell einen VB Script in Verbindung mit einen HMI TP1200 um Messwerte ( Materialnummer , Temperatur, Trocknungszeit ect.) als Exceldatei auf einer SD Card abzuspeichern . Dies funktioniert auch wunderbar .

Nun muss ich meine Funktion allerdings erweitern . Ich muss nun über das HMI die Materialnummer eingeben können und durch das Script wird die Exeldatei ( Spalte A) durchsucht . Wenn Materialnummer gefunden dann soll die dazugehörige Temperatur (Spalte B , Zeil x ) auf HMI angezeigt werden .

Leider fehlt mir aktuell etwas die Idee wie ich das im Script umsetzen soll . Wäre über jeden Denkanstoß oder Vorschlag dankbar . Es muss auch kein fertig Code sein :D .

Danke schonmal für die Hilfe :)
 
Befinden sich die zu durchsuchenden Daten zum Zeitpunkt des Suchens nur noch in der ExcelDatei und nicht mehr im HMI bzw. in der SPS?
Mit ExcelDatei ist was genau gemeint? Eine von Excel lesbare csv-Datei?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau die Daten befinden sich nur noch als ExcelDatei bzw csv-Datei auf der SD Karte .

Ziel ist es im HMI über ein EA Feld eine Materialnummer z.B. ABC123456 einzugeben , dann wird über den Script die CSV Datei (Spalte A) nach der Materialnummer durchsucht . Wenn gefunden dann bekomme ich in einen Weiteren EA Feld am Panel die dazugehörige Temperatur 60 Grad (Spalte B ; Zeile 111 ) und Trocknungszeit 120min ( Spalte C , Zeile 111) angezeigt .

Ich hoffe es ist jetzt besser verständlich :D
 
Eine csv-Datei ist keine Excel-Datei, sondern eine einfache Textdatei, wo die Werte durch ein einfaches Trennzeichen getrennt sind (üblicherweise Semikolon oder Komma). Excel ist nur eines der vielen Programme, die csv-Dateien mehr oder weniger gut anzeigen können. Öffne mal die csv-Datei mit einem Texteditor wie Notepad :cool: wie es ein richtiger Programmierer bei Problemen mit csv-Dateien macht ;)

Du müsstest die csv-Datei zeilenweise einlesen (LineInputString) und am Trennzeichen splitten (mit Split) bis Feld(0) (Deine Spalte "A") die gesuchte Materialnummer hat. Dann die Werte aus Feld(1) (Deine Spalte "B") und Feld(2) (Deine Spalte "C") übernehmen. Bei eher kleinen csv-Dateien könnte man auch die gesamte Datei zunächst in ein Zeilen-Array einlesen und dieses dann untersuchen.
VBS-Beispiel für einlesen und splitten einer Textdatei

Harald
 
Hallo Harald,

ich hänge mich mal an den Beitrag mit ran..

Und zwar hab ich genau andersrum das Problem, ich möchte gerne Zeilenweise herausschreiben aus dem HMI. Geht das? Falls ja, welche Funktionen/Module gibt es hierfür?

Und zwar liegen meine Values Einzel in einem DB und diese möchte ich nun Zeilenweise herausschreiben.

Gibt es sowas wie LineInputString auch LineOutputString?

Code:
data = file.LineInputString '2. Zeile mit 7 Werten
data = Replace(data, vbTab & vbTab, delimiter)
splitdata = Split(data, delimiter)



Gruß,
Martin
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Da klickst Du mal auf den Link in dem Beitrag an den Du Dich angehängt hast, und schaust Dir den Beitrag vor dem verlinkten FAQ-Beitrag und besonders den ersten Beitrag in der FAQ an, da findest Du alle Dateifunktionen die Du brauchst. Du könntest auch in der Forumssuche die Suchbegriffe "vbs csv schreiben" eingeben, da würdest Du viele Beiträge zu dem Thema finden, z.B. diesen:
Datenausgabe per USB als CSV Datei
da findest Du Hinweise und einen Link zu einem Siemens-FAQ

Kurz gesagt:
Du müsstest zunächst erst einmal Deine Daten garantiert aktualisiert aus der SPS ins HMI bekommen. Zu dem Problem suche mal mit dem Suchbegriff "GetDataRecordTagsFromPLC"

Und dann müsstest Du Deine Dateizeile so zusammenstellen und ausgeben, wie Du sie haben willst, und zwischen die Werte Deinen Delimiter (üblicherweise Semikolon) einfügen, z.B.
Code:
f.LinePrint Now & ";" & SmartTag("MyValue")

'oder

f.LinePrint SmartTags("Datum")(n) _
    & ";" & SmartTags("Uhrzeit")(n) _
    & ";" & SmartTags("User")(n) _
    & ";" & SmartTags("Produkt")(n) _
...
    & ";" & SmartTags("Fertigungsauftrag")(n)

Harald
 
Zurück
Oben