Skip to main content

Beispiel: Verwenden der Bibliothek CSV Utility SL

Produkt: CODESYS IIOT Libraries SL

. Lesen einer CSV-Datei:
  • Im Ordner CSVReader befinden sich die Komponenten für das Lesen der CSV-Dateinen.

  • Die Initialisierung und die Übergabe des Dateipfades erfolgt über den Funktionsbaustein CSVReaderInit.

  • Die Werte der CSV-Datei können einzeln, zeilenweise oder komplett gelesen werden. Das Lesen der Werte erfolgt über die Funktionsbausteine NextLine, NextElement oder ReadAll.

  • Die Verwendung wird in dem Beispielprojekt CSV Utility Examples.project in der Applikation CSVReaderExample veranschaulicht.

    Die maximale Elementlänge muss größer oder gleich der maximalen Spaltenlänge der CSV-Datei sein.

. Schreiben einer CSV-Datei:
  • Im Ordner CSVWriter befinden sich die Komponenten für das Schreiben von CSV-Dateien.

  • Das Speichern der Daten erfolgt in drei Schritten:

    • Im ersten Schritt wird die Bibliothek initialisiert. Dabei wird der Pfad und der Dateiname übergeben.

    • Im zweiten Schritt werden die Daten in einem Puffer abgelegt.

    • Im dritten Schritt wird der Puffer als CSV-Datei geschrieben.

Beschreibung

Das Beispiel beschreibt, wie Sie die Bibliotheksbausteine in einer Applikation verwenden können.

Klassisch prozedurale Programmierung

Die Funktionsbausteine für die klassische funktionsbausteinorientierte Programmierung liegen im Ordner FunctionBlock.

Die Funktionsbausteine in diesem Ordner sind für eine asynchrone Verarbeitung ausgelegt. Sie wurden abgeleitet von dem Funktionsbaustein CBM.ETrigA .

Zu jedem Funktionsbaustein wurde zusätzlich ein Visualisierungsobjekt angelegt, das in weiteren Projekten verwendet werden kann.

Ein Beispiel dazu ist im Projekt CSV Utility Examples.project in der Applikation CSVWriterCFCExample zu finden.

Initialisierung: Erfolgt über den Funktionsbaustein Init. Hier kann der Speicherpfad und der Dateiname übergeben werden.

Hinzufügen von Werten: Werte können über die Funktionsbausteine AddXXX in den Puffer geschrieben werden. Eine neue Zeile kann über den Baustein NewLine hinzugefügt werden. Eine neuen Datei wird mit NewFile angelegt.

Speichern: Das Speichern des Puffers erfolgt über den Baustein WriteFile. Die Werte werden im Standardformat des jeweiligen Datentyps geschrieben.

Visualisierungen: Zu jedem Funktionsbaustein existiert eine Visualisierung der Ein- und Ausgänge.

Verwendung der Bausteine

Alle Funktionsbausteine im Ordner FunctionBlocks reagieren auf eine ansteigende Flanke am Eingang xExecute.

Bitte beachten Sie, dass diese Operationen asynchron ausgeführt werden und die Ausgänge xDone, xError und eError entsprechend abgefragt werden müssen. Die Abarbeitung muss nicht in einem Zyklus erfolgen!

Objektorientierte Programmierung

Im Ordner Objects liegen die Funktionsbausteine und Interfaces für die objektorientierte Programmierung.

Ein Beispiel dazu ist im Projekt CSV Utility Examples.project in der Applikation CSVWriterSTExample zu finden.

Der Funktionsbaustein CSVWriter stellt grundlegende Methoden zum Speichern von CSV Dateien zur Verfügung.

Initialisierung: Zu Beginn muss die InitSave-Methode aufgerufen werden, um eine neue Datei anzulegen oder eine vorhandene Datei zu öffnen.

Hinzufügen von Werten: Beim Aufruf einer der Add-Methoden wird der Wert in den Puffer geschrieben. Eine neue Zeile wird angehängt, sobald die entsprechende Methode aufgerufen wird. Wenn der uffer vollgeschrieben ist, wird ein Fehler zurückgegeben. Sobald Daten gespeichert wurden, besteht wieder Platz für neue Werte.

  • AddXXX: Fügt Daten am Ende des Puffers ein

  • NewLine: Hängt eine neue Zeile an

Speichern:

  • Save: speichert den Wert des Puffers als CSV-Datei

Weitere Methoden:

  • GetFileSize: Gibt die Größe der aktuellen Datei zurück

  • NewFile: Erzeugt eine neue Datei, entweder mit einem gegebenen oder mit einem automatisch generierten Namen

Fehler: Alle Methoden besitzen ein Fehlerfeld, um einen mögliche Fehler desTyps CSV_ERROR zu speichern

Weitere Informationen

Das Beispielprojekt CSV Utility SL Examples.project enthält eine Beispielapplikation zum CSVReader und zwei Beispielapplikationen zum CSVWriter.

Applikation CSVReaderExample

Das Beispiel zeigt die drei Möglichkeiten, wie Werte einer CSV Datei gelesen werden können. In dem Programm Prog wird die Verwendung der Funktionsbausteine CSVReaderInit, NextElement, ReadAll und NextLine veranschaulicht. Der Inhalt der Datei CSVReader.csv wird in einer Visualisierung dargestellt.

Tipp

Zum Testen der Beispiele auf einer CODESYS Control kann die CSV-Datei CSVReader aus dem Zielverzeichnis der Installation in das Verzeichnis c:\temp kopiert werden.

Applikation CSVWriterCFCExample

Dieses Beispiel zeigt anhand eines CFC-Beispiels, wie die Funktionsbausteine der Bibliothek CSVWriter verwendet werden können. Dabei wird auch die Verwendung der integrierten Visualisierung demonstriert.

Funktionsweise:

  • Das Programm WriteValues erzeugt eine CSV -Datei im Ordner "c:/temp/CSVWriterCFCExampleData.csv".

  • Das Schreiben der Datei wird über die Visualisierung beim Klick auf den Button Click here to add angestoßen.

  • Die Initialisierung erfolgt über den Baustein CSV.Init. Der Pfad und der Dateiname werden hier direkt übergeben.

  • Die Bausteine AddWord, AddString und NewLine demonstrieren das Hinzufügen von Werten zum internen Puffer.

  • Der Counter ctu zählt bei jedem Event die Zeilennummer hoch. Nach dem Hinzufügen einer neuen Zeile werden die Werte über den Funktionsbaustein WriteFile in eine CSV Datei geschrieben.

Applikation CSVWriterSTExample

Dieses Beispiel zeigt, wie Variablenwerte über einen objektorientierten oder der sequentiellen Weg in eine CSV-Datei geschrieben werden können. Jeder Ablauf wird in zwei Tasks ausgeführt. Eine Task schreibt die Werte in den Puffer und die andere speichert die Daten aus dem Puffer in die Datei.

Funktionsweise:

  • ObjectOriented_Save (Objektorientiertes Speichern)

    Dieses Programm ruft die Methode Save von DataObject auf, in der der Speichervorgang implementiert ist.

  • ObjectOriented_Write (Objektorientiertes Schreiben)

    Dieses Programm ruft die Methode Write von DataObject auf, in der der Schreibvorgang implementiert ist.

  • DataObject

    Dieser Funktionsblock implementiert das Interface ICSVObject. Die Methode Write beinhaltet die lokalen Variablen, die später gespeichert werden. Für jeden Datentyp wird die entsprechende AddXXX-Methode aufgerufen. Nach einer gewissen Anzahl von Zeilen wird eine neue Datei mit anderen Werten erstellt. Sobald ein Fehler auftritt, wird der Status Error erreicht. Daraufhin wird nichts mehr geschrieben. Die Methode Save implementiert den Speichervorgang. Zu Beginn wird die Methode InitSave der Funktionsbaustein-Instanz CSVWriter aufgerufen. Danach muss nur noch die Methode Save aufgerufen werden.

    Um die folgenden Programme zu aktivieren, müssen die POUs in den Tasks geändert werden.

  • Sequential_Save (Sequentielles Speichern)

    Der Speichervorgang muss ebenso mit der Methode InitSave gestartet werden. Nachdem die CSV-Datei eine bestimmte Größe erreicht hat, wird eine Neue erzeugt. Wird kein Dateiname angegeben, so wird der bestehende Name mit angehängter Nummerierung verwendet.

  • Sequential_Write (Sequentielles Schreiben)

    Es werden unterschiedliche Variablen in den Puffer geschrieben. Ist dieser voll, wird der Fehler EndOfBuffer zurückgegeben. Im Gegensatz zum obigen Schreiben wird diesmal der Fehler ignoriert und der Puffer weiter beschrieben. Somit gehen einige Daten verloren, aber das Programm läuft weiter. Sobald der nächste Speichervorgang gestartet wird, ist der Puffer wieder frei.

Systemvoraussetzungen und Einschränkungen

Programmiersystem

CODESYS Development System Version 3.5.18.0 oder höher

Laufzeitsystem

Alle

Hinweis: Verwenden Sie das kostenlos im CODESYS Store International erhältliche Projekt Device Reader, um von der Steuerung unterstützten Funktionen zu ermitteln.

Zusatzkomponenten

-

Hinweis

_example_icon.png DOWNLOAD Projekte