FB_FormatString2

FB_FormatString2 1:

Mit dem Funktionsbaustein können bis zu 10 Argumente (ähnlich wie bei fprintf) entsprechend der Formatspezifikation (z. B. '%+20.5f' oder 'Measure X: %+.10d, Y: %+.10d') in einen String konvertiert und formatiert werden. Die Formatierung wird im gleichen SPS-Zyklus durchgeführt. D. h. der Ausgabestring ist sofort nach dem Aufruf des Funktionsbausteins verfügbar.

Die Größen von Format-String und Ausgabestring sind, entgegen dem Funktionsbaustein FB_FormatString, nicht auf 255 Zeichen begrenzt. Jedes Argument ist jedoch limitiert auf eine Darstellung von maximal 250 Zeichen. Wenn die Zeichenanzahl überschritten wird oder der Ausgabestring zu klein sein für die formatierte Zeichenkette, so gibt der Funktionsbaustein einen Fehler aus.

VAR_INPUT

VAR_INPUT
    pFormatString : POINTER TO STRING;
    arg1          : T_Arg;
    arg2          : T_Arg;
    arg3          : T_Arg;
    arg4          : T_Arg;
    arg5          : T_Arg;
    arg6          : T_Arg;
    arg7          : T_Arg;
    arg8          : T_Arg;
    arg9          : T_Arg;
    arg10         : T_Arg;
    pDstString    : POINTER TO STRING;
    nDstSize      : UDINT;
END_VAR

pFormatString: Zeiger auf die Formatspezifikation als String. Die Adresse muss bei jedem Aufruf des Funktionsbausteins zugewiesen werden. Bei der Zuweisung kann der Operator ADR() verwendet werden.

arg1 bis arg10: Argumente, die formatiert werden sollen (Typ: T_Arg). Folgende Hilfsfunktionen können benutzt werden, um SPS-Variablen unterschiedlichsten Typs in den benötigten Datentyp T_Arg zu konvertieren: F_BYTE, F_WORD, F_DWORD, F_LWORD, F_SINT, F_INT, F_DINT, F_LINT, F_USINT, F_UINT, F_UDINT, F_ULINT, F_STRING, F_REAL, F_LREAL.

pDstString: Zeiger auf die resultierende STRING-Variable. Bei Erfolg wird hier die formatierte Zeichenkette geschrieben. Die Adresse muss bei jedem Aufruf des Funktionsbausteins zugewiesen werden. Bei der Zuweisung kann der Operator ADR() verwendet werden.

nDstSize: Größe der resultierenden STRING-Variablen in Bytes. Bei der Zuweisung kann der Operator SIZEOF() verwendet werden.

VAR_OUTPUT

VAR_OUTPUT
    bError : BOOL;
    nErrId : UDINT;
END_VAR

bError: TRUE, wenn bei der Formatierung ein Fehler aufgetreten ist.

nErrId: Liefert bei einem gesetzten bError-Ausgang den Format-Fehlercode.

Beispiel

PROGRAM MAIN
VAR
    fbFormat   : FB_FormatString2;
    sFormat    : STRING := 'Measure X: %+.10d, Y: %+.10d';
    iY         : DINT;
    iX         : DINT;
    bError     : BOOL;
    nErrID     : UDINT;
    sOut       : STRING(600);
END_VAR
iX := iX + 1;
iY := iY + 1;
fbFormat( pFormatString := ADR(sFormat), arg1 := F_DINT( iX ), arg2 := F_DINT( iY ), pDstString := ADR(sOut), nDstSize := SIZEOF(sOut), bError => bError, nErrID => nErrID );

Ergebnis:

sOut = 'Measure X: +0000000130, Y: +0000000130'

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.4022

PC oder CX (x86, x64, ARM)

Tc2_Utilities (System) >= 3.3.35.0