Skip to main content

Conversión: STRING, WSTRING

Los operadores convierten una cadena (STRING o WSTRING) en el tipo de datos de destino especificado y devuelve un valor convertido al tipo.

Una conversión con un resultado significativo solo es posible cuando el operando coincide con el tipo de datos de destino según la norma IEC 61131-3. Este es el caso si el valor del operando corresponde a una constante válida (literal) del tipo de datos de destino.

Las cadenas convertibles contienen:

  • Número con prefijo de tipo (ejemplo: '16#FFFFFFFF')

  • Número con caracteres de agrupación (ejemplo: '2#1111_1111')

    Nota: No se acepta el carácter internacional de agrupación de pesos y medidas (espacio fino). Solo se acepta el guión bajo.

  • Número de punto flotante, también en notación exponencial (ejemplo: '9.876' o '1.2E-34')

    Nota: Los números de punto flotante no son convertibles. La coma se trata y se trunca como un carácter siguiente.

  • Especificación de hora, hora del día y fecha con prefijo y tamaño (ejemplo: 'T#2h', 'DT#2019-9-9-12:30:30.9')

  • Valores infinitos (ejemplo: '1.7E+400')

  • Personaje adicional después un número (ejemplo: '2m' o '3.14')

    Estos están truncados. Caracteres adicionales antes No se permiten varios números.

  • Espacios antes (ejemplo: '3.14')

Sintaxis de llamada: STRING_TO_<tipo de destino>(<operando>) , WSTRING_TO_<tipo de destino>(<operando>)

Operando

Tipo de datos

Descripción

Variable o literal

STRING, WSTRING

STRING, WSTRING

tabla 14. Operadores de casting: STRING/WSTRING_TO_<target type>

Operador: STRING

Operador: WSTRING

Ejemplo

Valor de retorno

Descripción

 STRING_TO___UXINT

WSTRING_TO___UXINT

__UXINT, __XINT, __XWORD

 STRING_TO___XINT

WSTRING_TO___XINT

__UXINT, __XINT, __XWORD

 STRING_TO___XWORD

WSTRING_TO___XWORD

__UXINT, __XINT, __XWORD

 STRING_TO_BIT

WSTRING_TO_BIT

BIT

STRING_TO_BOOL

WSTRING_TO_BOOL

STRING_TO_BOOL('TRUE')

STRING_TO_BOOL('true')

WSTRING_TO_BOOL("TRUE")

WSTRING_TO_BOOL("true")

TRUE

BOOL

STRING_TO_BYTE

WSTRING_TO_BYTE

Entero

STRING_TO_DATE

WSTRING_TO_DATE

STRING_TO_DATE('DATE#2019-9-9')

WSTRING_TO_DATE("DATE#2019-9-9")

D#2019-9-9

Sintaxis: D#yyyy-MM-dd

Tipo de dato: DATE

STRING_TO_DINT

WSTRING_TO_DINT

Si el tipo de datos de salida es mayor, es posible que se pierda información.

Entero

STRING_TO_DT

WSTRING_TO_DT

STRING_TO_DT('DT#2019-9-9-1:1:1.1')

WSTRING_TO_DT("DT#2019-9-9-1:1:1.1")

DT#2019-9-9-1:1:1

DT#2019-9-9-1:1:1

Sintaxis: DT#yyyy-MM-dd-hh:mm:ss

Tipo de dato: DATE

STRING_TO_DWORD

WSTRING_TO_DWORD

Entero

STRING_TO_INT

WSTRING_TO_INT

STRING_TO_INT('123abc')

WSTRING_TO_INT("123abc")

123

Entero

STRING_TO_LDATE

WSTRING_TO_LDATE

Sintaxis: LDATE#yyyy-MM-dd

Sólo se muestra el día.

Tipo de dato: DATE

STRING_TO_LDT

WSTRING_TO_LDT

Sintaxis: LDT#yyyy-MM-dd-hh:mm:ss.sss

Tipo de dato: DATE

STRING_TO_LINT

WSTRING_TO_LINT

Entero

STRING_TO_LREAL

WSTRING_TO_LREAL

STRING_TO_LREAL('1.7E+308')

WSTRING_TO_LREAL("1.7E+308")

1.7000000000000001E+308

REAL, REAL

STRING_TO_LTIME

WSTRING_TO_LTIME

STRING_TO_LTIME('LTIME#709ms551us615ns')

STRING_TO_LTIME('LTIME#1ms')

WSTRING_TO_LTIME("LTIME#1ms")

LTIME#709ms551us615ns

LTIME#1ms

Tipo de dato: TIME, LTIME

STRING_TO_LTOD

WSTRING_TO_LTOD

Sintaxis: LTOD#hh:mm:ss.sssssssss

Tipo de dato: DATE

STRING_TO_LWORD

WSTRING_TO_LWORD

STRING_TO_LWORD('16#0123456789ABCDEF')

WSTRING_TO_LWORD("16#0123456789ABCDEF")

81985529216486895

Entero

STRING_TO_REAL

WSTRING_TO_REAL

STRING_TO_REAL('1.234')

WSTRING_TO_REAL("1.234")

1.234

Al convertir desde un rango de valores más grande, es posible que se pierda información o que se devuelva un resultado indefinido.

REAL, REAL

STRING_TO_SINT

WSTRING_TO_SINT

Entero

-

WSTRING_TO_STRING

WSTRING_TO_STRING("Hello World!")

Hello World!

STRING_TO_TIME

WSTRING_TO_TIME

STRING_TO_TIME('T#5d4h3m2s')

WSTRING_TO_TIME("T#5d4h3m2s")

T#5d4h3m2s

Tipo de dato: TIME, LTIME

STRING_TO_TOD

WSTRING_TO_TOD

STRING_TO_TOD('TOD#20:15')

WSTRING_TO_TOD("TOD#20:15")

TOD#20:15:0

Tipo de dato: DATE

STRING_TO_UDINT

WSTRING_TO_UDINT

Entero

STRING_TO_UINT

WSTRING_TO_UINT

Entero

STRING_TO_ULINT

WSTRING_TO_ULINT

STRING_TO_ULINT('615')

WSTRING_TO_ULINT("615")

615

Entero

STRING_TO_USINT

WSTRING_TO_USINT

Entero

STRING_TO_WORD

WSTRING_TO_WORD

Entero

STRING_TO_WSTRING

-

STRING_TO_WSTRING('Hello World!')

"Hello World!"

WSTRING



Conversión a un valor booleano

Operador STRING_TO_BOOL:Un valor de TRUE se devuelve solo si el valor del operando es 'TRUE' o 'true'. Por otro lado, FALSE se devuelve para 'True'.

Operador WSTRING_TO_BOOL:Un valor de TRUE se devuelve solo si el valor del operando es "TRUE" o "true". Por otro lado, FALSE se devuelve para "True".

_cds_img_fbd_convert_string_to_bool.png
ejemplo 171. FB_ConvertirCadenas

Declaración

FUNCTION_BLOCK FB_ConvertStrings
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
	 xReturn_0: BOOL;
	xReturn_1: BOOL;
	dateReturn: DATE;
	dtReturn: DATE_AND_TIME;
	iReturn: INT;
	lrReturn: LREAL;
	lrReturn_0: LREAL;
	lwReturn: LWORD;
	lwReturn_0: LWORD;
	lwReturn_1: LWORD;
	ltReturn: LTIME;
	ltReturn_0: LTIME;
	ltReturn_1: LTIME;
	ltReturn_2: LTIME;
	rReturn: REAL;
	rReturn_0: REAL;
	timReturn: TIME;
	timReturn0: TIME;
	timReturn1: TIME;
	timReturn2: TIME;
	todReturn: TIME_OF_DAY;
	todReturn0: TIME_OF_DAY;
	todReturn1: TIME_OF_DAY;
	todReturn2: TIME_OF_DAY;
	uliReturn: ULINT;
	uliReturn_0: ULINT;
	uliReturn_1: ULINT;
	wReturn: WORD;
	wReturn_0: WORD;
	wReturn_1: WORD;
	wstrReturn: WSTRING;
	wstrReturn_0: WSTRING;
	dtReturn2: DATE_AND_TIME;
END_VAR

Implementación

FUNCTION_BLOCK FB_ConvertStrings
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
        xReturn_0: BOOL;
        xReturn_1: BOOL;
        dateReturn: DATE;
        dtReturn: DATE_AND_TIME;
        iReturn: INT;
        lrReturn: LREAL;
        lrReturn_0: LREAL;
        lwReturn: LWORD;
        lwReturn_0: LWORD;
        lwReturn_1: LWORD;
        ltReturn: LTIME;
        ltReturn_0: LTIME;
        ltReturn_1: LTIME;
        ltReturn_2: LTIME;
        rReturn: REAL;
        rReturn_0: REAL;
        timReturn: TIME;
        timReturn0: TIME;
        timReturn1: TIME;
        timReturn2: TIME;
        todReturn: TIME_OF_DAY;
        todReturn0: TIME_OF_DAY;
        todReturn1: TIME_OF_DAY;
        todReturn2: TIME_OF_DAY;
        uliReturn: ULINT;
        uliReturn_0: ULINT;
        uliReturn_1: ULINT;
        wReturn: WORD;
        wReturn_0: WORD;
        wReturn_1: WORD;
        wstrReturn: WSTRING;
        wstrReturn_0: WSTRING;
END_VAR
xReturn_0 := STRING_TO_BOOL('FALSE');
xReturn_1 := STRING_TO_BOOL('TRUE');
dateReturn := STRING_TO_DATE('DATE#2019-9-9');
dtReturn := STRING_TO_DT('DT#2019-9-9-1:1:1.1');
iReturn := STRING_TO_INT('123abc');
lrReturn := STRING_TO_LREAL('4.94E-323');
lrReturn_0 := STRING_TO_LREAL('1.7E+308');
lwReturn := STRING_TO_LWORD('16#FFFF_FFFF_FFFF_FFFF');
lwReturn_0 := STRING_TO_LWORD('16#0123456789ABCDEF');
lwReturn_1 := STRING_TO_LWORD('16#0123456789ABCDEF');
ltReturn := STRING_TO_LTIME('LTIME#213503d23h34m33s709ms551us615ns');
ltReturn_0 := STRING_TO_LTIME('LTIME#0ns');
ltReturn_1 := STRING_TO_LTIME('LTIME#1ms');
ltReturn_2 := STRING_TO_LTIME('LTIME#2s');
rReturn := STRING_TO_REAL('6.543e21');
rReturn_0 := STRING_TO_REAL('1.234');
timReturn := STRING_TO_TIME('T#5d4h3m2s');
timReturn0 := STRING_TO_TIME('TIME#1s');
timReturn1 := STRING_TO_TIME('1s');
timReturn2 := STRING_TO_TIME('TIME#5s');
todReturn := STRING_TO_TOD('TOD#12:0:0.1');
todReturn0 := STRING_TO_TOD('TOD#0:0:0.0');
todReturn1 := STRING_TO_TOD('20:15');
todReturn2 := STRING_TO_TOD('TOD#20:15');
uliReturn := STRING_TO_ULINT('18446744073709551615');
uliReturn_0 := STRING_TO_ULINT('1');
uliReturn_1 := STRING_TO_ULINT('0');
wReturn := STRING_TO_WORD('16#FFFF_0000');
wReturn_0 := STRING_TO_WORD('34abc');
wReturn_1 := STRING_TO_WORD('16#34abc');
wstrReturn := STRING_TO_WSTRING('Hello World!');
wstrReturn_0 := STRING_TO_WSTRING('123456789');


ejemplo 172. FB_ConvertWstrings en ST

Declaración

FUNCTION_BLOCK FB_ConvertWstrings
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
	xReturn_0: BOOL;
	xReturn_1: BOOL;
	dateReturn: DATE;
	dtReturn: DATE_AND_TIME;
	iReturn: INT;
	lrReturn: LREAL;
	lrReturn_0: LREAL;
	lwReturn: LWORD;
	lwReturn_0: LWORD;
	lwReturn_1: LWORD;
	ltReturn: LTIME;
	ltReturn_0: LTIME;
	ltReturn_1: LTIME;
	ltReturn_2: LTIME;
	rReturn: REAL;
	rReturn_0: REAL;
	timReturn: TIME;
	timReturn0: TIME;
	timReturn1: TIME;
	timReturn2: TIME;
	todReturn: TIME_OF_DAY;
	todReturn0: TIME_OF_DAY;
	todReturn1: TIME_OF_DAY;
	todReturn2: TIME_OF_DAY;
	uliReturn: ULINT;
	uliReturn_0: ULINT;
	uliReturn_1: ULINT;
	wReturn: WORD;
	wReturn_0: WORD;
	wReturn_1: WORD;
	wstrReturn: WSTRING;
	wstrReturn_0: WSTRING;
END_VAR

Implementación en ST

FUNCTION_BLOCK FB_ConvertWstrings
VAR
        xReturn_0: BOOL;
        xReturn_1: BOOL;
        dateReturn: DATE;
        dtReturn: DATE_AND_TIME;
        iReturn: INT;
        lrReturn: LREAL;
        lrReturn_0: LREAL;
        lwReturn: LWORD;
        lwReturn_0: LWORD;
        lwReturn_1: LWORD;
        ltReturn: LTIME;
        ltReturn_0: LTIME;
        ltReturn_1: LTIME;
        ltReturn_2: LTIME;
        rReturn: REAL;
        rReturn_0: REAL;
        timReturn: TIME;
        timReturn0: TIME;
        timReturn1: TIME;
        timReturn2: TIME;
        todReturn: TIME_OF_DAY;
        todReturn0: TIME_OF_DAY;
        todReturn1: TIME_OF_DAY;
        todReturn2: TIME_OF_DAY;
        uliReturn: ULINT;
        uliReturn_0: ULINT;
        uliReturn_1: ULINT;
        wReturn: WORD;
        wReturn_0: WORD;
        wReturn_1: WORD;
        wstrReturn: WSTRING;
        wstrReturn_0: WSTRING;
END_VAR

xReturn_0 := WSTRING_TO_BOOL("FALSE");
xReturn_1 := WSTRING_TO_BOOL("TRUE");
dateReturn := WSTRING_TO_DATE("DATE#2019-9-9");
dtReturn := WSTRING_TO_DT("DT#2019-9-9-1:1:1.1");
iReturn := WSTRING_TO_INT("123abc");
lrReturn := WSTRING_TO_LREAL("4.94E-323");
lrReturn_0 := WSTRING_TO_LREAL("1.7E+308");
lwReturn := WSTRING_TO_LWORD("16#FFFF_FFFF_FFFF_FFFF");
lwReturn_0 := WSTRING_TO_LWORD("16#0123456789ABCDEF");
lwReturn_1 := WSTRING_TO_LWORD("16#0123456789ABCDEF");
ltReturn := WSTRING_TO_LTIME("LTIME#213503d23h34m33s709ms551us615ns");
ltReturn_0 := WSTRING_TO_LTIME("LTIME#0ns");
ltReturn_1 := WSTRING_TO_LTIME("LTIME#1ms");
ltReturn_2 := WSTRING_TO_LTIME("LTIME#2s");
rReturn := WSTRING_TO_REAL("6.543e21");
rReturn_0 := WSTRING_TO_REAL("1.234");
timReturn := WSTRING_TO_TIME("T#5d4h3m2s");
timReturn0 := WSTRING_TO_TIME("TIME#1s");
timReturn1 := WSTRING_TO_TIME("1s");
timReturn2 := WSTRING_TO_TIME("TIME#5s");
todReturn := WSTRING_TO_TOD("TOD#12:0:0.1");
todReturn0 := WSTRING_TO_TOD("TOD#0:0:0.0");
todReturn1 := WSTRING_TO_TOD("20:15");
todReturn2 := WSTRING_TO_TOD("TOD#20:15");
uliReturn := WSTRING_TO_ULINT("18446744073709551615");
uliReturn_0 := WSTRING_TO_ULINT("1");
uliReturn_1 := WSTRING_TO_ULINT("0");
wReturn := WSTRING_TO_WORD("16#FFFF_0000");
wReturn_0 := WSTRING_TO_WORD("34abc");
wReturn_1 := WSTRING_TO_WORD("16#34abc");


ejemplo 173. Lenguaje de implementación FBD
_cds_img_fbd_convert_string.png