-> Hier kostenlos registrieren
Hallo,
ich bin gerade dabei mit VB - Script in WinCC Advanced einzuarbeiten. Meine Aufgabe ist folgende:
Der Kunde arbeitet ausschließlich mit einer Exceltabelle. Ich speichere die Excel-Datei als csv-Datei.
Die Excelltabelle besteht aus ca. 1200 Produkte (Zeilen) mit 12 Datenelemente (Spalten).
Die CSV - Datei wird mit einem USB -Stick mir zur Verfügung gestellt. Die Datei wird einmalig eingelesen
und nach Änderung der Excel-Datei wieder eingelsesn.
Meine Hardware:
- CPU 1515-2 PN
- WinCC Advanced Runtime V17
- Simatic IPC 477E
Hier ein Auszug der csv-Datei:
Meine Aufgabe besteht darin die csv-Datei einzulesen und die Daten in die SPS zu übertragen.
Dazu habe in der SPS vorbereitet den DB "dbProduktuebersicht" und die HMI-Tags "Produkt".
Mit dem VB - Script lese ich die Datei ein.
Mein Problem ist, führe ich das Script aus erhalte ich die Meldung "Readout of the data was Successfull!
Wenn ich mit den "dbProduktuebersicht" DB online gehe ist kein Wert übertragen worden!
Habt Ihr eine Tipp was ich falsch gemacht habe?
ich bin gerade dabei mit VB - Script in WinCC Advanced einzuarbeiten. Meine Aufgabe ist folgende:
Der Kunde arbeitet ausschließlich mit einer Exceltabelle. Ich speichere die Excel-Datei als csv-Datei.
Die Excelltabelle besteht aus ca. 1200 Produkte (Zeilen) mit 12 Datenelemente (Spalten).
Die CSV - Datei wird mit einem USB -Stick mir zur Verfügung gestellt. Die Datei wird einmalig eingelesen
und nach Änderung der Excel-Datei wieder eingelsesn.
Meine Hardware:
- CPU 1515-2 PN
- WinCC Advanced Runtime V17
- Simatic IPC 477E
Hier ein Auszug der csv-Datei:
SAP;Bez;Flaschentyp;Verschlusstyp;Karton;Flaschen/Karton;Pulpentyp;UN Nummer;Hazard Class;Sub Risk 1;Limited Quantity(ADR);Produktetikett 10095011;LUMILUX DISP. RED CD 974 1,00KG 1PBT;1 L Plastik;Leichtverschluss;61430;6;;;;;;QB 10095013;LUMILUX DIS. YELLOW CD 997-1PBT;1 L Plastik;Leichtverschluss;61430;6;;;;;;QB 10184608;F32028 Fluoride Buffersol.DEV D41,00LPE;1 L Plastik;Leichtverschluss;61430;6;;;;;;QB 10184701;F37855 HYDRANAL-LIPOSOLVER CM 1,00LFL;1 L Glas;Glocke;60631;6;74107;UN1992;3;6_1;LQ;QB + 10184702;F37856 HYDRANAL-LIPOSOLVER MH 1,00LFL;1 L Glas;Glocke;60631;6;74107;UN1230;3;6_1;LQ;QB + 10184710;F37863 HYDRANAL-CHLOROFORM 1,00LFL;1 L Glas;Leichtverschluss;60631;6;74107;UN1888;6_1;;LQ;QB + 10184714;F37866 HYDRANAL-XYLENE 1,00LFL;1 L Glas;Leichtverschluss;60631;6;74107;UN1307;3;;LQ;QB + 10184772;F38214 10M Sodium hydroxide FIX 1,00SPE;1 L Plastik;Glocke;61430;6;;UN1824;8;;LQ;QB 10184791;F38283 10M Hydrochlor.ac. FIX 1,00SPE;2,5 L Plastik;Glocke;61435;4;;UN1789;8;;;QB 10185021;ETHYLENE GLYCOL 1,00LPE;1 L Plastik;Leichtverschluss;61430;6;;;;;;QB 10185022;ETHYLENE GLYCOL 2,50LPF;2,5 L Plastik;Leichtverschluss;61435;4;;;;;;QB |
Meine Aufgabe besteht darin die csv-Datei einzulesen und die Daten in die SPS zu übertragen.
Dazu habe in der SPS vorbereitet den DB "dbProduktuebersicht" und die HMI-Tags "Produkt".
Mit dem VB - Script lese ich die Datei ein.
Code:
Sub VBFunktion_2()
' Read data from file()
Dim fso, f, field, MyZf, data, splitdata , test(5000,11),j
Dim n, delimiter, FileName
n=0
j=0
FileName = "D:\Produktdaten\TestCsv1.csv"
'Catch Erros -- Fehler abfangen
On Error Resume Next
'Create Opject -- Objekt erstellen
Set fso = CreateObject("Scripting.FileSystemObject")
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" & CStr(Err.Number) & "" & Err.Description
Err.Clear
Exit Sub
End If
Set f = fso.OpenTextFile(FileName, 1, 0, -2)
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" & CStr(Err.Number) & "" & Err.Description
Err.Clear
Exit Sub
End If
f.SkipLine(1) 'Zeile Ueberschriften überspringen
Do While f.AtEndOfStream <> True
data = f.ReadLine 'Zeile einlesen
splitdata = Split(data, ";")
For n = 0 To 10
test(j,n)= splitdata(n)
Next
SmartTags(CDbl("SAP"))(n) = test(1,1)
SmartTags(CStr("Bez"))(n) = test(1,2)
SmartTags(CStr("FlaschenTyp"))(n) = test(1,3)
SmartTags(CStr("VerschlussTyp"))(n) = test(1,4)
SmartTags(CDbl("KartonTyp"))(n) = test(1,5)
SmartTags(CDbl("FlaschenKarton"))(n) = test(1,6)
SmartTags(CDbl("PulpenTyp"))(n) = test(1,7)
SmartTags(CStr("UnNummer"))(n) = test(1,8)
SmartTags(CStr("HazartClass"))(n) = test(1,9)
SmartTags(CStr("SubRisk1"))(n) = test(1,10)
SmartTags(CStr("LQ"))(n) = test(1,11)
SmartTags(CStr("ProduktEtikett"))(n) = test(1,12)
j=j+1
Loop
' Tidy up -- Aufraeumen
fso.Close
Set f = Nothing
Set fso = Nothing
ShowSystemAlarm "Readout of the data was succesfull!"
End Sub
Mein Problem ist, führe ich das Script aus erhalte ich die Meldung "Readout of the data was Successfull!
Wenn ich mit den "dbProduktuebersicht" DB online gehe ist kein Wert übertragen worden!
Habt Ihr eine Tipp was ich falsch gemacht habe?