-> Hier kostenlos registrieren
Hallo.
Da ich letzt ein Projekt hatte, wo ich mit XML Daten exportieren und importieren musste, wollte ich hier mal meine Erfahrungen dazu weitergeben.
Der Im/Export mit der XML-Funktion, die auf jedem Windows-System vorhanden ist (WinCE, WinXP....) ermöglicht unter WinCC ab Version 6.0 (frühere Version nicht getestet) viele Möglichkeiten an, um z.b.
-Rezeptsicherungen auf USB-Stick
-Parametersicherung/Anpassung sichern oder laden
-Neue Rezepte mehr Mail an Kunden senden
-etc....
Das ganze habe ich mit VBS gemacht, da diese Sprache auch in WinCC flexibel zur Verfügung steht.
Ob das ganze auch unter C-Script funktioniert muss man dann selbst testen.
1. Erstellen eines VB-Scripts in WinCC.
Zuerst sollte im VB-Script Editor (Global Script VBS) eine neues Modul unter Projekt-Module erstellt werden.
->Auf der linken Seite unten auf Projekt-Module klicken
->Rechtsklick auf Projekt-Module im Fensterbereich oberhalb der Auswahl
->Neu -> Projekt-Modul
Es wird ein neuen Modul erstellt, das nun so aussehn sollte:
Nun der Sub einen ordentlichen Namen vergeben. Ich habe z.B. READ_XML_FILE, SAVE_XML_FILE oder NEW_XML_FILE als Bezeichnung gewählt.
2. Variablen im Script definieren.
Um eine Variable aus WinCC im Script nutzen zu können, müssen wir einen Zugriff auf diese erst einrichten.
In dieser Variable kann z.B. der Pfad der Datei hinterlegt sein, wo sich die zu lesende oder schreibende XML-Datei befindet.
3. Instanz auf die XML-Funktions-Bibliothek erzeugen.
Damit wir nun auf die Funktionen der XML-Bibliothek zugreifen könne, müssen wir einen Bezug zu dieser herstellen.
Das geht folgendermassen:
Nun haben wir erstmal alles, um mit XML zu Arbeiten.
Nun gibt es ja 3 Möglichkeiten, mit einer XML-Datei was zu machen.
1. Wir erstellen eine komplett neue Datei
2. Wir lesen was aus einer bestehenden Datei aus
3. Wir lesen und ändern was in einer bestehenden Datei
Zuerst wird das Thema erstellen einer XML-Datei angegangen:
Da wir ja oben schonmal die Pfadname unser Datei im WinCC mit dem Namen der neuen Datei beschrieben haben, müssen wir diesen erstmal auslesen.
Nun übergeben wir der XML-Funktion den Pfadnamen. Da die Datei noch nicht existiert, wird erstmal eine virtuelle Datei im Speicher angelegt, die diesen Namen dann trägt.
Nun überprüfen wir, ob XML das Laden erfolgreich beendet hat.
In der If-Abfrage können nun die Daten für die XML-Datei aufbereitet werden.
Ist man damit fertig, speichert man die Datei im XML-Format ab.
Am Schluss von dem Script muss dann noch die XML-Routine freigegeben werden:
Das ganze würde dann fertig so aussehen:
Da ich letzt ein Projekt hatte, wo ich mit XML Daten exportieren und importieren musste, wollte ich hier mal meine Erfahrungen dazu weitergeben.
Der Im/Export mit der XML-Funktion, die auf jedem Windows-System vorhanden ist (WinCE, WinXP....) ermöglicht unter WinCC ab Version 6.0 (frühere Version nicht getestet) viele Möglichkeiten an, um z.b.
-Rezeptsicherungen auf USB-Stick
-Parametersicherung/Anpassung sichern oder laden
-Neue Rezepte mehr Mail an Kunden senden
-etc....
Das ganze habe ich mit VBS gemacht, da diese Sprache auch in WinCC flexibel zur Verfügung steht.
Ob das ganze auch unter C-Script funktioniert muss man dann selbst testen.
1. Erstellen eines VB-Scripts in WinCC.
Zuerst sollte im VB-Script Editor (Global Script VBS) eine neues Modul unter Projekt-Module erstellt werden.
->Auf der linken Seite unten auf Projekt-Module klicken
->Rechtsklick auf Projekt-Module im Fensterbereich oberhalb der Auswahl
->Neu -> Projekt-Modul
Es wird ein neuen Modul erstellt, das nun so aussehn sollte:
PHP:
Sub procedure1
End Sub
Nun der Sub einen ordentlichen Namen vergeben. Ich habe z.B. READ_XML_FILE, SAVE_XML_FILE oder NEW_XML_FILE als Bezeichnung gewählt.
2. Variablen im Script definieren.
Um eine Variable aus WinCC im Script nutzen zu können, müssen wir einen Zugriff auf diese erst einrichten.
In dieser Variable kann z.B. der Pfad der Datei hinterlegt sein, wo sich die zu lesende oder schreibende XML-Datei befindet.
PHP:
Dim objTagPfad
Set objTagPfad = HMIRuntime.Tags("Pfadname_XML_Datei")
3. Instanz auf die XML-Funktions-Bibliothek erzeugen.
Damit wir nun auf die Funktionen der XML-Bibliothek zugreifen könne, müssen wir einen Bezug zu dieser herstellen.
Das geht folgendermassen:
PHP:
Dim XML
Set XML = CreateObject("MSXML2.DOMDocument")
Nun haben wir erstmal alles, um mit XML zu Arbeiten.
Nun gibt es ja 3 Möglichkeiten, mit einer XML-Datei was zu machen.
1. Wir erstellen eine komplett neue Datei
2. Wir lesen was aus einer bestehenden Datei aus
3. Wir lesen und ändern was in einer bestehenden Datei
Zuerst wird das Thema erstellen einer XML-Datei angegangen:
Da wir ja oben schonmal die Pfadname unser Datei im WinCC mit dem Namen der neuen Datei beschrieben haben, müssen wir diesen erstmal auslesen.
PHP:
objTagPfad.Read
Nun übergeben wir der XML-Funktion den Pfadnamen. Da die Datei noch nicht existiert, wird erstmal eine virtuelle Datei im Speicher angelegt, die diesen Namen dann trägt.
PHP:
Dim OpenXML
OpenXML = XML.Load(objTagPfad.Value)
Nun überprüfen wir, ob XML das Laden erfolgreich beendet hat.
PHP:
If OpenXML = True Then
......
End If
In der If-Abfrage können nun die Daten für die XML-Datei aufbereitet werden.
Ist man damit fertig, speichert man die Datei im XML-Format ab.
PHP:
If OpenXML = True Then
......
XML.save(objTagPfad.Value)
End If
Am Schluss von dem Script muss dann noch die XML-Routine freigegeben werden:
PHP:
Set XML = Nothing
Das ganze würde dann fertig so aussehen:
PHP:
Sub NEW_XML_FILE
Dim objTagPfad
Set objTagPfad = HMIRuntime.Tags("Pfadname_XML_Datei")
Dim XML
Set XML = CreateObject("MSXML2.DOMDocument")
Dim OpenXML
objTagPfad.Read
OpenXML = XML.Load(objTagPfad.Value)
If OpenXML = True Then
......
XML.save(objTagPfad.Value)
End If
Set XML = Nothing
End Sub