FP_DEC_TO_ASCII

Conversion décimales -> code ASCII

Cette instruction FP convertit les caractères décimaux spécifiés par s en codes ASCII lorsque le déclencheur EN est TRUE. n_Chars désigne le nombre d’octets devant être convertis.Le résultat est sauvegardé dans la zone spécifiée par d_Start.

Codes ASCII HEX exprimant des caractères décimaux :

Caractères décimaux

Code ASCII HEX

SPACE+-0123456789

16#20 16#2B 16#2D 16#30 16#31 16#32 16#33 16#34 16#35 16#36 16#37 16#38 16#39

Paramètres

Entrée

s (INT, DINT, UINT, UDINT)

Valeur d’entrée

n_Chars (WORD, INT, UINT)

Nombre d’octets

Sortie

d_Start (WORD, INT, UINT)

Adresse de départ de la zone de données dans laquelle le résultat est sauvegardé. La taille est de n_Bits * 2 mots.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

  • Si le nombre d’octets désigné par n_Chars est supérieur à la zone spécifiée par d_Start.

  • Si le résultat de la conversion est supérieur à la zone de données spécifiée par d_Start.

  • Si le nombre d’octets du résultat de la conversion est supérieur au nombre d’octets spécifié par n_Chars.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

  • Si le nombre d’octets désigné par n_Chars est supérieur à la zone spécifiée par d_Start.

  • Si le résultat de la conversion est supérieur à la zone de données spécifiée par d_Start.

  • Si le nombre d’octets du résultat de la conversion est supérieur au nombre d’octets spécifié par n_Chars.

ExempleDonnées 16 bits, non signées

Offset

Caractères décimaux

Nombre décimal

Offset

Codes ASCII convertis

Equivalent décimal

s

0

16#FF9C

65436

Þ

d_Start

0

16#3620

6

n_Chars

0

16#0006

1

16#3435

45

2

16#3633

63

ExempleDonnées 16 bits, signées

Offset

Caractères décimaux

Nombre décimal

Offset

Codes ASCII convertis

Equivalent décimal

s

0

16#FF9C

-100

Þ

d_Start

0

16#2020

n_Chars

0

16#0006

1

16#312D

1 -

2

16#3030

00

ExempleDonnées 32 bits, non signées

Offset

Caractères décimaux

Nombre décimal

Offset

Codes ASCII convertis

Equivalent décimal

s

0

16#FF9C

4294967196

Þ

d_Start

0

16#3234

24

1

16#FFFF

1

16#3439

49

n_Chars

0

16#000A

2

16#3639

69

3

16#3137

17

4

16#3639

69

ExempleDonnées 32 bits, signées

Offset

Caractères décimaux

Nombre décimal

Offset

Codes ASCII convertis

Equivalent décimal

s

0

16#FF9C

-100

Þ

d_Start

0

16#2020

0

1

16#FFFF

1

16#2020

0

n_Chars

0

16#000A

2

16#2020

0

3

16#312D

1 -

4

16#3030

00

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
		bStart: BOOL:=FALSE;
		iInput: INT:=82;
		awResult: ARRAY [0..2] OF WORD:=[3(0)];
	END_VAR

Corps du POU

La fonction est exécutée lorsque la variable bStart est définie sur TRUE.

Corps en LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_COMMENT,,After conversion: ø^awResult[0]=16#2020ø^awResult[1]=16#3238ø^awResult[2] is not written,24,1,39,5,);
B(B_CONTACT,,bStart,4,4,6,6,R);
B(B_F,FP_DEC_TO_ASCII!,,12,3,22,8,,?DEN?D@'s'?Dn_Chars?AENO?Cd_Start);
B(B_VARIN,,iInput,10,5,12,7,);
B(B_VAROUT,,awResult[0],22,5,24,7,);
B(B_VARIN,,4,10,6,12,8,);
L(1,0,1,8);
L(1,5,4,5);
L(6,5,12,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

if (DF(bStart)) then
	FP_DEC_TO_ASCII(s := iInput, n_Chars := 4,
	                d_Start => awResult[0]);
	(* After conversion: 
			awResult[0]=16#2020
			awResult[1]=16#3238
			awResult[2] is not written *)
end_if;

Modifié le : 2021-04-26Feedback on this pagePanasonic hotline