Zum Hauptinhalt springen

CSV Writer

Beschreibung

Das "csvwriter" Modul konsumiert Kanaldaten und schreibt diese Daten in Comma Separated Values (CSV) Dateien.

Verwendete Schnittstellen und Protokolle

  • KEINE

JSON-Konfiguration

Im folgenden Abschnitt soll die gesamte JSON-Konfiguration des Moduls beschrieben und die einzelnen Parameter erläutert werden.

Beispielkonfiguration (minimal)

{
"module":"CSVWriter",
"factory":"csvwriter",
"config":{
"channels":[
{
"name":"SomeChannelName"
}
]
}
}

Beispielkonfiguration (maximal)

{
"module":"CSVWriter",
"factory":"csvwriter",
"config":{
"fileName": "/sde/<tag>/<date>/<date>_<time>.csv",
"tag":"preview",
"forceFileName": false,
"pollingIntervalMs":1000,
"maxFileDurationMs":900000,
"timeoutMs":15000,
"gridUs":10,
"fieldSep":",",
"structureSep":" ",
"decimalSep":".",
"timeFormat":"<date>T<time>.<us>Z",
"timeHeader":"Date/Time",
"timeDescription":"UTC",
"channels":[
{
"name":"SomeChannelName",
"field":"SomeColumnTitle",
"description":"SomeColumnSubtitle",
"defaultValue":"SomeDefaultValue",
"format":{
"fieldWith":8,
"fillChar":"-",
"base":10,
"format":"g",
"precision":6
}
},
{
"name":"SomeBooleanChannelName",
"field":"SomeColumnTitle",
"description":"SomeColumnSubtitle",
"defaultValue":"SomeDefaultValue",
"format":{
"falseValue":"FALSE",
"trueValue":"TRUE"
}
}
]
}
}

Beispielkonfiguration (getriggerte Aufzeichnung)

{
"module":"CSVWriter",
"factory":"csvwriter",
"config":{

<KONFIGURATION>

"triggerChannel":"someBooleanTriggerChannel",
"triggerLeadTimeMs":30000,
"triggerFollowUpTimeMs":30000,
"triggerSeparateEvents":false,

"channels":[

<SPEZIFIKATION AUFZUZEICHNENDER KANÄLE>

]
}
}

Globale Modulparameter

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
fileNameNeinSTRINGsiehe unten"/sde/"TAG"/"DATE"/"DATE"_"TIME".csv"Dateiname bzw. Struktur des Dateinamens (siehe unten)
forceFileNameNeinBOOLfalse, truefalseerzwinge konstanten spezifizierten Dateinamen
tagNeinSTRING"preview"Tag-Bezeichnung
pollingIntervalMsNeinINT1 -1000Polling Interval [ms]
maxFileDurationMsNeinINT1 -900000 (15 min)Maximale zeitliche Länge der Datei [ms]
timeoutMsNeinINT1 -15000 (15 s)Timeout, nach dem spätestens neue Zeile (unter Verwendung spezifizierter Default-Werte) in die CSV-Datei geschrieben wird [ms]
triggerChannelNeinSTRINGName eines Booleschen Triggerkanals
triggerLeadTimeMsNeinINT0 -15000 (15 s)Trigger-Vorlaufzeit
triggerFollowUpTimeMsNeinINT0 -15000 (15 s)Trigger-Nachlaufzeit
triggerSeparateEventsNeinBOOLfalse, truefalseAbschließen der aktuellen Datei und Öffnen einer neuen Datei bei überlappenden Trigger-Ereignissen
gridMsNeinINT1 -1000 (1 s)Abtastungsgitterbreite [ms] (*)
gridUsNeinINT1 -1000000 (1 s)Abtastungsgitterbreite [us] (*)
gridNsNeinINT1 -1000000000 (1 s)Abtastungsgitterbreite [ns] (*)
fieldSepNeinSTRING","Spaltenseparator-String
structureSepNeinSTRING" "Strukturseparator-String
decimalSepNeinSTRING"."Dezimalseparator-String
timeFormatNeinSTRINGsiehe unten"<date>T<time>.<ms>Z"Datums- und Uhrzeitsspezifikation
timeHeaderNeinSTRING""Datums- und Uhrzeitsüberschrift
timeDescriptionNeinSTRING""Datums- und Uhrzeitsunterüberschrift
channelsJAsiehe untenSpezifikation aufzuzeichnender Kanäle

(*) wahlweise

Spezifikation des Dateinamens 'fileName'

Der Dateiname wird hierbei über eine Pfadangabe spezifiziert, z.B.

/sde/<tag>/<date>/<date>_<time>.csv

Mögliche Variablen sind:

  • <year> (z.B. 2022)
  • <month> (z.B. 01)
  • <day> (z.B. 01)
  • <hour> (z.B. 01, 23)
  • <minute> (z.B. 01)
  • <second> (z.B. 01)
  • <msecond> (z.B. 001)
  • <date> := "<year><month><day>"
  • <time> := "<hour><minute><second>"
  • <tag> (siehe Parameter 'tag')

Konfiguration aufzuzeichnender Kanäle 'channels'

Anders, als etwa im OSF Writer Modul, wo standardmäßig sämtliche Kanäle aufgezeichnet werden, muss im CSV Writer eine Auswahl von Kanälen spezifiziert werden. Dies erfolgt über eine Liste von JSON Objekten, die wie folgt zu parametrisieren sind

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
nameJASTRINGName des smartCORE Kanals
fieldNeinSTRINGName des smartCORE KanalsSpaltenüberschrift des Kanals
descriptionNeinSTRING""Spaltenunterüberschrift des Kanals
defaultValueNeinSTRING""Default-Wert, der im Falle eines Timeouts, falls keine Kanaldaten vorliegen in die Zelle des Kanalwerts geschrieben werden soll
formatNeinsiehe untenSpezifikation bzgl. derer die Formatierung des Kanalwerts erfolgt

Konfiguration der Formatierung von Kanalwerten 'format'

Werte Boolescher Kanäle können wie folgt formatiert werden

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
trueValueJASTRINGWert, der für den Fall von wahr in die Zelle des Kanalwerts geschrieben wird
falseValueJASTRINGWert, der für den Fall von unwahr in die Zelle des Kanalwerts geschrieben wird

Alle anderen Werte können wie folgt formatiert werden

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
fieldWidthNeinINTSpaltenbreite
fillCharNeinCHARFüllzeichen
baseNeinINT2, 8, 10, 1610Basis der Zahlendarstellung
formatNeinCHAR"e", "f", "g""g"Notation der Zahlendarstellung ("e" => wissenschaftliche N., "f" => normale Darstellung, "g" => wahlweise normale oder wissenschaftliche N.)
precisionNeinINT0 -Präzision (Anzahl der Nachkommastellen)

Modul-Informationen

InformationWert
AutorenoptiMEAS Measurement and Automation Systems GmbH
seit smartCORE2.8
ModultypConsumer
AbhängigkeitenKEINE