StringToLogFile, salva stringa in un file di log

Home / Knowledge Base / Manualistica / Programmazione IEC 61131-3 / Gestione storicizzazione dati / StringToLogFile, salva stringa in un file di log

Questo blocco funzione effettua la scrittura di una stringa in un file su disco, ogni riga viene terminata con CR-LF. Il FB ha esecuzione atomica, può essere eseguito come una funzione.

Eseguendo il FB viene salvata su disco la stringa puntata da LData per la dimensione definita in LDLength. Nel caso sia definito il campo Header la stringa puntata verrà scritta nel file anteposta alla stringa di log.

In caso di errore esecuzione viene attivata per un loop di programma l'uscita Fault.

Function block
CODESYS: Non disponibile
LogicLab: eLLabLogLib

Filename (@STRING) Percorso e nome del file in cui è eseguita la scrittura (es.: 'C:/MyFile.txt').

Mode (DINT) Modo scrittura dati su file. 0:Ascii, 1:AsciiHex, 2:Hex.

Header (@STRING) Puntatore a stringa header che verrà scritta nel file prima della stringa log. se eNULL non viene scritta nessuna stringa.

LData (@STRING) Puntatore a stringa da scrivere nel file.

LDLength (UDINT) Definisce lunghezza stringa di log da scrivere nel file. Se 0 viene utilizzato il valore di lunghezza stringa (Solo se  stringhe Ascii).

Fault (BOOL) Attivo per un loop su errore esecuzione comando.

Errori

In caso di errore si attiva l'uscita Fault, eseguendo immediatamente dopo la funzione SysGetLastError è possibile rilevare il codice di errore. Fare riferimento alla tabella seguente per la descrizione.

Esempi

Come utilizzare gli esempi.

ST_StringToLogFile: Viene dimostrato l'utilizzo del FB ogni volta che da debug si attiva LogOn viene salvato un record di log nel file definito.

ST_MontlyLog: Attivando da debug le variabili ELog[x] viene scritto un record di log in un file. Ogni scrittura è accodata alla scrittura precedente.

DataLoggerOnCSVFile: Ogni 5 minuti viene eseguita la scrittura di un record di dati in un file CSV. Il file potrà essere così facilmente importato in Excel per un esame dei dati.

LogicLab (Ptp136)
PROGRAM ST_StringToLogFile
VAR
    LogOn : BOOL; (* Log command *)
    i : UDINT; (* Auxiliary variable *)
    Logger : StringToLogFile_v3; (* Data logger *)
    DFormat : DateTimeFormat; (* Date/Time format *)
    Header : STRING[ 32 ]; (* Header string *)
END_VAR

// *****************************************************************************
// Every time is set by debug the LogOn variable a log string is written on the
// defined file.
//
// The log row is like the following.
// 07/04/21 08:20:39|Example| Log string[0D][0A]
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // Execute program initialization.

    IF (SysFirstLoop) THEN
        Logger.Mode:=1; //AsciiHex mode
        Logger.LDLength:=0; //Log data length
        Logger.Header:=ADR(Header); //Header string
        Logger.Filename:=ADR('C:/Log.txt'); //Log file
    END_IF;

    // -------------------------------------------------------------------------
    // DATA SAMPLE
    // -------------------------------------------------------------------------
    // Log command.

    IF NOT(LogOn) THEN RETURN; END_IF;
    LogOn:=FALSE; //Log command
    DFormat.EpochTime:=SysGetUTCDateTime(TRUE); //Epoch time UTC

    // Create the log header with Date/Time and a label.

    DFormat(pFormat:=ADR('d/m/y H:i:s'), pRString:=ADR(Header), RSLength:=SIZEOF(Header)); //06/04/21 15:56:59
    i:=SysCVsnprintf(ADR(Header), SIZEOF(Header), ADR('|%s| '), STRING_TYPE, ADR('Example'));

    // Execute the log.

    Logger.LData:=ADR('Log string$r$n'); //Data to log
    Logger(); //Write data to file

// [End of file]
LogicLab (Ptp136)
LogicLab (Ptp181)

Ti è stato utile questo articolo ?