FP_FORMAT_STRING

Formatierte Daten in eine Ergebniszeichenfolge schreiben

Dieser Befehl schreibt die in Data1 (erweiterbar auf Data16) angegebenen formatierten Daten in eine formatierte Zeichenfolge, deren Format durch das Steuerzeichen sFormat festgelegt wird.

Eingang

sFormat (STRING)

Steuerzeichen mit Formatbezeichnern, die definieren, wie die formatierte Zeichenfolge erstellt werden soll

  • Zeichenfolgenvariable oder Zeichenkonstante (bis zu 256 Zeichen) mit der Definition, wie die Zeichenfolge erstellt werden soll.

  • Das Steuerzeichen besteht aus dem Text, dem Formatbezeichner (%d,%e usw.), dem Code für Zeilenvorschub (\n) und dem Code für Tabulator (\t).

  • Die formatierte Zeichenfolge kann bis zu 4096 Zeichen enthalten. Bei mehr Zeichen tritt ein Operationsfehler auf.

  • Für einen Formatbezeichner können Sie zu bis 16 Ziffern angeben. Bei mehr Ziffern tritt ein Operationsfehler auf.

  • Die maximale Zeichenzahl nach der Umwandlung von 1 Wert beträgt 32, exklusive %s und %S. Bei mehr Zeichen tritt ein Operationsfehler auf.

  • Alle Zeichenfolgen, die nicht als Formatbezeichner erkannt werden, werden als zu formatierender Text behandelt.

Data1 (INT, UINT, WORD, DINT, UDINT, DWORD, REAL, LREAL, STRING)

Zu formatierende Daten

  • Variablendaten, die in die formatierte Zeichenfolge geschrieben werden sollen.

  • Die Variablendaten in der im Steuerzeichen angegebenen Reihenfolge anordnen.

Ausgang

Ergebnis (STRING)

Formatierte Zeichenfolge mit Daten im ASCII-Format.

Anmerkungen

  • Der Eingang Data1 ist auf max. 16 Eingänge erweiterbar.

  • Die Anzahl der Eingänge Data1..DataN muss der Anzahl der Formatbezeichner in der in sFormat angegebenen Eingangszeichenfolge entsprechen.

  • Der Datentyp am Eingang DataN muss mit dem entsprechenden Formatbezeichner in sFormat übereinstimmen (siehe Tabelle unten).

Erläuterungen und Beispiele zum Steuerzeichen sFormat

sFormat: z.B. %+12.5d,

Verwenden Sie Zeichenfolgendaten im unten dargestellten Format, um Typ, Zeichenanzahl und Nachkommastellen der formatierten Zeichenfolge anzugeben. Abhängig vom umzuwandelnden Datentyp können auch verschiedene Optionen (z.B. Einfügen eines Vorzeichens oder von Leerzeichen) ausgewählt werden.

Position im Beispiel

Beschreibung

sFormat

Binärwerte

Umwandlungsergebnis in ASCII-Werten

Kommentar

0

Zero-Padding

'%05d'

100

'00100'

Wenn die Zeichenanzahl spezifiziert ist, kann Zero-Padding verwendet werden, indem dem Steuerzeichen sFormat an dieser Position null (0) hinzugefügt wird.

+

Pluszeichen hinzufügen

'%+4d'

100

'+100'

Breite vier Zeichen, Dezimalwert, Pluszeichen hinzugefügt

-

Linksbündig

'%-6d'

100

'100'

Breite sechs Zeichen, Dezimalwert, linksbündig

(Leerzeichen) Leerzeichen statt Pluszeichen hinzufügen

'%4d'

100

'100'

Breite vier Zeichen, Dezimalwert, aufgefüllt mit Leerzeichen

#

0x für Hexadezimalzahlen einfügen

'%#4X'

100

'0X64'

Breite vier Zeichen, numerischer Wert im hexadezimalen Format beginnend mit 0X

Immer einen Dezimalpunkt für reelle Zahlen anhängen

'%#8.0f'

123.45678

'123.'

Breite acht Zeichen, Fließkommazahl, vier führende Leerzeichen

12

Breite des ASCII-Datenelements (mit oder ohne Komma)

Wenn die Breite kleiner ist als die für diesen Wert erforderliche Zeichenanzahl, tritt ein Operationsfehler auf. Siehe dazu "Fehlermerker".

'%012d'

100

'000000000100'

Breite 12 Zeichen mit neun führenden Nullen

Keine Breite:

'%d,'

100

'100,'

Keine Breite festgelegt, Komma angehängt

Stellen nach Dezimalpunkt

.5

Alle Ziffern nach dem Dezimalpunkt

'%8.3f'

123.45599

'123.456'

Breite acht Zeichen, drei Stellen nach dem Dezimalpunkt

12.5

Gibt die Gesamtzeichenanzahl (n) und die Anzahl der Nachkommastellen (m) mit [n.m], [n] oder [.m] an. Die Anzahl der Nachkommastellen (m) ändert sich entsprechend dem Typ der Umwandlungswerte.

d , Ld, i , Li, u ,Lu, x , Lx , b, Lb

Gibt die Zeichenanzahl in numerischen Zeichenfolgen an.

f, Lf, e, Le, E, LE

Gibt die Anzahl der Nachkommastellen an.

g, Lg, G, LG

Gibt die Anzahl der signifikanten Stellen an.

Typ der umzuwandelnden Daten

'%06d'

100

'100'

d , i , u , x , X , b: Zeichenanzahl in numerischen Zeichenfolgen

f: Anzahl der Nachkommastellen

g: Anzahl der signifikanten Stellen

d

vorzeichenbehaftete Ganzzahl ® dezimaler ASCII-Wert

'%6d'

100

'000100'

Breite sechs Zeichen, Dezimalwert mit drei führenden Nullen

u

vorzeichenlose Ganzzahl ® dezimaler ASCII-Wert

'%10u'

-100

'100'

Breite zehn Zeichen, sieben führende Leerzeichen, vorzeichenlose ganze Zahl

x

vorzeichenlose Ganzzahl ® hexadezimaler ASCII-Wert

'%4x'

16#12A

'12a'

Breite vier Zeichen, Hexadezimalzahl in Kleinschreibung

X

Hexadezimalzahl in Großschreibung

'%4X'

16#12A

'12A'

Breite vier Zeichen, Hexadezimalzahl in Großschreibung

b

BCD-Ganzzahl ® hexadezimaler ASCII-Wert

'%5b'

16#123

'123'

Breite fünf Zeichen, BCD-Werte

f

Fließkommazahl (reell) ® Fließkomma-ASCII-Wert

'%-6.2f'

1.2345

'1.23'

Breite sechs Zeichen, linksbündig, zwei Stellen nach dem Dezimalpunkt

e

Fließkommazahl (reell) ® ASCII-Wert in Exponentialschreibweise

'%9.3e'

1234.5678

'1.235e+03'

Breite neun Zeichen, drei Stellen nach dem Dezimalpunkt, Exponentialzahl in Kleinschreibung

E

Exponentialzahl in Großschreibung 1.23E10

'%9.3E'

1234.5678

'1.235E+03'

Breite neun Zeichen, drei Stellen nach dem Dezimalpunkt, Exponentialzahl in Großschreibung

g

Fließkommazahl (reell) ® Fließkomma-ASCII-Wert oder ASCII-Wert in Exponentialschreibweise

'%12g'

1234.5678

'1234.57'

Breite 12 Zeichen, Fließkommazahl

G

Fließkomma- oder Exponentialzahl in Großschreibung

'%#9.3G'

1234

'1.E+03'

Breite neun Zeichen, drei Stellen nach Dezimalpunkt

s

string ®ASCII

'%10s'

abcdef

'abcdef'

Zeichenfolgendaten (für die angegebene Zeichenanzahl)

S

Zeichenfolge ®ASCII-Wert in Großschreibung

'%-10S'

abcDEF

'abcDEF'

Zeichenfolgendaten mit Unterscheidung zwischen Groß- und Kleinschreibung

Umwandlungswerte für das Steuerzeichen sFormat

Steuerzeichen

Binärwerte vor der Umwandlung

ASCII-Werte nach der Umwandlung

Beispiel

'%d' oder '%i'

16-Bit-Daten (vorzeichenbehaftete Ganzzahl)

Dezimale ASCII-Werte

'%d' , '%5d' , '%+5d"

'%-5d' , '%05d' , '%10.5d' , '%d,' , '% d'

'%Ld' oder '%Li'

32-Bit-Daten (vorzeichenbehaftete Ganzzahl)

'%u'

16-Bit-Daten (vorzeichenlose Ganzzahl)

'%u' , '%5u' , '%+5u'

'%-5u' , '%05u' , '%10.5u' , '%u,'

'%Lu'

32-Bit-Daten (vorzeichenlose Ganzzahl)

'%x'

16-Bit-Daten

Hexadezimale ASCII-Werte (Vorwärts-/Rückwärtsrichtung)

'%x' , '%5x' , '%-5x'

'%05x' , '%10.5x' , '%x,' , '%#x' , '%X'

'%Lx'

32-Bit-Daten

'%b'

16-Bit-BCD-Daten

'%b' , '%5b' , '%-5b'

'%05b' , '%10.5b' , '%b,'

'%Lb'

32-Bit-BCD-Daten

'%f'

32-Bit-Fließkommawerte mit einer Nachkommastelle

Fließkomma-ASCII-Werte

'%f' , '%5.2f' , '%+5.2f'

'%-5.2f' , '%05.2f' , '%f,' , '%#f' , '% f'

'%Lf'

64-Bit-Fließkommawerte mit zwei Nachkommastellen

'%e'

32-Bit-Fließkommawerte mit einer Nachkommastelle

ASCII-Werte in Exponentialschreibweise

'%e' , '%5.2e' , '%+5.2e'

'%-5.2e' , '%05.2e' ,'%e,'

'%#5.2e' , '% e' , '%E'

'%Le'

64-Bit-Fließkommawerte mit zwei Nachkommastellen

'%LE'

lange 64-Bit-Fließkommawerte mit zwei Nachkommastellen

'%#5.2E' , '% E' , '%E'

'%g'

32-Bit-Fließkommawerte mit einer Nachkommastelle

ASCII-Werte in Exponentialschreibweise oder Fließkomma-ASCII-Werte (je nachdem, welche in der relevanten Schreibweise kürzer sind)

'%g' , '%5.2g' , '%+5.2g'

'%-5.2g' , '%05.2g' ,'%g," '%#5.2g' , '%G'

'%Lg'

64-Bit-Fließkommawerte mit zwei Nachkommastellen

'%LG'

lange 64-Bit-Fließkommawerte mit zwei Nachkommastellen

'%-5.2G' , '%05.2G' ,'%G," '%#5.2G' , '%G'

'%s'

Zeichenfolgendaten

Zeichenfolgendaten (für die angegebene Zeichenanzahl)

'%s' , '%5s' , '%-5s' , '%-05s'

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 das Ergebnis der Umwandlung den Speicherplatz überschreitet.

  • wenn für das ASCII-Datenelement eine Breite angegeben wird, die kleiner als die für den Wert erforderliche Zeichenanzahl ist

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 das Ergebnis der Umwandlung den Speicherplatz überschreitet.

  • wenn für das ASCII-Datenelement eine Breite angegeben wird, die kleiner als die für den Wert erforderliche Zeichenanzahl ist

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
		bFormat: BOOL:=FALSE;
		sFormatString: STRING[50]:='Current Value: %6d [Min: %6d, Max: %6d]';
		sFormattedString: STRING[50]:='';
		iCurrentValue: INT:=815;
		iMin: INT:=-16756;
		iMax: INT:=23456;	END_VAR

KOP-Rumpf

Wenn die Variable bStart von FALSE auf TRUE gesetzt wird, wird die Funktion ausgeführt.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_CONTACT,,bFormat,7,1,9,3,);
B(B_F,E_FP_FORMAT_STRING-3!,,25,0,36,7,,?DEN?dsFormat?dData1?dData2?dData3?AENO?c);
B(B_VARIN,,sFormatString,23,2,25,4,);
B(B_VAROUT,,sFormattedString,36,2,38,4,);
B(B_VARIN,,iCurrentValue,23,3,25,5,);
B(B_VARIN,,iMin,23,4,25,6,);
B(B_VARIN,,iMax,23,5,25,7,);
L(1,0,1,7);
L(1,2,7,2);
L(9,2,25,2);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

if (bFormat) then
    sFormattedString := FP_FORMAT_STRING(sFormatString,
                                         iCurrentValue, iMin, iMax);
end_if;

Letzte Änderung am: 2022-11-11Feedback zu dieser SeitePanasonic Hotline