FB_CMA_ReadCsvFile

Auslesen einer CSV Datei und sequenzielle Ausgabe der Daten in einen SPS Puffer (Array).

Mit dem TwinCAT 3 Scope können Daten aufgezeichnet, angezeigt und abgespeichert werden. Ein mögliches Speicherformat ist CSV. So können Signaldaten in einer CSV Datei abgelegt werden und später mit dem FB_CMA_ReadCsvFile erneut eingelesen werden. Die hiermit eingelesenen Signaldaten können als alternative Quelle von Eingangsdaten einer Instanz von FB_CMA_Source und somit der Condition Monitoring Analysekette übergeben werden.

Ein Beispiel zur Verwendung des Funktionsbausteins finden Sie hier: Schädigungsüberwachung.

Ein weiteres Beispiel finden Sie am Ende dieser Seite.

Ein- und Ausgänge

Eingangsparameter

VAR_INPUT
    bExecute        : BOOL := TRUE;       // starts execution (on rising edge)
    bAbort          : BOOL;               // aborts execution (after finishing current ADS communication) 
    sNetId          : T_AmsNetId := '';   // TwinCAT system network address (could be kept empty for local host)
    tAdsTimeout     : TIME := T#1S;       // ADS timeout (only 1 second as condition for a fast data transmission)
    sFileName       : T_MaxString := '';  // CSV source file path and name (located on the system with the specified Net Id)
    sSeparator      : STRING(2) := '$T';  // CSV field separator [e.g. tab '$T' or comma ',' or semicolon ';' or colon ':' or blank ' ']
    nHeaderLines    : UDINT := 0;         // Number of lines in the CSV file which belongs to the header. Data start after header lines.
    bColumn         : BOOL := TRUE;       // select whether the data is placed as column (e.g. TcScope CSV file) or as line
END_VAR
VAR_IN_OUT
    aBuffer         : ARRAY[*] OF LREAL;  // buffer with individual length (do not switch the buffer during one execution)
END_VAR

Ausgangsparameter

VAR_OUTPUT
    bBufferFull     : BOOL;     // signals that aBuffer is fully filled
    nReadRecords    : UDINT;    // shows the number of records saved to aBuffer
    bBusy           : BOOL;     // TRUE if execution is active
    bError          : BOOL;     // TRUE if an error occurred
    hrErrorCode     : HRESULT;  // '< 0' = error; '> 0' = info; '0' = no error/info
    ipErrorMessage  : I_TcMessage := fbErrorMessage;    // shows detailed information about occurred errors,warnings and more
END_VAR

Beispiel

Das Beispiel zeigt die Verwendung des FB_CMA_ReadCsvFile. Hierbei wird eine große Pufferlänge des bei aBuffer angegebenen Puffers angenommen, was die Auslagerung in eine separate Task begünstigt. Der Puffer wird über das Prozessabbild an die eigentliche SPS Task übergeben und steht dort als Prozessabbildeingang, analog zu einer Oversampling-Klemme, zur Verfügung.

Download des Sample: ReadCsvFile_Sample