Binario -> conversione ASCII
Converte il dato binario a 16 bit/32 bit memorizzato nell'area specificata da s2_BinaryData in codice ASCII. Il metodo di conversione è specificato da n_ConversionMethod sulla base dei quattro caratteri di controllo di s1_Control. Il risultato della conversione viene memorizzato nell'area specificata da d_AsciiData.
Ingresso
Stringa di controllo
H: converte in dati ASCII esadecimali
- Direzione inversa
32: converte in unità a 32 bit (2 word)
Area iniziale per memorizzare il dato binario
Metodo di conversione
(per i dettagli, vedere la spiegazione riportata dopo le tabelle)
Uscita
Area iniziale per memorizzare i dati ASCII
Anziché utilizzare questa istruzione F, si consiglia di utilizzare l'istruzione FP7 corrispondente: FP_BIN_TO_ASCII
se è presente un errore nella stringa di controllo specificata da s1_Control.
se la direzione normale (+) è specificata in s1_Control quando il formato è decimale.
se il numero di caratteri ASCII per unità convertita specificato da n_ConversionMethod eccede 4 per i dati a 16 bit e 8 per i dati a 32 bit quando il formato esadecimale è specificato da s1_Control.
se 0 è specificato come numero di unità a 16 o 32 bit (1 o 2 word) da convertire in n_ConversionMethod.
se il numero di numeri decimali a 16 o 32 bit da convertire specificato da n_ConversionMethod eccede l'area di memorizzazione dei dati ASCII.
se il risultato della conversione eccede l'area.
se è presente un errore nella stringa di controllo specificata da s1_Control.
se la direzione normale (+) è specificata in s1_Control quando il formato è decimale.
se il numero di caratteri ASCII per unità convertita specificato da n_ConversionMethod eccede 4 per i dati a 16 bit e 8 per i dati a 32 bit quando il formato esadecimale è specificato da s1_Control.
se 0 è specificato come numero di unità a 16 o 32 bit (1 o 2 word) da convertire in n_ConversionMethod.
se il numero di numeri decimali a 16 o 32 bit da convertire specificato da n_ConversionMethod eccede l'area di memorizzazione dei dati ASCII.
se il risultato della conversione eccede l'area.
(I valori X non cambiano)
Sul numero di caratteri ASCII (8 bit) per unità convertita
Conversione di unità binarie a 16 bit in dati ASCII esadecimali:
Intervallo: 16#1–16#4
Conversione di unità binarie a 32 bit in dati ASCII esadecimali:
Intervallo: 16#1–16#8
Conversione di unità binarie in dati ASCII decimali:
Intervallo: 16#1–16#F
s1_ Control=16+H
, n_Conversion Method=16#204
Direzione normale. 2 x 4 caratteri ASCII.
Dati binari |
Risultato della conversione in dati ASCII |
Tipo di dato |
Offset in unità word a 16 bit |
Numero esadecimale |
D |
D+1 |
D+2 |
D+3 |
(row]
---|---|---|---|---|---|---|
INT, WORD |
0 |
16#5678 |
'78' |
'56' |
'34' |
'12' |
1 |
16#1234 |
s1_ Control=16-H
, n_Conversion Method=16#204
Direzione inversa. 2 x 4 caratteri ASCII.
Dati binari |
Risultato della conversione in dati ASCII |
Tipo di dato |
Offset in unità word a 16 bit |
Numero esadecimale |
D |
D+1 |
D+2 |
D+3 |
(row]
---|---|---|---|---|---|---|
INT, WORD |
0 |
16#5678 |
'78' |
'56' |
'12' |
'34' |
1 |
16#1234 |
s1_ Control=16+H
, n_Conversion Method=16#203
Direzione normale. 2 x 3 caratteri ASCII.
Dati binari |
Risultato della conversione in dati ASCII |
Tipo di dato |
Offset in unità word a 16 bit |
Numero esadecimale |
D |
D+1 |
D+2 |
D+3 |
(row]
---|---|---|---|---|---|---|
INT, WORD |
0 |
16#0456 |
'56' |
'42' |
'31' |
'$xx$xx' |
1 |
16#0123 |
s1_ Control=16-H
, n_Conversion Method=16#203
Direzione inversa. 2 x 3 caratteri ASCII.
Dati binari |
Risultato della conversione in dati ASCII |
Tipo di dato |
Offset in unità word a 16 bit |
Numero esadecimale |
D |
D+1 |
D+2 |
D+3 |
(row]
---|---|---|---|---|---|---|
INT, WORD |
0 |
16#0456 |
'45' |
'61' |
'23' |
'$xx$xx' |
1 |
16#0123 |
s1_ Control=32+H
, n_Conversion Method=16#108
Direzione normale. 1 x 8 caratteri ASCII.
Dati binari |
Risultato della conversione in dati ASCII |
Tipo di dato |
Offset in unità word a 16 bit |
Numero esadecimale |
D |
D+1 |
D+2 |
D+3 |
(row]
---|---|---|---|---|---|---|
DINT, DWORD |
0 |
16#12345678 |
'78' |
'56' |
'34' |
'12' |
s1_ Control=32-H
, n_Conversion Method=16#108
Direzione inversa. 1 x 8 caratteri ASCII.
Dati binari |
Risultato della conversione in dati ASCII |
Tipo di dato |
Offset in unità word a 16 bit |
Numero esadecimale |
D |
D+1 |
D+2 |
D+3 |
(row]
---|---|---|---|---|---|---|
DINT, DWORD |
0 |
16#12345678 |
'12' |
'34' |
'56' |
'78' |
s1_ Control=32+H
, n_Conversion Method=16#105
Direzione normale. 1 x 5 caratteri ASCII.
Dati binari |
Risultato della conversione in dati ASCII |
Tipo di dato |
Offset in unità word a 16 bit |
Numero esadecimale |
D |
D+1 |
D+2 |
D+3 |
(row]
---|---|---|---|---|---|---|
DINT, DWORD |
0 |
16#00012345 |
'45' |
'23' |
'1$xx' |
'$xx$xx' |
s1_ Control=32-H
, n_Conversion Method=16#105
Direzione inversa. 1 x 5 caratteri ASCII.
Dati binari |
Risultato della conversione in dati ASCII |
Tipo di dato |
Offset in unità word a 16 bit |
Numero esadecimale |
D |
D+1 |
D+2 |
D+3 |
(row]
---|---|---|---|---|---|---|
DINT, DWORD |
0 |
16#00012345 |
'12' |
'34' |
'5$xx' |
'$xx$xx' |
I valori 'x' non cambiano.
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
bExecute: BOOL:=FALSE;
iArray1: ARRAY [0..1] OF INT:=[1234,-56];
iAscii1: ARRAY [0..4] OF WORD:=[5(16#FFFF)];
END_VAR
Quando bExecute è impostato su TRUE, l'istruzione viene eseguita. Converte due unità a 16 bit in 2 x 4 dati ASCII decimali. Offset = 1 carattere ASCII (8 bit).
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 9 ;
NETWORK_BODY
B(B_F,F250_BTOA!,Instance,9,3,21,9,,?DEN?Ds1_Control?Ds2_BinaryData?Dn_ConversionMethod?AENO?Cd_AsciiData);
B(B_VARIN,,'16-D',7,5,9,7,);
B(B_VARIN,,iArray1,7,6,9,8,);
B(B_VARIN,,16#214,7,7,9,9,);
B(B_VAROUT,,iAscii1,21,5,23,7,);
B(B_CONTACT,,bExecute,3,4,5,6,R);
B(B_COMMENT,,Result iAscii1: 'x1234 -56x',22,7,35,8,);
B(B_COMMENT,,Converts two 16-bit units to 2x4 decimal ASCII data. Offset = 1 ASCII character (8-bit).,2,1,35,3,);
L(1,5,3,5);
L(5,5,9,5);
L(1,0,1,9);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bExecute) then
F250_BTOA(s1_Control := '16-D',
s2_BinaryData := iArray1,
n_ConversionMethod := 16#214,
d_AsciiData => iAscii1);
END_IF;