Conversion code ASCII -> HEX
Cette instruction FP convertit les codes ASCII HEX hexadécimaux à partir de s_Start en caractères hexadécimaux lorsque le déclencheur EN est TRUE. n_Chars désigne le nombre d’octets devant être convertis.Le résultat est sauvegardé dans d.
Le code ASCII requiert 8 bits (1 octet) pour exprimer un caractère hexadécimal. Après conversion en nombre hexadécimal, les données converties sont deux fois moins longues que les données sources du code ASCII.Entrée
Adresse de départ
Nombre d’octets
Sortie
Octets convertis
Deux caractères du code ASCII sont convertis en deux digits numériques d’un octet. Dans cette procédure, des caractères de niveau supérieur et de niveau inférieur sont échangés. Quatre caractères sont convertis en un segment de données.
Codes ASCII HEX exprimant des caractères hexadécimaux :
Caractère hexadécimal |
Code 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 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 s_Start.
Si le résultat de la conversion est supérieur à la zone de données spécifiée par d
Si n_Chars = 0
Si des caractères ASCII autres que 0–F sont spécifiés.
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 s_Start.
Si le résultat de la conversion est supérieur à la zone de données spécifiée par d
Si n_Chars = 0
Si des caractères ASCII autres que 0–F sont spécifiés.
Offset |
Codes ASCII |
Equivalent hex. |
Offset |
Caractères hex. convertis |
|||
s1_Start |
0 |
16#4241 |
BA |
Þ |
d |
0 |
16#CDAB |
1 |
16#4443 |
DC |
1 |
||||
n_Chars |
0 |
16#0004 |
2 |
||||
1 |
3 |
Offset |
Codes ASCII |
Equivalent hex. |
Offset |
Caractères hex. convertis |
|||
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 |
Codes ASCII |
Equivalent hex. |
Offset |
Caractères hex. convertis |
|||
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 un nombre impair de caractères est converti, 0 est entré pour les positions de bits 0–3 du dernier octet converti.
Offset |
Codes ASCII |
Equivalent hex. |
Offset |
Caractères hex. convertis |
|||
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 |
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;
(*activates the function*)
wASCIIInput: WORD:=16#3031;
wConversionResult: WORD:=0;
END_VAR
La fonction est exécutée lorsque la variable bStart est définie sur TRUE.
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;