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.
Die FP-Befehle FP_ASCII_TO_BIN und FP_ASCII_CHECK unterscheiden nicht zwischen Groß- und Kleinschreibung.
Eingang
Steuer- und Formatzeichen in Anführungszeichen
Anfangsadresse zum Speichern der ASCII-Werte
Anzahl der umzuwandelnden Zahlen: 0–65535
Anfangswert in ASCII-Werten: 0–255
Ausgang
Anfangsadresse zum Speichern der Binärwerte
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
|
'%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' |
- |
● |
|
|
'+%8dPANA' |
- |
● |
● verfügbar auf 16-Bit/32-Bit-SPS
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) |
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.
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.
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
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).
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
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;