FP_BIN_TO_ASCII

Umwandlung Binär -> ASCII

Dieser FP-Befehl wandelt die 16-Bit-/32-Bit-Binärwerte im Speicherbereich s2_BinaryData in ASCII-Code um. Die Umwandlungsmethode wird durch das Steuerzeichen von s1_Format festgelegt. Das Umwandlungsergebnis wird in den Speicherbereich d_AsciiData geschrieben.

Parameter

Eingang

s1_Format (STRING)

Steuer- und Formatzeichen in Anführungszeichen

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

Anfangsadresse zum Speichern der Binärwerte

n_Conversions (WORD, INT, UINT)

Anzahl der umzuwandelnden Zahlen: 0–65535

n_AsciiDataStartPosition (INT)

Anfangswert in ASCII-Werten: 0–255

Ausgang

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

Anfangsadresse zum Speichern der ASCII-Werte

Erläuterung der einzelnen Ziffern des Steuercodes s1_Format:

Position im Steuercode

Beschreibung

s1_Format

16-Bit-Steuerungen

32-Bit-Steuerungen

Umwandlungsrichtung

     

+

vorwärts (nur für hexadezimale Zahlen mit Bezeichner x, X)

'+%4X'

Ohne Pluszeichen: rückwärts (Standardeinstellung)

'%4X'

%

Formatzeichenbezeichner (obligatorisch)

 

Padding-Format

     

0

Mit Nullen auffüllen

'%06x'

-

+

Pluszeichen hinzufügen

'%+4d'

-

-

Linksbündig

'%-6d'

-

˽

(Leerzeichen) Leerzeichen statt Pluszeichen hinzufügen

'%˽4d'

-

#

0x für Hexadezimalzahlen einfügen

'%#4X'

-

Immer einen Dezimalpunkt für reelle Zahlen anhängen

'%#8.0f'

-

8

Breite des ASCII-Datenelements

'%08d'

Keine Breite

  • FP_BIN_TO_ASCII: erforderliche Mindestbreite wird angenommen

  • FP_ASCII_TO_BIN und FP_ASCII_CHECK: Komma als Trennzeichen erforderlich

'%d,'

-

Stellen nach Dezimalpunkt

     

.5

Alle Ziffern nach dem Dezimalpunkt

'%8.5f'

-

I

Bezeichner doppelter Länge

z.B. Bezeichner i mit l = Ii -> DINT

'+%4ld'

Formatbezeichner

     

i

INT

'%10i'

u

UINT

'%10u'

-

d

INT

'%6d'

x

Hexadezimalzahl in Kleinschreibung

'+%4x'

X

Hexadezimalzahl in Großschreibung

'+%4X'

b

BCD-Konstanten

'+%5b'

-

f

Fließkommazahl

'+%-6.2f'

-

e

Exponentialzahl 1.23e10

'+%9.3e'

-

E

Exponentialzahl in Großschreibung 1.23E10

'+%9.3E'

-

g

Fließkomma- oder Exponentialzahl

'+%12g'

-

G

Fließkomma- oder Exponentialzahl in Großschreibung

'+%9.3G'

-

  • Bei FP_BIN_TO_ASCII: An das Umwandlungsergebnis kann eine beliebige Zeichenfolge, z. B. 'PANA', angehängt werden.

  • Bei FP_ASCII_TO_BIN und FP_ASCII_CHECK: Nur Komma ist zulässig.

'+%8dPANA'

-

verfügbar auf 16-Bit/32-Bit-SPS

Beispiele für das Steuerzeichen s1_Format

  • Beispiel: '+%4X' wandelt einen Binärwert in einen Wert mit einer Breite von vier Zeichen in Großschreibung in Vorwärtsrichtung um (gültig für 16-Bit/32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    16#12A

    '˽12A'

  • Beispiel: '%4X' wandelt einen Binärwert in einen Wert mit einer Breite von vier Zeichen in Großschreibung in Rückwärtsrichtung um (gültig für 16-Bit/32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    16#B2A

    '˽B2A'

  • Beispiel: '%06d' wandelt einen Binärwert in einen Wert mit einer Breite von sechs Zeichen, Dezimalwert mit drei führenden Nullen um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    16#100

    '000100'

  • Beispiel: '%+4d' wandelt einen Binärwert in einen Wert mit einer Breite von vier Zeichen, Dezimalwert, Vorzeichen + hinzugefügt um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    100

    '+100 ˽ ˽'

  • Beispiel: '%-6d' wandelt einen Binärwert in einen Wert mit einer Breite von sechs Zeichen, linksbündig um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    100

    '100˽ ˽ ˽'

  • Beispiel: '%˽4d' wandelt einen Binärwert in einen Wert mit einer Breite von vier Zeichen mit einem führenden Leerzeichen um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    100

    '˽100'

  • Beispiel: '%#8.0f' wandelt einen Binärwert in einen Wert mit einer Breite von acht Zeichen, Fließkommazahl, vier führende Leerzeichen um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    123.45678

    '˽ ˽ ˽ ˽123.'

  • Beispiel: '%8.3f' wandelt einen Binärwert in einen Wert mit einer Breite von acht Zeichen, drei Stellen nach dem Dezimalpunkt um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    123.45599

    '˽123.456'

  • Beispiel: '+%10u' wandelt einen Binärwert in einen Wert mit einer Breite von 10 Zeichen, sieben führende Leerzeichen, vorzeichenlose 16-Bit-Ganzzahl um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    -100

    '˽ ˽ ˽ ˽ ˽ ˽ ˽100'

  • Beispiel: '%06d' wandelt einen Binärwert in einen Wert mit einer Breite von sechs Zeichen mit drei führenden Leerzeichen um (gültig für 16-Bit/32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    100

    '˽ ˽ ˽100'

    Zulässiger Bereich für den Wert vor dem Bezeichner:

    1–15 vor Bezeichnern d, ld, i, li

    1–4 vor Bezeichnern X

    1–8 vor Bezeichnern lX

    wenn keine Breite festgelegt ist, wird ein Komma angehängt, z. B. '%d,' (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    100

    '100,'

    • FP_BIN_TO_ASCII: erforderliche Mindestbreite wird angenommen

    • FP_ASCII_TO_BIN und FP_ASCII_CHECK: Komma als Trennzeichen erforderlich

  • Beispiel: '+%4ld' wandelt einen Binärwert in einen Wert mit einer Breite von vier Zeichen um, erfordert DINT oder DWORD für das Umwandlungsergebnis (gültig für 16-Bit/32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    100

    '˽100'

  • Beispiel: '+%6i' wandelt einen Binärwert in einen Wert mit einer Breite von sechs Zeichen, drei führende Leerzeichen, vorzeichenbehaftete 16-Bit-Ganzzahl in Vorwärtsrichtung um (gültig für 16-Bit/32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    -100

    '˽ ˽ ˽-100'

  • Beispiel: '+%6d' wandelt einen Binärwert in einen Wert mit einer Breite von sechs Zeichen mit drei führenden Leerzeichen in Vorwärtsrichtung um (gültig für 16-Bit/32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    100

    '000100'

  • Beispiel: '+%4X' wandelt einen Binärwert in einen Wert mit einer Breite von vier Zeichen, Hexadezimalzahl in Großschreibung in Vorwärtsrichtung um (gültig für 16-Bit/32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    16#12A

    '˽12A'

  • Beispiel: '+%5b' wandelt einen Binärwert in einen Wert mit einer Breite von fünf Zeichen, BCD-Werte um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    16#123

    '˽123'

  • Beispiel: '+%-6.2f' wandelt einen Binärwert in einen Wert mit einer Breite von sechs Zeichen, linksbündig, zwei Stellen nach dem Dezimalpunkt um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    1.2345

    '1.23˽'

  • Beispiel: '+%9.3e' wandelt einen Binärwert in einen Wert mit einer Breite von 9 Zeichen, 3 Stellen nach dem Dezimalpunkt, Exponentialzahl in Kleinschreibung um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    1234.5678

    '1.235e+03'

  • Beispiel: '1.235E+03' wandelt einen Binärwert in einen Wert mit einer Breite von 9 Zeichen, 3 Stellen nach dem Dezimalpunkt, Exponentialzahl in Großschreibung um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    1234.5678

    '1.235E+03'

  • Beispiel: '+%12g' wandelt einen Binärwert in einen Wert mit einer Breite von 12 Zeichen, Fließkommazahl um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    1234.5678

    '˽ ˽ ˽ ˽ ˽1234.57'

  • Beispiel: '+%9.3G' wandelt einen Binärwert in einen Wert mit einer Breite von neun Zeichen, drei Stellen nach dem Dezimalpunkt, Fließkommazahl, Exponentialzahl in Großschreibung um (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    1234

    '˽ ˽ ˽1.E+03'

  • Bei FP_BIN_TO_ASCII: An das Umwandlungsergebnis kann eine beliebige Zeichenfolge angehängt werden.

    Beispiel: '+%8dPANA' wandelt einen Binärwert in einen Wert mit einer Breite von acht Zeichen, Dezimalzahl um, 'PANA' wird angehängt (gültig nur für 32-Bit-SPS)

    Binärwerte

    Umwandlungsergebnis in ASCII Werten

    100

    '˽ ˽ ˽ ˽ ˽100PANA'

Fehleralarmmerker

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

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

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

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

  • wenn die Anzahl der mit n_Conversions 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 sFormat fehlerhaft ist.

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

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

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

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

  • wenn das Ergebnis der Umwandlung den Speicherplatz überschreitet.

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
		bStart: BOOL:=FALSE;
		iArray1: ARRAY [0..1] OF INT:=[1234,-56];
		iAscii1: ARRAY [0..4] OF WORD:=[5(16#FFFF)];
	END_VAR

POE-Rumpf

Wenn die Variable bStart von FALSE auf TRUE gesetzt wird, wird die Funktion ausgeführt. Sie 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 := 10 ;
        NETWORK_BODY
B(B_VARIN,,'%4d',10,5,12,7,);
B(B_VARIN,,iArray1,10,6,12,8,);
B(B_VARIN,,2,10,7,12,9,);
B(B_VAROUT,,iAscii1,25,5,27,7,);
B(B_CONTACT,,bStart,7,4,9,6,R);
B(B_COMMENT,,Converts two 16-bit units to 2x4 decimal ASCII data. Offset = 1 ASCII character (8-bit).,5,1,38,3,);
B(B_F,FP_BIN_TO_ASCII!,,12,3,25,10,,?DEN?hs1_Format?ds2_BinaryData?dn_Conversions?dn_AsciiDataStartPosition?AENO?cd_AsciiData);
B(B_VARIN,,1,10,8,12,10,);
B(B_COMMENT,,Result iAscii1: 'x1234 -56x',28,8,41,9,);
L(9,5,12,5);
L(1,5,7,5);
L(1,0,1,10);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF DF(bStart) then
    FP_BIN_TO_ASCII(s1_Format := '%4d', 
        s2_BinaryData := iArray1, 
        n_Conversions := 2, 
        d_AsciiData => iAscii1);
END_IF;

Letzte Änderung: 2024-12-18Feedback zu dieser SeitePanasonic Hotline