FP_DEC_TO_ASCII

Convertir decimal -> ASCII

Estas instrucciones FP convierten los caracteres decimales especificados por s a códigos ASCII si la entrada de trigger EN es TRUE. n_Chars especifica el número de bytes a convertir.El resultado se guarda en el área especificada por d_Start.

Códigos ASCII HEX para representar caracteres decimales:

Caracteres decimales

Código 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

Parámetros

Entrada

s (INT, DINT, UINT, UDINT)

Valor de entrada

n_Chars (WORD, INT, UINT)

Número de bytes

Salida

d_Start (WORD, INT, UINT)

Dirección de inicio del área de datos para los resultados. El tamaño es n_Bits * 2 palabras.

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si el número de bytes especificado por n_Chars es superior al área especificada por d_Start.

  • si el resultado de la conversión es superior al área de datos especificada por d_Start

  • si el número de bytes del resultado de la conversión es superior al número de bytes especificado por n_Chars.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si el número de bytes especificado por n_Chars es superior al área especificada por d_Start.

  • si el resultado de la conversión es superior al área de datos especificada por d_Start

  • si el número de bytes del resultado de la conversión es superior al número de bytes especificado por n_Chars.

EjemploDatos de 16 bits, sin signo

Offset

Caracteres decimales

Cifra decimal

Offset

Códigos ASCII convertidos

Equivalente decimal

s

0

16#FF9C

65436

Þ

d_Start

0

16#3620

6

n_Chars

0

16#0006

1

16#3435

45

2

16#3633

63

EjemploDatos de 16 bits, con signo

Offset

Caracteres decimales

Cifra decimal

Offset

Códigos ASCII convertidos

Equivalente decimal

s

0

16#FF9C

-100

Þ

d_Start

0

16#2020

n_Chars

0

16#0006

1

16#312D

1 -

2

16#3030

00

EjemploDatos de 32 bits, sin signo

Offset

Caracteres decimales

Cifra decimal

Offset

Códigos ASCII convertidos

Equivalente decimal

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

EjemploDatos de 32 bits, con signo

Offset

Caracteres decimales

Cifra decimal

Offset

Códigos ASCII convertidos

Equivalente decimal

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

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU.Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR
		bStart: BOOL:=FALSE;
		iInput: INT:=82;
		awResult: ARRAY [0..2] OF WORD:=[3(0)];
	END_VAR

Cuerpo de la POU

Cuando la variable bStart se encuentra a TRUE, se ejecuta la función.

Cuerpo 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

Cuerpo 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;

Modificado el: 2021-04-26Comentarios sobre esta páginaPanasonic hotline