FB_CTRL_LOG_DATA

FB_CTRL_LOG_DATA 1:

Der Funktionsbaustein ermöglicht das Erstellen eines Log-Files im *.csv Format (comma separated values), in dem maximal 10 Größen aufgezeichnet werden können. In die erste Zeile dieser Datei werden die vom Benutzer angegebenen Spaltenüberschriften geschrieben. In die folgenden Zeilen werden die Eingangsdaten in zeitlich äquidistanten Abständen geschrieben. Die einzelnen Einträge werden durch ein Komma getrennt. Mit dem Parameter tLogCycleTime wird der zeitliche Abstand der Eintragungen festgelegt. Wenn zum Beispiel tLogCycleTime := T\#2s gewählt wird, wird alle 2s ein Eintrag in die Datei geschrieben. Die erzeugten Dateien können beispielsweise mit einem Tabellenkalkulationsprogramm ausgewertet werden.

In die erste Spalte der Datei wird der Zeitstempel des Log-Eintrags in s gespeichert. In den weiteren Spalten folgen die Daten des Bausteineingangs fLogData.

FB_CTRL_LOG_DATA 2:

Wenn der Mode auf eCTRL_MODE_ACTIVE gesetzt wird, wird die Log-Datei geöffnet und es werden Einträge in die Datei geschrieben. Diese Datei bleibt solange geöffnet, bis der Mode des Bausteins auf eCTRL_MODE_PASSIVE gesetzt wird.

Bevor die Log-Datei ausgewertet werden kann, muss sie unbedingt durch ein Umschalten in den eCTRL_MODE_PASSIVE geschlossen werden. Anderenfalls ist es möglich, dass noch nicht alle Einträge in die Datei geschrieben worden sind.

Der Baustein ermöglicht es, mit und ohne einen externen Puffer zu arbeiten.

Betrieb ohne externen Puffer:

Wenn das Loggen einer Zeile gestartet ist, wird der Ausgang bBusy TRUE. Der nächste Datensatz wird erst dann geloggt, wenn der Ausgang bBusy wieder FALSE ist. Der Füllstand des internen Puffers wird am Ausgang fBufferUsage angezeigt.

Betrieb mit externem Puffer:

Der Benutzer muss einen Puffer des Typs ARRAY OF BYTES anlegen, der größer als 255 Byte ist.
Die einzelnen Meldungen werden temporär in dem externen Puffer abgelegt und dieser Puffer wird so schnell wie möglich in die Datei geschrieben. Der Füllstand des Puffers wird am Ausgang fBufferUsage angezeigt. Wenn es zu einem Pufferüberlauf kommt, wird der Baustein gestoppt und ein Fehler ausgegeben.

FB_CTRL_LOG_DATA 3:

Wenn eine Pufferadresse und eine Puffergröße ungleich Null parametriert wird, wird der externe Puffer genutzt. Ohne einen externen Puffer wird ein interner Puffer mit einer Größe von 255 Byte verwendet.

FB_CTRL_LOG_DATA 4: VAR_INPUT

VAR_INPUT
    fLogData  : T_CTRL_LOGGER_DATA;
    eMode     : E_CTRL_MODE;
END_VAR

VAR_GLOBAL CONSTANT
    nCTRL_LOGGER_DATA_ARRAY_SIZE  : UINT := 10;
END_VAR

TYPE T_CTRL_LOGGER_DATA :
    ARRAY [1..nCTRL_LOGGER_DATA_ARRAY_SIZE] OF FLOAT;
END_TYPE

Name

Typ

Beschreibung

fLogData

T_CTRL_
LOGGER_DATA

Array mit den Werten, die in das Log-File geschrieben werden.

eMode

E_CTRL_MODE

Eingang, der die Betriebsart des Bausteins festlegt.

FB_CTRL_LOG_DATA 5: VAR_OUTPUT

VAR_OUTPUT
    eState        : E_CTRL_STATE;
    bFileOpen     : BOOL
    bFileClosed   : BOOL
    fBufferUsage  : FLOAT
    bBusy         : BOOL
    eErrorId      : E_CTRL_ERRORCODES;
    bError        : BOOL;
END_VAR

Name

Typ

Beschreibung

eState

E_CTRL_STATE

State des Funktionsbausteins

bFileOpen

BOOL

Ein TRUE an diesem Ausgang signalisiert, dass die Datei erfolgreich geöffnet wurde.

bFileClosed

BOOL

Ein TRUE an diesem Ausgang signalisiert, dass die Datei erfolgreich geschlossen wurde.

fBufferUsage

FLOAT

Aktueller Füllstand des externen Puffers in Prozent

bBusy

BOOL

Ein TRUE an diesem Ausgang signalisiert, dass das Loggen einer Zeile aktiv ist.

eErrorId

E_CTRL_ERRORCODES

Liefert bei einem gesetzten bError-Ausgang die Fehlernummer.

bError

BOOL

Wird TRUE, sobald ein Fehler eintritt.

VAR_IN_OUT

VAR_IN_OUT
    stParams        : ST_CTRL_LOG_DATA_PARAMS;
END_VAR

Name

Typ

Beschreibung

stParams

ST_CTRL_LOG_DATA_PARAMS

Parameterstruktur des Log-Bausteins

stParams besteht aus den folgenden Elementen:

TYPE ST_CTRL_LOG_DATA_PARAMS:
STRUCT
    tLogCycleTime             : TIME := T#0ms;
    tTaskCycleTime            : TIME := T#0ms;
    sFileName                 : STRING;
    sNetId                    : T_AmsNetId := '';
    tFileOperationTimeou      : TIME := T#3s;
    nNumberOfColumn           : INT(1..10);
    arColumnHeadings          : ARRAY [1..10] OF STRING;
    bAppendData               : BOOL := FALSE;
    bWriteTimeStamps          : BOOL := TRUE;
    bWriteColumnHeadings      : BOOL := TRUE;
    bWriteAbsoluteTimeStamps  : BOOL := FALSE
    pLogBuffer_ADR            : POINTER TO BYTE;
    nLogBuffer_SIZEOF         : UDINT;
END_STRUCT
END_TYPE

Name

Typ

Beschreibung

tLogCycleTime

TIME

Zykluszeit, mit der Einträge in das Log-File geschrieben werden. Diese muss größer oder gleich der TaskCycleTime sein.

tTaskCycleTime

TIME

Zykluszeit, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Task-Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Zyklus aufgerufen wird.

sFileName

STRING

Name und Pfad des Log-Files, z.B.: d:\Logfile.csv

sNetId

T_AmsNetId

Das Log-File wird auf das System mit der hier angegebenen NetId geschrieben.

tFileOperation
Timeou

TIME

Timeout für alle Dateioperationen

nNumberOf
Column

INT

Anzahl der Spalten, die in die Datei geschrieben werden (maximal 10)

arColumn
Headings

ARRAY

Array aus Strings, die die Spaltenüberschriften enthalten.

bAppendData

BOOL

Wenn dieser Parameter auf TRUE gesetzt ist, wird beim erneuten Öffnen einer Datei der neue Datensatz angehängt, anderenfalls wird die Datei ohne Rückfrage überschrieben und somit der bereits bestehende Inhalt gelöscht.

bWriteTime
Stamps

BOOL

Wenn dieser Parameter auf TRUE gesetzt ist, wird in die erste Spalte der Datei der Zeitstempel der Messung geschrieben.

bWriteColumn
Headings

BOOL

Wenn dieser Parameter auf TRUE gesetzt ist, werden in die 1. Zeile der Datei die Spaltenüberschriften geschrieben.

bWriteAbsolute
TimeStamps

BOOL

Wenn dieser Parameter auf TRUE gesetzt wird, wird als Timestamp die lokale NT-Zeit verwendet. In diesem Fall beträgt die minimale LogCycleTime 5s!

pLogBuffer_ADR

POINTER TO BYTE

Adresse des externen LogBuffers – um einen Puffer zu erkennen, muss die Adresse ungleich 0 sein.

nLogBuffer_
SIZEOF

UDINT

Größe des LogBuffers - der Puffer muss ein ARRAY OF BYTE mit mindestens 256 Elementen sein. Die Größe des Puffers kann mit Hilfe des Ausgangs fBufferUsage optimiert werden.

Hinweis

Fehler beim Dateihandling

Der Parametersatz darf nur dann geändert werden, wenn die Datei geschlossen ist (bFileClosed = TRUE). Anderenfalls kann es zu Fehlern bei dem Dateihandling kommen.