Amkonianer
Level-1
- Beiträge
- 24
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo zusamen,
ich habe folgende Aufgabenstellung:
Ich muss Änderungen die im Einrichtbetrieb vorgenommen wurden in einer CSV abspeichern um diese exportieren zu können und gleichzeitig im Tabellenformat auf einem Siemens IPC, wo Runtime Advanced läuft, anzeigen lassen.
Im Einsatz habe ich eine S7-1500 1512-2 PN und einen IPC C377E mit Windows 10 Enterprise 2016 LTSB.
Was ich bisher habe & meine Idee:
Das schreiben in die CSV funktioniert schon mal. Das lesen funktioniert teilweise. Die "Tabelle" im HMI besteht aus mehreren E/A-Feldern, wo ich insgesamt 10 Datensätze anzeigen lasse, wobei hier die nächsten Datensätze dann mit einem Button "<" und ">" geladen werden sollten. Ich habe mir 2 Datenbausteine angelegt. Einmal einen wo ich 1000 Datensätze aus der CSV auslese und in DB (Array 0..999 of Struct, die jeweils 4 Strings enthalten) zwischenspeichere und einen anderen DB der mit Daten gefüttert werden die dann in den E/A-Feldern angezeigt werden.
Wenn die Pfeiltasten gedrückt werden, sollte einfach der Index des Arrays erhöht werden, von wo die Daten des 1. DB's in den 2. DB geschrieben werden.
VB-Skript zum lesen der Daten aus der CSV:
SCL-Code zum befüllen des 2. DB's:
Wobei hier "y" der Index-Wert des Arrays im 1. DB ist, von wo an gelesen und geladen werden sollte.
Mein Problem:
Die Daten werden zwar aus der CSV, gelesen, aber nur die ersten 10 Einträge, mehr befinden sich dann nicht in meinem 1. DB. Und die ganze Sache kommt mir ziemlich langsam vor und als ob das VB-Skript nicht immer ausgeführt wird.
Jemand eine Idee, woran das liegen könnte, dass nicht alle Daten von der CSV geladen werden? Und warum das ganze so träge bzw. das VB-Skript nicht richtig ausgeführt werden könnte?
ich habe folgende Aufgabenstellung:
Ich muss Änderungen die im Einrichtbetrieb vorgenommen wurden in einer CSV abspeichern um diese exportieren zu können und gleichzeitig im Tabellenformat auf einem Siemens IPC, wo Runtime Advanced läuft, anzeigen lassen.
Im Einsatz habe ich eine S7-1500 1512-2 PN und einen IPC C377E mit Windows 10 Enterprise 2016 LTSB.
Was ich bisher habe & meine Idee:
Das schreiben in die CSV funktioniert schon mal. Das lesen funktioniert teilweise. Die "Tabelle" im HMI besteht aus mehreren E/A-Feldern, wo ich insgesamt 10 Datensätze anzeigen lasse, wobei hier die nächsten Datensätze dann mit einem Button "<" und ">" geladen werden sollten. Ich habe mir 2 Datenbausteine angelegt. Einmal einen wo ich 1000 Datensätze aus der CSV auslese und in DB (Array 0..999 of Struct, die jeweils 4 Strings enthalten) zwischenspeichere und einen anderen DB der mit Daten gefüttert werden die dann in den E/A-Feldern angezeigt werden.
Wenn die Pfeiltasten gedrückt werden, sollte einfach der Index des Arrays erhöht werden, von wo die Daten des 1. DB's in den 2. DB geschrieben werden.
VB-Skript zum lesen der Daten aus der CSV:
Code:
Sub ReadFile()Dim fso, datei, textfile, x, name, stringliste
Set fso = CreateObject("Scripting.FileSystemObject")
datei="D:\Files\Schmiermittel.csv"
Set fso = CreateObject("Scripting.FileSystemObject")
Set textfile = fso.OpenTextFile(datei, 1)
x = 0
Do While textfile.AtEndOfStream <> True
name = textfile.ReadLine
stringliste = Split(name, ";")
SmartTags("Logbuch_Tabelle_DB_Tabelle_Einträge{"&x&"}_DateTime") = stringliste(0)
SmartTags("Logbuch_Tabelle_DB_Tabelle_Einträge{"&x&"}_Artikelbeschreibung") = stringliste(1)
SmartTags("Logbuch_Tabelle_DB_Tabelle_Einträge{"&x&"}_Aenderung") = stringliste(2)
SmartTags("Logbuch_Tabelle_DB_Tabelle_Einträge{"&x&"}_AltNeuWert") = stringliste(3)
x = x + 1
Loop
textfile.Close
End Sub
SCL-Code zum befüllen des 2. DB's:
Code:
IF "Logbuch_Tabelle_Anzeige_DB".Temp_zaehlen_plus OR "Logbuch_Tabelle_Anzeige_DB".Temp_zaehlen_minus THEN FOR #x := 0 TO 9 BY 1 DO
"Logbuch_Tabelle_Anzeige_DB".Tabelle.Einträge[#x].DateTime := "Logbuch_Tabelle_DB".Tabelle.Einträge["Logbuch_Tabelle_Anzeige_DB".y].DateTime;
"Logbuch_Tabelle_Anzeige_DB".Tabelle.Einträge[#x].Artikelbeschreibung := "Logbuch_Tabelle_DB".Tabelle.Einträge["Logbuch_Tabelle_Anzeige_DB".y].Artikelbeschreibung;
"Logbuch_Tabelle_Anzeige_DB".Tabelle.Einträge[#x].Aenderung := "Logbuch_Tabelle_DB".Tabelle.Einträge["Logbuch_Tabelle_Anzeige_DB".y].Aenderung;
"Logbuch_Tabelle_Anzeige_DB".Tabelle.Einträge[#x].AltNeuWert := "Logbuch_Tabelle_DB".Tabelle.Einträge["Logbuch_Tabelle_Anzeige_DB".y].AltNeuWert;
"Logbuch_Tabelle_Anzeige_DB".y := "Logbuch_Tabelle_Anzeige_DB".y + 1;
END_FOR;
"Logbuch_Tabelle_Anzeige_DB".Temp_zaehlen_plus := FALSE;
"Logbuch_Tabelle_Anzeige_DB".Temp_zaehlen_minus := FALSE;
END_IF;
Wobei hier "y" der Index-Wert des Arrays im 1. DB ist, von wo an gelesen und geladen werden sollte.
Mein Problem:
Die Daten werden zwar aus der CSV, gelesen, aber nur die ersten 10 Einträge, mehr befinden sich dann nicht in meinem 1. DB. Und die ganze Sache kommt mir ziemlich langsam vor und als ob das VB-Skript nicht immer ausgeführt wird.
Jemand eine Idee, woran das liegen könnte, dass nicht alle Daten von der CSV geladen werden? Und warum das ganze so träge bzw. das VB-Skript nicht richtig ausgeführt werden könnte?