Freitag, 15. November 2013

Fehler beim Textexport mit dem Text Distributor von WinCC 7 und WinCC 7.2

Für den Textexport aus WinCC 7 haben wir bei DCC global eigene VB-Scripte geschrieben, damit der Text in beliebigen Sprachen exportiert werden kann. WinCC 7.0 hat beim Im- und Export eine signifikante Einschränkung. Es können nur Sprachen aus dem gleichen Sprachraum und Englisch exportiert werden. Mit den DCC-eigenen Skripten existiert diese Beschränkung nicht. So exportieren wir mit unseren eigenen Skripten bei WinCC 7 beliebige Sprachkombinationen. Jetzt haben wir in WinCC 7.2 den Textexport mit dem Text Distributor wieder einmal verwendet und sind auf einen Fehler im Exportformat gestoßen, der auch in WinCC 7.0 enthalten ist.

Der Fehler tritt durch die fehlende Verdoppelung von Anführungszeichen beim Export auf. Texte werden in Anführungszeichen gestellt, wenn das Spaltentrennzeichen in dem Text vorhanden ist. Das Spaltentrennzeichen ist bei csv-Dateien das Semikolon ";" und bei txt-Dateien das Tabulatorzeichen (0x09). Mit diesem Wissen kann ein Text zusammengebaut werden, der beim Ex- und folgenden Import in WinCC zu Fehlern führt.


Beispiel für den Export in csv-Dateien

In einem Static Text-Objekt wird der folgende Text geschrieben:
Text1";"Text2
Es beginnt mit einem beliebigem Text, dann folgt die Kombination Anführungszeichen, Semikolon, Anführungszeichen und dann wieder ein beliebiger Text.

Beim Export mittels des Text Distributors wird aus dem obigen Text dann
"Test1";"Text2"
Die äußeren Anführungszeichen sind durch den Export ergänzt worden. In einer csv-Datei sind aus dem einen Text damit zwei Spalten, getrennt durch das Semikolon geworden.


Beispiel für den Export in txt-Dateien

Für eine txt-Datei wird ein ganz ähnlicher Text, wie bei einer csv-Datei zusammengebaut. Als Spaltentrennzeichen fungiert bei txt-Dateien das Tabulatorzeichen. Das Tabulatorzeichen (→) kann über die Tastatur mit <STRG><TAB> eingegeben werden. Der Text lautet:
Text1"→"Text2
Im WinCC Graphics Designer wird das Zeichen "→" nicht angezeigt, sondern nur ein Leerraum. Beim Export wird aus dem obigen Text
"Text1""Text2"
Wieder sind die äußeren Anführungszeichen durch den Export ergänzt worden. In der txt-Datei sind damit wieder zwei Spalten entstanden.


Welche WinCC Versionen sind betroffen?

Der Fehler tritt in allen WinCC 7.0 WinCC 7.2 Versionen auf.


Warum ist der Fehler kritisch?

Die exportierten csv- und txt-Dateien lassen sich mit WinCC 7.2 mittels Text Distributor nicht mehr importieren, es tritt ein Fehler auf. Die folgende Hardcopy zeigt den Fehler beim Import aus txt-Dateien.



Lösung

Für eine Lösung bei den txt-Dateien sind zwei unterschiedliche Vorgehensweisen denkbar:
a) Das Spaltentrennzeichen (<Tab>) wird wie ein Zeilenumbruch kodiert, z.B. mit {TAB} und Texte mit <Tab>-Zeichen werden nicht mehr mit Anführungsstrichen umgeben
Bsp.: Text1"{TAB}"Text2
oder b) die Anführungszeichen innerhalb von Texten werden verdoppelt, einfache Anführungszeichen sind dann Feldbegrenzer, wenn ein Spaltentrennzeichen oder Feldbegrenzer im Text vorkommt.
Bsp.: "Text1""→""Text2"

Für eine Lösung bei den csv-Dateien bietet sich das folgende Verfahren an: Die Anführungszeichen werden innerhalb von Texten verdoppelt. Der obige Text würde dann in der csv-Datei wie folgt geschrieben:
"Text1"";""Text2"

Für beide Lösungsansätze muss der Softwarehersteller, also Siemens aktiv werden.