DOUBLE WORD en STRING
La fonction DWORD_TO_STRING convertit une valeur du type de données DWORD en une valeur du type de données STRING.
Il en résulte une chaîne de caractères en format hexadécimal qui est alignée à droite. Cette chaîne est complétée par des zéros placés à gauche afin d’atteindre le nombre maximum de caractères défini pour la chaîne.Entrée
Sortie
Si vous utilisez le type de données STRING avec des petits automates tels que FP-e ou FP0, veillez à ce que la longueur de la chaîne, résultat de la conversion, soit égale ou supérieure à celle de la chaîne de départ.
Entrée |
Sortie définie par |
Résultat |
---|---|---|
16#ABCDEFFE |
STRING[2] |
'FE' |
STRING[4] |
'EFFE' |
|
STRING[6] |
'CDEFFE' |
|
STRING[8] |
'ABCDEFFE' |
|
STRING[10] |
'00ABCDEFFE' |
|
STRING[12] |
'0000ABCDEFFE' |
|
et ainsi de suite... |
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
DWORD_value: DWORD:=0;
(*example value: 16#ABCDEFFE*)
result_string: STRING[10]:='';
(*result: '00ABCDEFFE'*)
@'': @'';
END_VAR
La variable d’entrée DWORD_value du type de données DWORD est initialisée par la valeur 16#ABCDEFFE. La variable de sortie result_string est du type de données STRING[10]. Elle peut enregistrer un maximum de 10 caractères. A défaut d’utiliser la variable DWORD_value, vous pouvez aussi entrer une constante directement au contact d’entrée de la fonction, dans le corps.
La variable DWORD_value du type de données DWORD est convertie en STRING[10]. La valeur convertie est écrite dans result_string. Lorsque la variable DWORD_value = 16#ABCDEFFE, result_string affiche '00ABCDEFFE'.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,DWORD_TO_STRING!,Instance,9,1,20,3,,?D?C);
B(B_VARIN,,DWORD_value,7,1,9,3,);
B(B_VAROUT,,result_string,20,1,22,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU.Le même en-tête de POU est utilisé pour tous les langages de programmation.
Cet exemple illustre comment créer une chaîne de caractères STRING[10] à partir d’une valeur d’entrée du type de données DWORD dont les premiers caractères '16#' sont remplacés par '0x'..
VAR
input_value: DWORD:=16#12345678;
result_string: STRING[10]:='';
@'': @'';
END_VAR
Dans cet exemple, la variable d’entrée input_value du type de données DWORD et la variable de sortie result_string du type STRING[10] sont déclarées.
Pour exécuter cette opération, la fonction standard REPLACE est utilisée avec la fonction DWORD_TO_STRING. La fonction REPLACE remplace une partie d’une chaîne de caractères par une autre.
Dans l’exemple, la chaîne de sortie de la fonction DWORD_TO_STRING est ajoutée à l’entrée IN1 de la fonction REPLACE. À l’entrée IN2, la constante STRING de la chaîne '0x' est ajoutée comme chaîne de remplacement STRING. À l’entrée L de REPLACE, la constante INT 3 détermine la longueur de la chaîne de caractères STRING à remplacer. L’entrée P détermine la position à partir de laquelle le remplacement doit commencer. Dans ce cas, c’est le nombre INT 1. À partir de la variable input_value = 16#12345678, on obtient le résultat result_string = '0x12345678' après exécution de la conversion et de la fonction REPLACE
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,DWORD_TO_STRING!,Instance,8,1,19,3,,?D?C);
B(B_VARIN,,input_value,6,1,8,3,);
B(B_VAROUT,,result_string,26,1,28,3,);
B(B_F,REPLACE!,Instance,20,0,26,6,,?DIN1?DIN2?DL?DP?C);
B(B_VARIN,,'0x',18,2,20,4,);
B(B_VARIN,,3,18,3,20,5,);
B(B_VARIN,,2,18,4,20,6,);
L(19,2,20,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY