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.
Eingang
Steuer- und Formatzeichen in Anführungszeichen
Anfangsadresse zum Speichern der Binärwerte
Anzahl der umzuwandelnden Zahlen: 0–65535
Anfangswert in ASCII-Werten: 0–255
Ausgang
Anfangsadresse zum Speichern der ASCII-Werte
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 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' |
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;
iArray1: ARRAY [0..1] OF INT:=[1234,-56];
iAscii1: ARRAY [0..4] OF WORD:=[5(16#FFFF)];
END_VAR
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).
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
IF DF(bStart) then
FP_BIN_TO_ASCII(s1_Format := '%4d',
s2_BinaryData := iArray1,
n_Conversions := 2,
d_AsciiData => iAscii1);
END_IF;