Skip to main content

Conversion : STRING, WSTRING

Les opérateurs convertissent une chaîne (STRING ou WSTRING) dans le type de données cible spécifié et renvoient une valeur convertie en type.

Une conversion avec un résultat significatif n'est possible que si l'opérande correspond au type de données cible selon la norme IEC 61131-3. C'est le cas si la valeur de l'opérande correspond à une constante (littérale) valide du type de données cible.

Les cordes convertibles contiennent :

  • Numéro avec préfixe de type (exemple : '16#FFFFFFFF')

  • Numéro avec caractères de regroupement (exemple : '2#1111_1111')

    Remarque : Le caractère de groupement international des poids et mesures (espace fin) n'est pas accepté. Seul le trait de soulignement est accepté.

  • Nombre à virgule flottante, également en notation exponentielle (exemple : '9.876' ou '1.2E-34')

    Remarque : Les nombres à virgule flottante ne sont pas convertibles. La virgule est traitée et tronquée comme un caractère de suivi.

  • Spécification de l'heure, de l'heure du jour et de la date avec préfixe et taille (exemple : 'T#2h', 'DT#2019-9-9-12:30:30.9')

  • Valeurs infinies (exemple : '1.7E+400')

  • Caractère supplémentaire après un nombre (exemple : '2m' ou '3.14')

    Ceux-ci sont tronqués. Caractères supplémentaires avant un certain nombre ne sont pas autorisés.

  • Espaces avant (exemple : '3.14')

Syntaxe d'appel :  STRING_TO_<type de cible>(<opérande>) , WSTRING_TO_<type de cible>(<opérande>)

Opérande

Type de données

Description

Variable ou littéral

STRING, WSTRING

STRING, WSTRING

Tableau 14. Opérateurs de casting : STRING/WSTRING_TO_<target type>

Opérateur : STRING

Opérateur : WSTRING

Exemple

Valeur de retour

Description

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

Integer

STRING_TO_DATE

WSTRING_TO_DATE

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

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

D#2019-9-9

Syntaxe: D#yyyy-MM-dd

Type de données : DATE

STRING_TO_DINT

WSTRING_TO_DINT

Si le type de données de sortie est plus grand, des informations peuvent être perdues.

Integer

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

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

Type de données : DATE

STRING_TO_DWORD

WSTRING_TO_DWORD

Integer

STRING_TO_INT

WSTRING_TO_INT

STRING_TO_INT('123abc')

WSTRING_TO_INT("123abc")

123

Integer

STRING_TO_LDATE

WSTRING_TO_LDATE

Syntaxe: LDATE#yyyy-MM-dd

Seul le jour est affiché.

Type de données : DATE

STRING_TO_LDT

WSTRING_TO_LDT

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

Type de données : DATE

STRING_TO_LINT

WSTRING_TO_LINT

Integer

STRING_TO_LREAL

WSTRING_TO_LREAL

STRING_TO_LREAL('1.7E+308')

WSTRING_TO_LREAL("1.7E+308")

1.7000000000000001E+308

REAL, LREAL

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

Types de données de temps

STRING_TO_LTOD

WSTRING_TO_LTOD

Syntaxe: LTOD#hh:mm:ss.sssssssss

Type de données : DATE

STRING_TO_LWORD

WSTRING_TO_LWORD

STRING_TO_LWORD('16#0123456789ABCDEF')

WSTRING_TO_LWORD("16#0123456789ABCDEF")

81985529216486895

Integer

STRING_TO_REAL

WSTRING_TO_REAL

STRING_TO_REAL('1.234')

WSTRING_TO_REAL("1.234")

1.234

Lors de la conversion à partir d'une plage de valeurs plus large, des informations peuvent être perdues ou un résultat indéfini peut être renvoyé.

REAL, LREAL

STRING_TO_SINT

WSTRING_TO_SINT

Integer

-

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

Types de données de temps

STRING_TO_TOD

WSTRING_TO_TOD

STRING_TO_TOD('TOD#20:15')

WSTRING_TO_TOD("TOD#20:15")

TOD#20:15:0

Type de données : DATE

STRING_TO_UDINT

WSTRING_TO_UDINT

Integer

STRING_TO_UINT

WSTRING_TO_UINT

Integer

STRING_TO_ULINT

WSTRING_TO_ULINT

STRING_TO_ULINT('615')

WSTRING_TO_ULINT("615")

615

Integer

STRING_TO_USINT

WSTRING_TO_USINT

Integer

STRING_TO_WORD

WSTRING_TO_WORD

Integer

STRING_TO_WSTRING

-

STRING_TO_WSTRING('Hello World!')

"Hello World!"

WSTRING



Conversion en une valeur booléenne

Opérateur STRING_TO_BOOL: Une valeur de TRUE est renvoyé uniquement si la valeur de l'opérande est 'TRUE' ou 'true'. D'autre part, FALSE est retourné pour 'True'.

Opérateur WSTRING_TO_BOOL: Une valeur de TRUE est renvoyé uniquement si la valeur de l'opérande est "TRUE" ou "true". D'autre part, FALSE est retourné pour "True".

_cds_img_fbd_convert_string_to_bool.png
Exemple 171. FB_ConvertStrings

Déclaration

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

Mise en œuvre

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');


Exemple 172. Langage d'implémentation ST

Déclaration

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

Implémentation 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");


Exemple 173. Langage d'implémentation FBD
_cds_img_fbd_convert_string.png