F_FormatArgToStr

F_FormatArgToStr 1:

Format-Hilfsfunktion. Diese Funktion wird intern von dem FB_FormatString-Funktionsbaustein benutzt. Mit dieser Funktion kann eine Variable vom Typ T_Arg entsprechend der Formatspezifikation in einen  formatierten String konvertiert werden.

FUNCTION F_FormatArgToStr  : UDINT

VAR_INPUT
    bSign       : BOOL;         (* Sign prefix flag *)
    bBlank      : BOOL;         (* Blank prefix flag *)
    bNull       : BOOL;         (* Null prefix flag *)
    bHash       : BOOL;         (* Hash prefix flag *)
    bLAlign     : BOOL;         (* FALSE => Right align (default), TRUE => Left align *)
    bWidth      : BOOL;         (* FALSE => no width padding, TRUE => blank or zeros padding enabled *)
    iWidth      : INT;          (* Width length parameter *)
    iPrecision  : INT;          (* Precision length parameter *)
    eFmtType    : E_TypeFieldParam;    (* Format type field parameter *)
    arg         : T_Arg;              (* Format argument *)
END_VAR
VAR_IN_OUT
    sOut        : T_MaxString;
END_VAR

bSign: Das Vorzeichen-Flag.

bBlank: Das Leerzeichen-Flag.

bNull: Das Null-Flag.

bHash: Das Hash-Prefix-Flag.

bLAlign: Das Ausrichtungs-Flag (TRUE=left align).

bWidth: Wenn TRUE, dann wird der iWidth-Parameter ausgewertet, sonst nicht.

iWidth: Width-Parameter.

iPrecision: Precision-Parameter.

eFmtType: Type-Parameter.

arg: Das zu formatierende Argument. 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_SINT, F_INT, F_DINT, F_USINT, F_UINT, F_UDINT, F_STRING, F_REAL, F_LREAL.

 

sOut: Beim Erfolg liefert diese Variable den formatierten Ausgabestring.

 

Rückgabeparameter

Bedeutung

0

Kein Fehler

<> 0

Fehler. Fehlerbeschreibung finden Sie unter: Format Fehlercodes

 

Beispiele in ST:

Formatieren einer BYTE-Variablen als Binärstring.

PROGRAM MAIN
VAR
    s1      : T_MaxString;
    s2      : T_MaxString;
    s3      : T_MaxString;
    s4      : T_MaxString;
    s5      : T_MaxString;
    errID   : UDINT;
    varByte : BYTE;
    double  : LREAL;
    L1      : INT;
    L2      : INT;
    L3      : INT;
    L4      : INT;
    L5      : INT;
END_VAR

 

varByte := 128;
errID := F_FormatArgToStr(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 20, 8, TYPEFIELD_B, F_BYTE( varByte ), s1 );
errID := F_FormatArgToStr(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, 20, 8, TYPEFIELD_B, F_BYTE( varByte ), s2 );
errID := F_FormatArgToStr(FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, 20, 8, TYPEFIELD_B, F_BYTE( varByte ), s3 );
errID := F_FormatArgToStr(FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, 20, 8, TYPEFIELD_B, F_BYTE( varByte ), s4 );
L1 := LEN( s1 );
L2 := LEN( s2 );
L3 := LEN( s3 );
L4 := LEN( s4 );

Das Ergebnis:

s1 =     '10000000'

s2 =     '            10000000'

s3 =     '10000000            '

s4 =    '2#10000000         '

L1 = 8

L2 = 20

L3 = 20

L4 = 20

 

Formatieren einer LREAL-Variablen.

double := 12345.6789;
errID := F_FormatArgToStr( FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 20, 8, TYPEFIELD_F, F_LREAL( double ), s1 );
errID := F_FormatArgToStr( FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, 20, 8, TYPEFIELD_F, F_LREAL( double ), s2 );
errID := F_FormatArgToStr( FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, 20, 8, TYPEFIELD_F, F_LREAL( double ), s3 );
errID := F_FormatArgToStr( FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, 20, 8, TYPEFIELD_F, F_LREAL( double ), s4 );
errID := F_FormatArgToStr( TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, 20, 8, TYPEFIELD_F, F_LREAL( double ), s5 );
L1 := LEN( s1 );
L2 := LEN( s2 );
L3 := LEN( s3 );
L4 := LEN( s4 );
L5 := LEN( s5 );

Das Ergebnis:

s1 =     '12345.67890000'

s2 =     '      12345.67890000'

s3 =     '12345.67890000      '

s4 =    '00000012345.67890000'

s5 =     '+12345.67890000     '

L1 = 14

L2 = 20

L3 = 20

L4 = 20

L5 = 20

 

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.9.0 Build >1021

PC or CX (x86)

TcUtilities.Lib

TwinCAT v2.10.0 Build >= 1301

CX (ARM)