TRUNC_TO_DINT

Tronquer une variable REAL ou LREAL convertie en DOUBLE INTEGER

La fonction TRUNC_TO_DINT tronque les chiffres après la virgule d’un nombre du type REAL, LREAL et renvoie une variable de sortie du type de données DOUBLE INTEGER.

NOTA
  • Lorsque les chiffres après la virgule sont tronqués, les nombres positifs diminuent et tendent vers zéro, et les nombres négatifs augmentent et tendent vers zéro.

  • Les nombres de type REAL ayant une résolution d’environ 7 digits, les informations relatives à des nombres plus grands seront perdues.

Paramètres

Entrée

Unnamed input (REAL, LREAL)

Type de données d’entrée

Sortie

Unnamed output (DINT)

Résultat de la conversion

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)

Si la variable d’entrée n’est pas du type de données REAL.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)

Si la variable de sortie est supérieure à un type DOUBLE INTEGER de 32 bits.

sys_bIsCarry (passe à TRUE pendant un cycle)

Si la variable de sortie est = 0.

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
		REAL_value: TRUNC;
		DINT_value: DINT:=0;
	END_VAR

Cet exemple utilise des variables. Vous pouvez également utiliser une constante pour la variable d’entrée.

Corps du POU

Les chiffres après la virgule de la variable REAL_value sont tronqués. Le résultat est enregistré en DOUBLE INTEGER de 32 bits dans DINT_value.

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 := 2 ;
        NETWORK_BODY
B(B_F,TRUNC_TO_DINT!,Instance,10,0,19,2,,?D?C);
B(B_VARIN,,REAL_value,8,0,10,2,);
B(B_VAROUT,,DINT_value,19,0,21,2,);
L(1,0,1,2);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

DINT_value:=TRUNC_TO_DINT(REAL_value);

Corps en IL

LD

REAL_value

TRUNC_TO_DINT

ST

DINT_value

Modifié le : 2022-09-26Feedback on this pagePanasonic hotline