F251_ATOB

ASCII -> Binärumwandlung

Wandelt den ASCII-Code, der im Bereich s2_AsciiData festgelegt ist, in 16-Bit/32-Bit-Binärwerte um. Die Umwandlungsmethode wird durch n_ConversionMethod entsprechend den vier Steuerzeichen von s1_Control festgelegt. Das Umwandlungsergebnis wird in den Speicherbereich d_BinaryData geschrieben.

Parameter

Eingang

s1_Control (STRING)

Steuerzeichen, z.B. D-16

  • D: wandelt dezimale ASCII-Werte um
  • H: wandelt hexadezimale ASCII-Werte um
  • + Vorwärtsrichtung
  • - Rückwärtsrichtung
  • 16 wandelt ASCII-Werte in 16-Bitwerte um, -32768 bis +32767 (16#0 bis 16#FFFF)
  • 32 wandelt ASCII-Werte in 32-Bitwerte um, -2147483648 bis +2147483647 (16#0 bis 16#FFFFFFFF)
s2_AsciiData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

Anfangsbereich zum Speichern der ASCII-Werte

n_ConversionMethod (WORD, INT, UINT)

Umwandlungsmethode z.B. 16#404

  1.  (1) Anzahl der ASCII-Zeichen pro umgewandelter Einheit
  2.  (2) Offset in ASCII-Zeicheneinheiten (8 Bit)
  3.  (3) Anzahl der konvertierten 16- oder 32-Bit-Einheiten (1 oder 2 Worte)

(nähere Erläuterungen finden Sie in den nachstehenden Tabellen)

Ausgang

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

Anfangsbereich zum Speichern der Binärwerte

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • wenn das Steuerzeichen s1_Control fehlerhaft ist.

  • wenn die Vorwärtsrichtung (+) in s1_Control angegeben, und das Format dezimal ist.

  • wenn die Anzahl der ASCII-Zeichen pro umgewandelter Einheit, angegeben in n_ConversionMethod, für 16-Bitwerte den Wert 4 und für 32-Bitwerte den Wert 8 übersteigt und das hexadezimale Format durch s1_Control angegeben ist.

  • wenn 0 als Anzahl der 16- oder 32-Bit-Einheiten (1 oder 2 Worte) angegeben ist, die mit n_ConversionMethod umgewandelt werden sollen.

  • wenn die Anzahl der mit n_ConversionMethod umzuwandelnden 16- oder 32-Bit Dezimalzahlen den Speicherbereich der ASCII-Werte übersteigt.

  • wenn das Ergebnis der Umwandlung den Speicherplatz überschreitet.

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • wenn das Steuerzeichen s1_Control fehlerhaft ist.

  • wenn die Vorwärtsrichtung (+) in s1_Control angegeben, und das Format dezimal ist.

  • wenn die Anzahl der ASCII-Zeichen pro umgewandelter Einheit, angegeben in n_ConversionMethod, für 16-Bitwerte den Wert 4 und für 32-Bitwerte den Wert 8 übersteigt und das hexadezimale Format durch s1_Control angegeben ist.

  • wenn 0 als Anzahl der 16- oder 32-Bit-Einheiten (1 oder 2 Worte) angegeben ist, die mit n_ConversionMethod umgewandelt werden sollen.

  • wenn die Anzahl der mit n_ConversionMethod umzuwandelnden 16- oder 32-Bit Dezimalzahlen den Speicherbereich der ASCII-Werte übersteigt.

  • wenn das Ergebnis der Umwandlung den Speicherplatz überschreitet.

Erläuterung der Umwandlungsmethode, z.B. n_ConversionMethod = 16#0413 für die ASCII-Werte '0123456789012'

Geben Sie für kommagetrennte Daten die Höchstzahl numerischer Daten an. Bei dezimalen ASCII-Daten sind Leerzeichen, Symbole sowie ein Dezimalpunkt enthalten. Der Datenbereich wird von der Steuerzeichenkette s1_Control eingeschränkt.

  1.  (1) Anzahl der ASCII-Zeichen pro umgewandelter Einheit
  2.  (2) Registerinhalt (hex.)
  3.  (3) Zeichenfolge
  4.  (4) Offset in ASCII-Zeicheneinheiten (8 Bit) zum Speichern der Ergebnisse
  5.  (5) Anzahl der zu konvertierenden 16- oder 32-Bit-Einheiten (1 oder 2 Worte)

Umwandlungsbeispiele für die ASCII-Werte '0123456789ABCDEF'

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

    Vorwärtsrichtung. 4 x 4 ASCII-Zeichen.

    ASCII-Werte

    Binärwerte

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Rückwärtsrichtung. 4 x 4 ASCII-Zeichen.

    ASCII-Werte

    Binärwerte

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Vorwärtsrichtung. 3 x 4 ASCII-Zeichen.

    ASCII-Werte

    Binärwerte

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Rückwärtsrichtung. 3 x 4 ASCII-Zeichen.

    ASCII-Werte

    Binärwerte

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Vorwärtsrichtung. 8 x 2 ASCII-Zeichen.

    ASCII-Werte

    Binärwerte

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Rückwärtsrichtung. 8 x 2 ASCII-Zeichen.

    ASCII-Werte

    Binärwerte

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Vorwärtsrichtung. 5 x 2 ASCII-Zeichen.

    ASCII-Werte

    Binärwerte

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Rückwärtsrichtung. 5 x 2 ASCII-Zeichen.

    ASCII-Werte

    Binärwerte

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

* Die extra Zeichen werden '0'.

Beispiel

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	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

POE-Rumpf

Wenn bExecute auf TRUE gesetzt ist, wird der Befehl ausgeführt. Wandelt 2 x 4 dezimale ASCII-Zeichen in Binärwerte um. Offset = 0 ASCII-Zeichen (8-Bit).

KOP-Rumpf

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

ST-Rumpf

IF DF(bExecute) then
    F251_ATOB(s1_Control := 'D-16', 
    s2_AsciiData := iAscii1, 
    n_ConversionMethod := 16#214, 
    d_BinaryData => iArray2);
END_IF;

Letzte Änderung: 2024-11-22Feedback zu dieser SeitePanasonic Hotline