ASCII -> conversione esadec.
Questa istruzione FP converte i codici esadecimali ASCII HEX in s_Start in caratteri esadecimali se il trigger EN è TRUE. n_Chars specifica il numero di byte da convertire.Il risultato viene memorizzato in d.
Il codice ASCII richiede 8 bit (1 byte) per esprimere un carattere esadecimale. Una volta convertita, la lunghezza dati diventerà quindi la metà del dato source del codice ASCII.Ingresso
Indirizzo iniziale
Numero di byte
Uscita
Byte convertiti
Due caratteri del codice ASCII vengono convertiti in due cifre numeriche da un byte. Nel corso di questo processo vengono scambiati i caratteri di livello superiore e i caratteri di livello inferiore. Quattro caratteri vengono convertiti come un segmento di dati.
Codici ASCII HEX per esprimere caratteri esadecimali:
Carattere esadecimale |
CodiceASCII 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 |
se l'area specificata utilizzando il registro indice eccede il limite.
se il numero di byte specificato dan_Chars è maggiore rispetto all'area specificata da s_Start
se il risultato di conversione è maggiore rispetto all'area dati specificata da d
se n_Chars = 0
Se vengono specificati caratteri ASCII diversi da 0–F
se l'area specificata utilizzando il registro indice eccede il limite.
se il numero di byte specificato dan_Chars è maggiore rispetto all'area specificata da s_Start
se il risultato di conversione è maggiore rispetto all'area dati specificata da d
se n_Chars = 0
Se vengono specificati caratteri ASCII diversi da 0–F
Offset |
Codici ASCII |
Equivalente esadec. |
Offset |
Caratteri esadec. convertiti |
|||
s1_Start |
0 |
16#4241 |
BA |
Þ |
d |
0 |
16#CDAB |
1 |
16#4443 |
DC |
1 |
||||
n_Chars |
0 |
16#0004 |
2 |
||||
1 |
3 |
Offset |
Codici ASCII |
Equivalente esadec. |
Offset |
Caratteri esadec. convertiti |
|||
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 |
Codici ASCII |
Equivalente esadec. |
Offset |
Caratteri esadec. convertiti |
|||
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 |
Se viene convertito un numero dispari di caratteri, 0 verrà immesso per la posizione 0–3 dell’ultimo byte convertito.
Offset |
Codici ASCII |
Equivalente esadec. |
Offset |
Caratteri esadec. convertiti |
|||
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 |
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR
bStart: BOOL:=FALSE;
(*activates the function*)
wASCIIInput: WORD:=16#3031;
wConversionResult: WORD:=0;
END_VAR
Quando la variabile bStart è impostata su TRUE, la funzione viene eseguita.
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;