REAL en STRING
La fonction REAL_TO_STRING convertit une valeur du type REAL en une valeur du type STRING[15] avec 7 caractères avant et après le point décimal. La chaîne de caractères qui en résulte est alignée à droite entre '-999999.0000000' et '9999999.0000000-'. Le signe plus n’est pas affiché pour les chiffres positifs. Les zéros placés à gauche sont remplacés par des espaces (par exemple, -12.0 devient STRING '-12.0').
Entrée
Sortie
Une mémoire programme de 160 pas est nécessaire à cette fonction. En cas d’utilisation fréquente, vous devez l’intégrer dans une fonction utilisateur qui n’est enregistrée qu’une seule fois dans la mémoire.
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.
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
input_value: REAL:=-123.4560166;
result_string: STRING[15]:='';
END_VAR
La variable d’entrée input_value du type de données REAL est initialisée par la valeur -123.4560166. La variable de sortie result_string est du type de données STRING[15]. Elle peut enregistrer un maximum de 15 caractères. A défaut d’utiliser la variable input_value, vous pouvez aussi entrer une constante directement au contact d’entrée de la fonction, dans le corps.
La variable input_value du type de données REAL est convertie en STRING[15]. La valeur convertie est écrite dans result_string. Lorsque la variable input_value = 123.4560166, result_string indique ' -123.4560165'.
BODY
WORKSPACE</p>
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,REAL_TO_STRING!,Instance,7,1,17,3,,?D?C);
B(B_VARIN,,input_value,5,1,7,3,);
B(B_VAROUT,,result_string,17,1,19,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Cet exemple illustre comment créer une chaîne de caractères de longueur 7 (STRING[7]) avec 4 positions avant et 2 positions après le point décimal du type de données REAL.
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
input_value: REAL:=-123.4560166;
(*example value*)
result_string: STRING[15]:='';
(*result: here ' -123.45'*)
END_VAR
Dans cet exemple, la variable d’entrée input_value du type de données REAL et la variable de sortie result_string du type STRING[7] sont déclarées.
Pour exécuter cette opération, la fonction standard MID est utilisée avec la fonction REAL_TO_STRING. MID crée un secteur central dans la chaîne de caractères à partir de la position P (valeur INT) avec les caractères L (valeur INT).
Dans l’exemple, la constante INT 7 est entrée dans L, l’entrée de MID, laquelle détermine la longueur du résultat de la chaîne. La constante INT 4 à l’entrée P détermine la position à partir de laquelle le secteur central doit commencer. À partir de la variable input_value = -123.4560166, on obtient la chaîne de caractères ' -123.4560166' après conversion du type de données. La fonction MID supprime les caractères avant la position 4 de la chaîne de caractères et donne le résultat result_string '-123.45'.
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,REAL_TO_STRING!,Instance,7,2,17,4,,?D?C);
B(B_VARIN,,input_value,5,2,7,4,);
B(B_VAROUT,,result_string,24,2,26,4,);
B(B_F,MID!,Instance,19,1,24,6,,?DIN?DL?DP?C);
B(B_VARIN,,7,17,3,19,5,);
B(B_VARIN,,4,17,4,19,6,);
L(17,3,19,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY