TIA XML-Datei auswerten

atec

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

meine Frage bezieht sich auf die Auswertung einer XML-Datei. Bestimmt haben die Meisten sowas schon mal gemacht und können mir vielleicht ein paar Tipps geben, wie ich vorgehen kann.
Mein Fall sieht folgendermaßen aus:
Es wird einem iPC über das Maschinennetz eine xml Datei zur Verfügung gestellt. Die Aufgabe besteht darin, einige Daten aus der xml zu extrahieren und in der SPS abzuarbeiten.
Nach einer längeren Suche bin ich auf verschiedenste Lösungen gekommen, OPC UA, ODK, S7 Kommunikation, WinCC Script usw. Aber was ist hier in der Praxis gängig?
Für mich stellt sich die Frage, wo der xml-Parser am Besten aufgerufen werden soll, auf der Windowsseite oder im TIA-Portal. Gibt es vielleicht TIA-seitig bereits einen XML-Parser? Einen JSON-Parser habe ich bereits gefunden, aber leider keinen für xml-Dateien.
Zur verbauten Hardware lässt sich nicht viel zu sagen, es sollte für mehrere Konfigurationen funktionieren. Ob jetzt IPC mit SoftPLC, oder ohne SoftPLC und dafür mit einer eigenständigen 1500er PLC.
Was die Schnittstelle zwischen Runtime und z.B. "Windows" betrifft habe ich leider keine Erfahrung, vielleicht kann mir jemand helfen etwas Licht ins Dunkel zu bringen.
 
Für mich stellt sich die Frage, wo der xml-Parser am Besten aufgerufen werden soll, auf der Windowsseite oder im TIA-Portal. Gibt es vielleicht TIA-seitig bereits einen XML-Parser? Einen JSON-Parser habe ich bereits gefunden, aber leider keinen für xml-Dateien.
Was meinst Du mit "im TIA-Portal"? Meinst Du einen Baustein, den Du dann auf eine PLC runterladen kannst?
Die Antwort dazu wäre NEIN.

Ein XML Parser auf einem Embedded Gerät ist grundsätzlich eine schlechte Idee. XML ist 100-mal komplexer als JSON. Einen XML Parser zu schreiben, der funktional einigermaßen vollständig ist UND auch noch sicher ist, ist eine Kunst. Selbst Microsoft hat bei msxml bis zur Version 6 gebraucht, bis das Ding einigermaßen konform zur Spezifikation war und einigermaßen sicher. Sowas läuft besser auf einem PC als auf einer Steuerung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja so war mein Gedanke.
Oke, ich muss also einen Parser auf der "Werksseite", also am PC verwenden und übertrage die entsprechenden Daten dann auf die PLC in einen DB. Würdest du dann für die Übertragung OPC UA verwenden?
Ich habe gelesen, dass es bereits fertige Parser gibt die z.B. in Java programmiert sind. Kann ich die Parser mit jeglichen XMLs füttern, oder brauch ich einen der auf meine XML zugeschnitten ist?
Danke für deine Antwort!
 
Zu Kommunikation: Dazu bräuchte ich mehr Informationen. Wie oft muss das übertragen werden? Wie groß sind die Daten? Sind sie "schön strukturiert" oder nur eine Bytewurst?

Zu XML Parsen auf dem PC: Zu XML Parser in JAVA habe ich keine Erfahrung. "Gute" Parser sind z.B. die von Microsoft, also MSXML6 falls man in C/C++ programmiert und die XML Parser von .NET / .NET Framework wenn man in Visual Basic oder C# programmiert. Sowas wie libxml2 oder Xerces würde ich nur einsetzen, wenn das XML aus einer sicheren Quelle kommt, also keinen Angriffsvektor darstellt. Zum XML musst Du mal fragen, ob es dafür ein XML Schema gibt. Falls ja, solltest Du Dir das Schema geben lassen und willst vermutlich die zugelieferten XML-Dateien mit Schemaprüfung einlesen. Dann ist noch die Größe wichtig: Reden wir hier von ein paar Kilobyte, oder geht das in die Megabytes? Falls Kilobyte kannst Du es Dir einfach machen und die XML-Datei in ein DOM einlesen (Document Object Model) und darin herum-navigieren. Falls Megabyte, dann ist der SAX-Ansatz besser (Simple API for XML).
 
Die xml datei wird verwendet, um die Werkstücknummer des aktuellen Bauteils in der PLC zu laden, also das entsprechende Programm dazu. Dies soll über eine Anforderung (ein "Daten anfordern"-Bit) auf der Visu geschehen. Somit ist die Frage nach dem wie oft schwierig zu beantworten, weil es in der Hand des Bedieners liegt. Aber ich würde sagen, 2 max 3 Mal pro Schicht.
Genau, ich möchte das Schema der xml in einen DB übertragen und dann mit den entsprechenden Werten aus der xml befüllen. Ob das so funktioniert, weiß ich nicht, so stelle ich mir das nur vor. Die Größe der xml. beträgt 30KB.
In ferner Zukunft würde ich die Schnittstelle auch gerne dazu verwenden wollen, meine DBs zu sichern oder in eine Datenbank auszulagern usw.
Spielt aber jetzt noch keine Rolle bei diesem Projekt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du ein WinCC HMI? Was für eines? Comfort Panel? Oder was für eine Visu hast du?
Um eine Werkstücknummer aus einer nur 30 kB großen korrekt generierten xml-Datei zu extrahieren, braucht man keinen ausgefeilten xml-Parser. Das sollte man auch mit einem VBS-Skript einfach hinbekommen.
 
In der LStream Bibliothek findest du neben einem JSON Serialisierer und Deserialisierer auch Bausteine für XML.
Vielleicht genügt das ja bereits für deine Anforderung.

Ich selbst nutze die JSON Bausteine zur Kommunikation mit einem MES System, läuft bislang Problemlos.
 
Ja ich hab ein WinCC HMI (meistens ComfortPanel) und hab das schon gelesen, dass das über Skript möglich ist. Klappt das auch, wenn das HMI nicht direkt am Werksnetz hängt? Das HMI ist im Anlagennetz über PN verbunden und darf nicht ins Werksnetz.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja ich hab ein WinCC HMI (meistens ComfortPanel) und hab das schon gelesen, dass das über Skript möglich ist. Klappt das auch, wenn das HMI nicht direkt am Werksnetz hängt? Das HMI ist im Anlagennetz über PN verbunden und darf nicht ins Werksnetz.
Woher kommen die Daten denn ? Wenn aus dem Werksnetz dann muss die HMI ja irgendwie Zugriff auf die Datei oder deren Inhalt haben / bekommen ...
 
dann muss die HMI ja irgendwie Zugriff auf die Datei oder deren Inhalt haben / bekommen ...
Das gilt für jede Art Auswertung der xml-Datei. Der Auswerter muss Zugriff auf die Datei haben und das Ergebnis der SPS oder dem HMI/Visu mitteilen. Da möchte bestimmt niemand (womöglich mehrmals am Tag) Datenträger hin und her tragen.
Oder der Auswerter druckt das Ergebnis oder zeigt es am Bildschirm an und die HMI/Visu/SPS scannt das Bild ein ;) perfekte Netztrennung :D
 
Zuletzt bearbeitet:
Es hängt ein Siemens iPC im Schaltschrank (teilweise mit SoftPLC) der ans Werksnetz angebunden wird. Der iPC hat 3 Netzwerkkarten, 1x Werksnetz, 1x Profinet und die dritte für Fernwartung zusätzlich im Profinet. Vom skripten hab ich natürlich keine Ahnung, das HMI greift da dann wahrscheinlich über den PN-Pfad auf die Datei zu oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich klinke mich hier mal mit ein. Habe gerade ein ähnliches Problem.

Verwendet wird TIA V18 TP1500 Comfort und eine ET200SP CPU 1514SP-2 PN.
Ich muss Daten mit einem REA Drucker und einer Leatus Kamera austauschen beides über XML. Vom Drucker habe ich die Beschreibung schon. Kamera und Drucker sind noch nicht vorhanden und werden vom Kunden gestellt bzw über den Kunden bezogen.
Hab schon ein bisschen mit der LStream Bibliothek getestet. Ist von der Funktion auch soweit so gut.
Mit VBS-Skript hab ich so gut wie keine Erfahrung.
Der Plan war eigentlich das auf der SPS laufen zu lassen. Benötige nur einen Teil der Funktionalität. Ist halt trotzdem noch viel "Handarbeit" nötig.
Wie viel einfacher wäre das auf dem ComfortPanel mit VBS zu realisieren?
 
Der Plan war eigentlich das auf der SPS laufen zu lassen. Benötige nur einen Teil der Funktionalität. Ist halt trotzdem noch viel "Handarbeit" nötig.
Wie viel einfacher wäre das auf dem ComfortPanel mit VBS zu realisieren?
Die in einer SPS verfügbaren StringFunktionen sind meist recht "sparsam" im Vergleich zu denen in VBS.
Wenn unbedingt in der SPS bearbeiten erforderlich sein sollte, dann würde ich zunächst darüber nachdenken, in der SPS entsprechende, gut handhabbare StringFunktionen zu realisieren.
Ob es aber sinnvoll ist, ein zyklisches Programm mit TextBearbeitung aufzublähen ... ich kann es beim besten Willen nicht auf die Schnelle über den Daumen peilen, ohne realitätsnahe Tests zu unternehmen.
Wahrscheinlich würde ich zunächst den VBS-Weg einschlagen. Da kann man mit den verfügbaren Mitteln ziemlich direkt dazu übergehen, die Funktionalität umzusetzen. Falls man danach noch den Wunsch verspürt, die SPS damit zu beauftragen, hat man schonmal eine gute Vorlage, die man umarbeiten kann.
 
Noch mal eine Frage, kann ich überhaupt eine TCP/IP Verbindung vom ComfortPanel aus aufbauen. Habe dazu nichts gefunden.
Von der Gegenstelle hab ich nur IP-Adresse und Port. Dort schicke ich Daten in XML dann hin.
Die Alternative wäre die Daten auf dem HMI ins XML Format bringen und dann von der SPS aus zu senden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren

Das ist das einzige was ich bei einer schnellen Schlagwortsuche gefunden hab.. aber ich glaube nicht.
XML ist echt kein dankbares Format.

Eventuell über einen IPC mit einer Runtime möglich, sodass der IPC die Daten verarbeiten kann und das dann an die SPS zu übertragen
 
Ich klinke mich hier mal mit ein. Habe gerade ein ähnliches Problem.
Noch mal eine Frage, kann ich überhaupt eine TCP/IP Verbindung vom ComfortPanel aus aufbauen. (...)
Von der Gegenstelle hab ich nur IP-Adresse und Port. Dort schicke ich Daten in XML dann hin.
Die Alternative wäre die Daten auf dem HMI ins XML Format bringen und dann von der SPS aus zu senden.
Hallo, hier im Thread geht es um Auswertung von xml-Dateien. Das geht mit Comfort Panels und VBS. Comfort Panels können aber nicht TCP-Verbindungen zu beliebigen Ports von beliebigen Geräten aufbauen, um da irgendwie formatierte Daten(-Streams) abzuholen, womöglich noch mit einem Handshake-Protokoll. Das kann aber eine SPS. SPS sind aber nicht dafür gedacht, großartig Textverarbeitung und -analyse zu betreiben.
Vermutlich wirst du die Daten mit der SPS abholen müssen. Für die Verarbeitung und Analyse kommt es darauf an, wieviele Daten das sind. Bedenke dass eine SPS zyklisch arbeitet und ggf. die Aufgabe in viele Teilschritte (z.B. 1 Zeile je Zyklusdurchlauf) zerlegt werden müsste.
Wie groß sind denn deine Daten, die du da verarbeiten willst?
 

Das ist das einzige was ich bei einer schnellen Schlagwortsuche gefunden hab.. aber ich glaube nicht.
XML ist echt kein dankbares Format.

Eventuell über einen IPC mit einer Runtime möglich, sodass der IPC die Daten verarbeiten kann und das dann an die SPS zu übertragen
Das funktioniert, ich hatte letztes Jahr ein Projekt. Dort ging die Kommunikation genau so.
Mit dem Unterschied meine Daten kamen von der SPS ins HMI. Dort habe ich dann über den Netzwerkzugriff & VBS XML Dateien erzeugt und auf den IPC übertragen.
Wenn ich Dateien öffnen und schreiben kann sollte ja der umgekehrte Weg (öffnen & lesen) kein Problem sein.
 
Zurück
Oben