Convertir ASCII -> hexadecimal
Estas instrucciones FP convierten los códigos ASCII HEX hexadecimales de s_Start a caracteres hexadecimales si la entrada de trigger EN es TRUE. n_Chars especifica el número de bytes a convertir.El resultado se guarda en d.
El código ASCII necesita 8 bits (1 byte) para representar un carácter hexadecimal. Por tanto, después de la conversión, la longitud de los datos corresponderá a la mitad de la longitud de los datos fuente del código ASCII.Entrada
Dirección de inicio
Número de bytes
Salida
Bytes convertidos
Dos caracteres de código ASCII se convierten a dos dígitos numéricos de un byte. Durante este proceso se intercambian los caracteres de nivel superior y los caracteres de nivel inferior. Los cuatro caracteres se convierten en una sola unidad de datos.
Códigos ASCII HEX para representar caracteres hexadecimales:
Carácter hexadecimal |
Código ASCII HEX |
---|---|
0123456789ABCDEF |
16#3016#31 16#32 16#33 16#34 16#35 16#36 16#37 16#38 16#39 16#41 16#42 16#43 16#44 16#45 16#46 |
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 s_Start
si el resultado de la conversión es superior al área de datos especificada por d
si n_Chars = 0
si se especifican caracteres ASCII diferentes a 0–F
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 s_Start
si el resultado de la conversión es superior al área de datos especificada por d
si n_Chars = 0
si se especifican caracteres ASCII diferentes a 0–F
Offset |
Códigos ASCII |
Equivalente hexadecimal |
Offset |
Caracteres hexadecimales convertidos |
|||
s1_Start |
0 |
16#4241 |
BA |
Þ |
d |
0 |
16#CDAB |
1 |
16#4443 |
DC |
1 |
||||
n_Chars |
0 |
16#0004 |
2 |
||||
1 |
3 |
Offset |
Códigos ASCII |
Equivalente hexadecimal |
Offset |
Caracteres hexadecimales convertidos |
|||
s1_Start |
0 |
16#4241 |
BA |
Þ |
d |
0 |
16#CDAB |
1 |
16#4443 |
DC |
1 |
||||
n_Chars |
0 |
16#0004 |
2 |
||||
1 |
16#0000 |
3 |
|||||
2 |
4 |
Offset |
Códigos ASCII |
Equivalente hexadecimal |
Offset |
Caracteres hexadecimales convertidos |
|||
s1_Start |
0 |
16#3231 |
21 |
Þ |
d |
0 |
16#3412 |
1 |
16#3433 |
43 |
1 |
16#7856 |
|||
2 |
16#3635 |
65 |
2 |
||||
3 |
16#3837 |
87 |
3 |
||||
n_Chars |
0 |
16#0008 |
4 |
||||
1 |
5 |
Si el número de caracteres a convertir es impar, se introducen ceros en las posiciones de bit 0–3 del último byte convertido.
Offset |
Códigos ASCII |
Equivalente hexadecimal |
Offset |
Caracteres hexadecimales convertidos |
|||
s1_Start |
0 |
16#3231 |
21 |
Þ |
d |
0 |
16#3412 |
1 |
16#3433 |
43 |
1 |
16#7056 |
|||
2 |
16#3635 |
65 |
2 |
||||
3 |
16#3837 |
87 |
3 |
||||
n_Chars |
0 |
16#0007 |
4 |
||||
1 |
5 |
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*)
wASCIIInput: WORD:=16#3031;
wConversionResult: WORD:=0;
END_VAR
Cuando la variable bStart se encuentra a TRUE, se ejecuta la función.
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_CONTACT,,bStart,5,2,7,4,);
B(B_VARIN,,wASCIIInput,11,3,13,5,);
B(B_VARIN,,2,11,4,13,6,);
B(B_VAROUT,,wConversionResult,23,3,25,5,);
B(B_F,FP_ASCII_TO_HEX!,,13,1,23,6,,?DEN?Ds_Start?Dn_Chars?AENO?Cd);
L(1,3,5,3);
L(7,3,13,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If (bStart) then
FP_ASCII_TO_HEX(s_Start := wASCIIInput,
n_Chars := 2,
d => wConversionResult);
End_if;