Formatspezifikation

Diese Formatspezifikation wird von den Funktionsbausteinen FB_FormatString und FB_FormatString2 sowie der Funktion F_FormatArgToStr verwendet. Während die Formatspezifikation den Funktionsbausteinen über eine String-Eingangsvariable übergeben wird, wird sie der Funktion über die einzelnen Funktionsparameter übergeben.

Die Formatspezifikation umfasst verschiedene erforderliche und optionale Parameterfelder:

Die einfachste Formatspezifikation beinhaltet nur das Prozentzeichen und das Type-Feld (z. B. %s). Alle Zeichen, die dem Prozentzeichen folgen, werden bis zu dem Type-Feld als Parameterfelder ausgewertet. Zeichen vor dem Prozentzeichen und hinter dem Type-Feld werden in den Ausgabestring kopiert. Beim Auftreten von nicht identifizierbaren oder unzulässigen Zeichen wird die Formatierung mit einem Fehler abgebrochen. Um das Prozentzeichen in dem Ausgabestring auszugeben, verwenden Sie zwei nacheinander folgende Prozentzeichen (%%).

Type

Erforderliches Parameterfeld. Das Type-Feld beinhaltet ein ASCII-Zeichen (Character), das bestimmt, ob das dazugehörige Argument als String, Integer oder Fließkommazahl interpretiert wird. Beachten Sie, dass einige der Type-Feld-Parameter „case-sensitive“ sind.

Typ

Argument

Ausgabe

b, B

BYTE, WORD, DWORD, REAL1,SINT2, INT2, DINT2, USINT, UINT, UDINT

Binärstring (z. B. '101010111000')

o, O

BYTE, WORD, DWORD, REAL1,SINT2, INT2, DINT2, USINT, UINT, UDINT

Oktalstring

u, U

BYTE, WORD, DWORD, SINT2, INT2, DINT2, USINT, UINT, UDINT

Dezimalstring ohne Vorzeichen

c, C

BYTE, USINT

Einzelner (ASCII) Byte-Character

f, F

REAL3, LREAL

Fließkommazahl

Der String hat die Form [ – ]dddd.dddd, (dddd sind Dezimalzahlen).

Die Anzahl der Zahlen vor dem Dezimalpunkt hängt von dem Wert der Fließkommazahl ab. Die Anzahl der Zahlen hinter dem Dezimalpunkt hängt von der geforderten Präzision ab.

Ein Vorzeichen erscheint nur bei negativen Werten. Bei einem unendlichen positiven Wert wird '#INF' und bei einem unendlichen negativen Wert wird '-#INF' zurückgeliefert.

Wenn die übergebene Variable einen unzulässigen Wert besitzt (NaN, Not-a-Number), dann wird '#QNAN' oder '-#QNAN' zurückgeliefert.

Wenn die Länge des formatierten Strings die maximal zulässige Länge des resultierenden Strings überschreitet, dann wird '#OVF' oder '-#OVF' zurückgeliefert.

d, D

BYTE, WORD, DWORD, SINT, INT, DINT, USINT, UINT, UDINT

Dezimalstring

Ein Vorzeichen erscheint nur bei negativen Werten.

s, S

STRING

Single-byte–character string

Zeichen werden ausgegeben, bis zur abschließenden Null oder bis der Precision-feld-Parameter erreicht wurde.

X

BYTE, WORD, DWORD, REAL1,SINT2, INT2, DINT2, USINT, UINT, UDINT

Hexadezimalstring

Für die Formatierung werden die (upper-case) Zeichen benutzt ('ABCDEF').

x

BYTE, WORD, DWORD, REAL1,SINT2, INT2, DINT2, USINT, UINT, UDINT

Hexadezimalstring

Für die Formatierung werden die (lower-case) Zeichen benutzt ('abcdef').

E

Not implemented. Reserved for future use.

Fließkommazahlen in der wissenschaftlichen Notation

e

Not implemented. Reserved for future use.

Fließkommazahlen in der wissenschaftlichen Notation

1 Es wird der Speicherinhalt der REAL-Variable als Binärstring-, Oktalstring, Hexadezimalstring oder Dezimalstring ausgegeben.

2 Es wird der Speicherinhalt der vorzeichenbehafteten Typen als Binärstring-, Oktalstring, Hexadezimalstring oder Dezimalstring ausgegeben.

3 Die REAL-Variable wird in den LREAL-Typ konvertiert und dann formatiert.

Flags

Optionales Parameterfeld. Im Flag-Feld können ein oder mehrere Flags in einer beliebigen Reihenfolge bestimmt werden. Die Flag-Feld-Parameter bestimmen die Ausrichtung des formatierten Wertes, die Ausgabe von Vorzeichen, Leerzeichen und die Binär-/Oktal-/Hex-Präfixe.

Flag

Bedeutung

Type

Standard

-

Linksausrichtungs-Flag.

Linksausrichtung des formatierten Wertes innerhalb der vorgegebenen Breite im Width-Parameter.

Kann in Verbindung mit allen Typen benutzt werden.

Rechtsausrichtung.

+

Vorzeichen-Flag.

Erzwingt die Ausgabe des positiven Vorzeichens bei vorzeichenbehafteten positiven Zahlen.

Nur in Verbindung mit e, E, f, F, d,D, ansonsten wird das Flag ignoriert.

Das negative Vorzeichen erscheint nur bei negativen Werten.

0

Null-Flag.

Wenn dieses Flag dem Width-Parameter vorangestellt wurde, wird der resultierende String von Links mit Nullen aufgefüllt, bis die gewünschte Breite erreicht wurde.

Nur in Verbindung mit e, E, f, F, s, S, ansonsten wird das Flag ignoriert.

Das Null-Flag wird auch ignoriert, wenn zusätzlich das Linksausrichtungs-Flag (-) gesetzt ist.

Kein Auffüllen mit Nullen.

Leerzeichen (' ')

Leerzeichen-Flag

Ein Leerzeichen wird einem positiven Wert vorangestellt.

Nur in Verbindung mit e, E, f, F, d, D, ansonsten wird das Flag ignoriert.

Das Leerzeichen-Flag wird auch ignoriert, wenn gleichzeitig auch das Vorzeichen-Flag (+) gesetzt wurde

Kein Leerzeichen.

#

Präfix-Flag.

Dem formatierten Wert wird ein IEC- oder Standard-C-Präfix vorangestellt.

IEC-Präfixe: 2#, 8#, 16# (default)

Standard-C-Präfixe: 0, 0x, 0X

Nur in Verbindung mit b, B, o, O, x, X, ansonsten wird das Flag ignoriert.

Der Standard-C-Präfix-Typ kann durch das Setzen der globalen Variablen GLOBAL_FORMAT_HASH_PREFIX_TYPE im Programm aktiviert werden: GLOBAL_FORMAT_HASH_PREFIX_TYPE := HASHPREFIX_STDC;

Kein Präfix.

Width

Optionales Parameterfeld. Das Width-Feld beinhaltet einen positiven dezimalen Wert, der die minimale Anzahl der ausgegebenen Zeichen im Ausgabestring bestimmt.

In Abhängigkeit von dem Ausrichtungs-Flag werden dem Ausgabestring rechts oder links Leerzeichen hinzugefügt, bis die gewünschte Breite erreicht ist. Wenn das Null-Flag dem Width-Feld-Parameter vorangestellt ist, wird der resultierende String von Links mit Nullen aufgefüllt, bis die gewünschte Breite erreicht ist. Der Ausgabestring wird niemals durch den Width-Feld-Parameter auf die gewünschte Länge abgeschnitten.

Für den Width-Feld-Parameter kann auch ein Sternchen (*) angegeben werden. Der benötigte Wert wird dann von einem Argument geliefert (zulässige Typen: BYTE, WORD, DWORD, USINT, UINT, UDINT). Dem Argument für den Width-Feld-Parameter folgt dann das Argument für den zu formatierenden Wert.

Precision

Optionales Parameterfeld. Das Precision-Feld folgt nach dem Punkt (.) und beinhaltet einen positiven dezimalen Wert. Folgt dem Punkt kein Wert, dann wird für die Präzision der Standardwert genommen (siehe Tabelle).

Typ

Bedeutung

Standard

b, B, o, O, u, U, x, X, d, D

Der Precision-Feld-Parameter legt fest, wie viele Dezimalzeichen (Digits) in dem Ausgabestring ausgegeben werden.

Bei fehlenden Zeichen wird von Links mit Nullen aufgefüllt. Der Ausgabestring wird aber niemals abgeschnitten.

Standard: 1

c, C

Hat keine Bedeutung und wird ignoriert.

Ein Zeichen wird ausgegeben.

f, F

Der Precision-Feld-Parameter legt die Anzahl der Nachkommastellen fest.

Der Argument-Wert wird immer auf die entsprechende Anzahl der Nachkommastellen gerundet.

Standard: 6 Nachkommastellen

s, S

Der Precision-Feld-Parameter legt fest, wie viele Zeichen aus dem Argument-String ausgegeben werden.

Zeichen, die den Präzisionswert überschreiten werden nicht ausgegeben.

Es werden alle Zeichen bis zur abschließenden Null ausgegeben.

Für den Precision-Feld-Parameter kann auch ein Sternchen (*) angegeben werden. Der benötigte Wert wird dann von einem Argument geliefert (zulässige Typen: BYTE, WORD, DWORD, USINT, UINT, UDINT). Dem Argument für den Precision-Feld-Parameter folgt dann das Argument für den zu formatierenden Wert.