REAL_TO_STRING

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

Paramètres

Entrée

Unnamed input (REAL)
Type de données d’entrée

Sortie

Unnamed output (STRING)
Résultat de la conversionSTRING[15]

Remarques

  • 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.

Exemple

En-tête du POU

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.

Corps du POU

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'.

Corps en LD

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

Corps en IL

Exemple

En-tête du POU

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.

Corps du POU

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'.

Corps en LD

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

Corps en IL

Modifié le : 2021-08-09Commentaires sur cette pageAssistance téléphonique