FP_ASCII_TO_BIN

Umwandlung ASCII -> Binär

Dieser FP-Befehl wandelt den ASCII-Code, der im Speicherbereich s2_AsciiData festgelegt ist, in 16-Bit-/32-Bit-Binärwerte um. Die Umwandlungsmethode wird durch s1_Format festgelegt. Das Umwandlungsergebnis wird in den Speicherbereich d_BinaryData geschrieben.

Anmerkung

Die FP-Befehle FP_ASCII_TO_BIN und FP_ASCII_CHECK unterscheiden nicht zwischen Groß- und Kleinschreibung.

Parameter

Eingang

s1_Format (STRING)

Steuer- und Formatzeichen in Anführungszeichen

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

Anfangsadresse zum Speichern der ASCII-Werte

n_Conversions (WORD, INT, UINT)

Anzahl der umzuwandelnden Zahlen: 0–65535

n_AsciiDataStartPosition (INT)

Anfangswert in ASCII-Werten: 0–255

Ausgang

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

Anfangsadresse zum Speichern der Binärwerte

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 ASCII-Wert mit einer Breite von vier Zeichen in Großbuchstaben in Vorwärtsrichtung um (gültig für 16-Bit/32-Bit-SPS)

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽12A'

    16#12A (im hexadezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽B2A'

    16#B2A (im hexadezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '000100'

    16#100 (im hexadezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '+100 ˽ ˽'

    100 (im dezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '100˽ ˽ ˽'

    100 (im dezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽100'

    100 (im dezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽ ˽ ˽ ˽123.'

    123,45678 (im dezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽123.456'

    123,45599 (im dezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽ ˽ ˽ ˽ ˽ ˽ ˽100'

    -100 (im dezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽ ˽ ˽100'

    100 (im dezimalen Format angezeigt)

    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)

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '100,'

    100 (im dezimalen Format angezeigt)

    • FP_BIN_TO_ASCII: erforderliche Mindestbreite wird angenommen

    • FP_ASCII_TO_BIN und FP_ASCII_CHECK: Komma als Trennzeichen erforderlich

  • Beispiel: '+%4ld' wandelt einen ASCII-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)

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽100'

    100 (im dezimalen Format angezeigt)

  • Beispiel: '+%6i' wandelt einen ASCII-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)

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽ ˽ ˽-100'

    -100 (im dezimalen Format angezeigt)

  • Beispiel: '+%6d' wandelt einen ASCII-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)

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '000100'

    100 (im dezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽12A'

    16#12A (im hexadezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽123'

    16#123 (im hexadezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '1.23˽'

    1,2345 (im dezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '1.235e+03'

    1234.5678 (im dezimalen Format angezeigt)

  • Beispiel: '1.235E+03' wandelt einen ASCII-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)

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '1.235E+03'

    1234.5678 (im dezimalen Format angezeigt)

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽ ˽ ˽ ˽ ˽1234.57'

    1234.5678 (im dezimalen Format angezeigt)

  • Beispiel: '+%9.3G' wandelt einen ASCII-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)

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽ ˽ ˽1.E+03'

    1234 (im dezimalen Format angezeigt)

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

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

    ASCII-Werte

    Umwandlungsergebnis in Binärwerten

    '˽ ˽ ˽ ˽ ˽100PANA'

    100 (im dezimalen Format angezeigt)

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;
		sExample1: STRING[32]:='*1234,5678,';
		arrayValuesExample1: ARRAY [0..1] OF UINT:=[2(0)];
	END_VAR

POE-Rumpf

Wenn bStart auf TRUE gesetzt ist, wird der Befehl ausgeführt. Wandelt 2 x 4 dezimale ASCII-Zeichen in Binärwerte 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 := 8 ;
        NETWORK_BODY
B(B_VARIN,,'%d~',26,2,28,4,);
B(B_VARIN,,2,26,4,28,6,);
B(B_VARIN,,1,26,5,28,7,);
B(B_VAROUT,,arrayValuesExample1,41,2,43,4,);
B(B_F,Adr_Of_VarOffs_I!,,14,2,23,6,,?D@'Var'?DOffs?CAdr);
B(B_VARIN,,sExample1,12,3,14,5,);
B(B_VARIN,,2,12,4,14,6,);
B(B_F,FP_ASCII_TO_BIN!,,28,0,41,7,,?DEN?hs1_Format?ds2_AsciiData?dn_Conversions?dn_AsciiDataStartPosition?AENO?cd_BinaryData);
B(B_CONTACT,,bStart,5,1,7,3,);
L(23,4,28,4);
L(7,2,28,2);
L(1,2,5,2);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

If (bStart) then
    FP_ASCII_TO_BIN(s1_Format := '%d,',
                s2_AsciiData := Adr_Of_VarOffs(Var := sExample1, Offs := 2),
                n_Conversions := 2, 
                n_AsciiDataStartPosition := 1,
                d_BinaryData => arrayValuesExample1);
End_if;

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