F250_BTOA

Binär -> ASCII Wandlung

Dieser Befehl wandelt die 16-Bit/32-Bit binärcodierten Werte aus dem Bereich in ASCII-Code um, der durch s2_BinaryData angegeben wird. Die Umwandlungsmethode wird durch n_ConversionMethod entsprechend den vier Steuerzeichen von s1_Control festgelegt. Das Umwandlungsergebnis wird in den Speicherbereich d_AsciiData geschrieben.

Parameter

Eingang

s1_Control (STRING)

Steuerzeichen

  1.  (1) D: wandelt in dezimale ASCII-Werte um

    H: wandelt in hexadezimale ASCII-Werte um

  2.  (2) + Vorwärtsrichtung

    - Rückwärtsrichtung

  3.  (3) 16: wandelt 16-Bit-Einheiten (1 Wort) um

    32: wandelt 32-Bit-Einheiten (2 Worte) um

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

Anfangsbereich zum Speichern der Binärwerte

n_ConversionMethod (WORD, INT, UINT)

Umwandlungsmethode

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

Anfangsbereich zum Speichern der ASCII-Werte

Anmerkungen

Wir empfehlen, anstelle von diesem F-Befehl den entsprechenden FP7-Befehl zu verwenden: FP_BIN_TO_ASCII

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#0214

  1.  (1) Anzahl der ASCII-Zeichen pro umgewandelter Einheit (siehe Hinweis für Einschränkungen)
  2.  (2) Registerinhalt (hex.)
  3.  (3) Zeichenfolge (siehe Hinweis)
  4.  (4) Offset in ASCII-Zeicheneinheiten (8 Bit) zum Speichern der Ergebnisse

    ('X' Werte ändern sich nicht.)

  5.  (5) Anzahl der zu konvertierenden 16- oder 32-Bit-Einheiten (1 oder 2 Worte)
  6.  (6) Registerinhalt (hex.)
  7.  (7) Werte (dec.)
Anmerkung

Anzahl der ASCII-Zeichen (8 Bit) pro umgewandelter Einheit

  • Umwandlung von 16-Bit Binäreinheiten in hexadezimale ASCII-Werte:

    Wertebereich: 16#1–16#4

  • Umwandlung von 32-Bit Binäreinheiten in hexadezimale ASCII-Werte:

    Wertebereich: 16#1–16#8

  • Umwandlung von Binärwerteinheiten in dezimale ASCII-Werte:

    Wertebereich: 16#1–16#F

Umwandlungsbeispiele:

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

    Vorwärtsrichtung. 2 x 4 ASCII-Zeichen.

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

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

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

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

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Vorwärtsrichtung. 2 x 3 ASCII-Zeichen.

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

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

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

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

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Vorwärtsrichtung. 1 x 8 ASCII-Zeichen.

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

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

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

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

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

    Vorwärtsrichtung. 1 x 5 ASCII-Zeichen.

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

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    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

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

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

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    Datentyp

    Offset in 16-Bit-Worteinheiten

    Hexadezimalzahl

    D

    D+1

    D+2

    D+3

    DINT, DWORD

    0

    16#00012345

    '12'

    '34'

    '5$xx'

    '$xx$xx'

'x' Werte ändern sich nicht.

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;
		iArray1: ARRAY [0..1] OF INT:=[1234,-56];
		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 zwei 16-Bit-Einheiten in 2 x 4 dezimale ASCII-Werte um. Offset = 1 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,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

ST-Rumpf

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

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