F250_BTOA

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.

Parametri

Ingresso

s1_Control (STRING)

Stringa di controllo

  1.  (1) D: converte in dati ASCII decimali

    H: converte in dati ASCII esadecimali

  2.  (2) + Direzione normale

    - Direzione inversa

  3.  (3) 16: converte in unità a 16 bit (1 word)

    32: converte in unità a 32 bit (2 word)

s2_BinaryData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

Area iniziale per memorizzare il dato binario

n_ConversionMethod (WORD, INT, UINT)

Metodo di conversione

  1.  (1) Numero di caratteri ASCII per unità convertita
  2.  (2) Offset in unità di caratteri ASCII (8 bit)
  3.  (3) Numero di unità a 16 bit (1 word) o a 32 bit (2 word) convertite

(per i dettagli, vedere la spiegazione riportata dopo le tabelle)

Uscita

d_AsciiData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

Area iniziale per memorizzare i dati ASCII

Note

Anziché utilizzare questa istruzione F, si consiglia di utilizzare l'istruzione FP7 corrispondente: FP_BIN_TO_ASCII

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • 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.

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • 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.

Spiegazione del metodo di conversione, p.es. n_ConversionMethod = 16#0214

  1.  (1) Numero di caratteri ASCII per unità convertita (vedere le note per le limitazioni)
  2.  (2) Contenuto registro (esadec.)
  3.  (3) Stringa di caratteri (vedere note)
  4.  (4) Offset in unità di caratteri ASCII (8 bit) per la memorizzazione del risultato

    (I valori X non cambiano)

  5.  (5) Numero di unità a 16 bit (1 word) o a 32 bit (2 word) da convertire
  6.  (6) Contenuto registro (esadec.)
  7.  (7) Valori (dec.)
NOTA

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

Esempi di conversione:

  • s1_ Control=16+H, n_Conversion Method=16#204

    Direzione normale. 2 x 4 caratteri ASCII.

    [/dita/reference/refbody/section/ul/li/p/table/tgroup/tbody/row {"- topic/row "}) (row]

    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

    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.

    [/dita/reference/refbody/section/ul/li/p/table/tgroup/tbody/row {"- topic/row "}) (row]

    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

    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.

    [/dita/reference/refbody/section/ul/li/p/table/tgroup/tbody/row {"- topic/row "}) (row]

    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

    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.

    [/dita/reference/refbody/section/ul/li/p/table/tgroup/tbody/row {"- topic/row "}) (row]

    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

    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.

    [/dita/reference/refbody/section/ul/li/p/table/tgroup/tbody/row {"- topic/row "}) (row]

    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

    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.

    [/dita/reference/refbody/section/ul/li/p/table/tgroup/tbody/row {"- topic/row "}) (row]

    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

    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.

    [/dita/reference/refbody/section/ul/li/p/table/tgroup/tbody/row {"- topic/row "}) (row]

    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

    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.

    [/dita/reference/refbody/section/ul/li/p/table/tgroup/tbody/row {"- topic/row "}) (row]

    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

    DINT, DWORD

    0

    16#00012345

    '12'

    '34'

    '5$xx'

    '$xx$xx'

I valori 'x' non cambiano.

Esempio

Intestazione del POU

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

Corpo del POU

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).

Corpo LD

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

Corpo ST

IF DF(bExecute) then
    F250_BTOA(s1_Control := '16-D', 
        s2_BinaryData := iArray1, 
        n_ConversionMethod := 16#214, 
        d_AsciiData => iAscii1);
END_IF;

L'ultima revisione: 2024-11-22Feedback su questa paginaPanasonic hotline