FP_ASCII_TO_DEC

Convertir ASCII -> decimal

Estas instrucciones FP convierten los códigos ASCII hexadecimales que comienzan en s_Start a números decimales si la entrada de trigger EN es TRUE. n_Chars especifica el número de bytes a convertir.El resultado se guarda en d.

Parámetros

Entrada

s_Start (WORD, INT, UINT)

Dirección de inicio

n_Chars (WORD, INT, UINT)

Número de bytes

Salida

d (INT, DINT, UINT, UDINT)

Bytes convertidos

Observaciones

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

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

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

  • si los caracteres ASCII son diferentes a 0–9, se especifican signos (+, ) o un espacio

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

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

  • si los caracteres ASCII son diferentes a 0–9, se especifican signos (+, ) o un espacio

EjemploDatos de 32 bits, sin signo

Offset Códigos ASCII Equivalente decimal

Offset Caracteres decimales convertidos Cifra decimal

s_Start

0

16#3620

6

Þ

d

0

16#FF9C

65436

1

16#3435

45

1

2

16#3633

63

n_Chars

0

16#0006

EjemploDatos de 32 bits, con signo

Offset Códigos ASCII Equivalente decimal

Offset Caracteres decimales convertidos Cifra decimal

s_Start

0

16#2020

Þ

d

0

16#FF9C

-100

1

16#312D

1 -

1

2

16#3030

00

n_Chars

0

16#000A

EjemploDatos de 32 bits, sin signo

Offset Códigos ASCII Equivalente decimal

Offset Caracteres decimales convertidos Cifra decimal

s_Start

0

16#3234

24

Þ

d

0

16#FF9C

4294967196

1

16#3439

49

1

16#FFFF

2

16#3639

69

2

3

16#3137

17

4

16#3639

69

n_Chars

0

16#000A

EjemploDatos de 32 bits, con signo

Offset Códigos ASCII Equivalente decimal

Offset Caracteres decimales convertidos Cifra decimal

s_Start

0

16#2020

Þ

d

0

16#FF9C

-100

1

16#2020

1

16#FFFF

2

16#2020

3

16#312D

4

16#3030

n_Chars

0

16#000A

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;
			(*activates the function*)
		wASCII_input: WORD:=16#3031;
		iConversion_result: INT:=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 ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_CONTACT,,bStart,5,3,7,5,);
B(B_VARIN,,wASCII_input,11,4,13,6,);
B(B_VARIN,,2,11,5,13,7,);
B(B_VAROUT,,iConversion_result,23,4,25,6,);
B(B_F,FP_ASCII_TO_DEC!,,13,2,23,7,,?DEN?Ds_Start?Dn_Chars?AENO?Cd);
L(1,4,5,4);
L(7,4,13,4);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF (bStart) then
    FP_ASCII_TO_DEC(s_Start := wASCII_input, 
                    n_Chars := 2, 
                    d => iConversion_result);
END_IF;

Modificado el: 2024-11-13Comentarios sobre esta páginaLínea directa de Panasonic