F251_ATOB

ASCII -> conversione binaria

Converte il codice ASCII memorizzato nell'area specificata da s2_AsciiData in un dato binario a 16 bit/32 bit. 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_BinaryData.

Parametri

Ingresso

s1_Control (STRING)

Stringa di controllo, p.es. D-16

  • D converte dati ASCII decimali
  • H converte i dati esadecimali ASCII
  • + direzione normale
  • - direzione inversa
  • 16 converte i dati ASCII in dati a 16 bit, da -32,768 a +32,767 (16#0 - 16#FFFF)
  • 32 converte i dati ASCII in dati a 32 bit, da -2,147,483,648 a +2,147,483,647 (16#0 - 16#FFFFFFFF)
s2_AsciiData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

Area iniziale per memorizzare i dati ASCII

n_ConversionMethod (WORD, INT, UINT)

Metodo di conversione p.es. 16#404

  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_BinaryData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

Area iniziale per memorizzare il dato binario

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#0413 per il dato ASCII '0123456789012'

Per i dati delimitati da virgole, specificare il numero massimo di dati numerici. Per i dati ASCII decimali sono inclusi spazi, simboli e un punto decimale. L'intervallo di dati è limitato dalla stringa di caratteri di controllo s1_Control.

  1.  (1) Numero di caratteri ASCII per unità convertita
  2.  (2) Contenuto registro (esadec.)
  3.  (3) Stringa di caratteri
  4.  (4) Offset in unità di caratteri ASCII (8 bit) per la memorizzazione del risultato
  5.  (5) Numero di unità a 16 bit (1 word) o a 32 bit (2 word) da convertire

Esempi di conversione per il dato ASCII '0123456789ABCDEF'

  • s1_ Control=H+16, n_ConversionMethod=16#404

    Direzione normale. 4 x 4 caratteri ASCII.

    Dati ASCII

    Dati binari

    Tipo di dato

    Offset in unità word a 16 bit

    Numero esadecimale

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    INT, WORD

    0

    16#2301

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    1

    16#6745

     

    2

    16#AB89

    3

    16#EFCD

  • s1_ Control=H-16, n_ConversionMethod=16#404

    Direzione inversa. 4 x 4 caratteri ASCII.

    Dati ASCII

    Dati binari

    Tipo di dato

    Offset in unità word a 16 bit

    Numero esadecimale

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    INT, WORD

    0

    6#0123

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    1

    16#4567

     

    2

    16#89AB

    3

    16#CDEF

  • s1_ Control=H+16, n_ConversionMethod=16#403

    Direzione normale. 3 x 4 caratteri ASCII.

    Dati ASCII

    Dati binari

    Tipo di dato

    Offset in unità word a 16 bit

    Numero esadecimale

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    INT, WORD

    0

    16#*201

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    1

    16#*534

     

    2

    16#*867

    3

    16#*B9A

  • s1_ Control=H-16, n_ConversionMethod=16#403

    Direzione inversa. 3 x 4 caratteri ASCII.

    Dati ASCII

    Dati binari

    Tipo di dato

    Offset in unità word a 16 bit

    Numero esadecimale

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    INT, WORD

    0

    16#*012

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    1

    16#*345

     

    2

    16#*678

    3

    6#*9AB

  • s1_ Control=H+32, n_ConversionMethod=16#802

    Direzione normale. 8 x 2 caratteri ASCII.

    Dati ASCII

    Dati binari

    Tipo di dato

    Offset in unità word a 16 bit

    Numero esadecimale

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    DINT, DWORD

    0

    16#67452301

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    2

    16#EFCDAB89

  • s1_ Control=H-32, n_ConversionMethod=16#802

    Direzione inversa. 8 x 2 caratteri ASCII.

    Dati ASCII

    Dati binari

    Tipo di dato

    Offset in unità word a 16 bit

    Numero esadecimale

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    DINT, DWORD

    0

    16#01234567

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    2

    16#89ABCDEF

  • s1_ Control=H+32, n_ConversionMethod=16#502

    Direzione normale. 5 x 2 caratteri ASCII.

    Dati ASCII

    Dati binari

    Tipo di dato

    Offset in unità word a 16 bit

    Numero esadecimale

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    DINT, DWORD

    0

    16#***42301

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    2

    16#***97856

  • s1_ Control=H-32, n_ConversionMethod=16#502

    Direzione inversa. 5 x 2 caratteri ASCII.

    Dati ASCII

    Dati binari

    Tipo di dato

    Offset in unità word a 16 bit

    Numero esadecimale

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    DINT, DWORD

    0

    16#***01234

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    2

    16#***56789

* I caratteri extra diventano '0'.

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;
		iArray2: ARRAY [0..1] OF INT:=[2(0)];
			(*Begin ASCII: _1,23,04,-5,6_*)
		iAscii1: ARRAY [0..4] OF WORD:=[5(16#FFFF)];
	END_VAR

Corpo del POU

Quando bExecute è impostato su TRUE, l'istruzione viene eseguita. Converte 2 x 4 caratteri ASCII decimali in un dato binario. Offset = 0 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,F251_ATOB!,Instance,9,3,21,9,,?DEN?Ds1_Control?Ds2_AsciiData?Dn_ConversionMethod?AENO?Cd_BinaryData);
B(B_VARIN,,'D-16',7,5,9,7,);
B(B_VARIN,,iAscii1,7,6,9,8,);
B(B_VARIN,,16#214,7,7,9,9,);
B(B_VAROUT,,iArray2,21,5,23,7,);
B(B_CONTACT,,bExecute,3,4,5,6,R);
B(B_COMMENT,,Result iArray2: [1234~-56],22,7,35,8,);
B(B_COMMENT,,Converts 2x4 decimal ASCII data to binary data. Offset = 1 ASCII character (8-bit).,2,1,35,2,);
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
    F251_ATOB(s1_Control := 'D-16', 
    s2_AsciiData := iAscii1, 
    n_ConversionMethod := 16#214, 
    d_BinaryData => iArray2);
END_IF;

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