T_FIX16

Variablen von diesem Typ repräsentieren eine 16 Bit vorzeichenbehaftete Festkommazahl. Dieser Datentyp wird oft bei Systemen benutzt die keine FPU-Einheit besitzen (z.B.: Mikrokontroller oder Geräte aus dem Bereich der Fernwirktechnik). Wenn z.B. über die serielle Schnittstelle Daten im Festkommazahlenformat ausgetauscht werden sollten, dann müssen diese Daten in das passende Format konvertiert werden.

Die Anzahl der Nachkommastellen wird passend zum benötigten Zahlenbereich und Auflösung gewählt. Bei 15 Nachkommastellen lassen sich z.B. Festkommazahlen im Bereich: -1..1-2^15 darstellen. Dies entspricht etwa dem Fließkommazahlenbereich: -1..0.999969482421875.

Im Gegensatz zu Fließkommazahlen ist die Auflösung der Festkommazahlen im gesamten Zahlenbereich konstant. Leider haben die Festkommazahlen einen kleineren darstellbaren Zahlenbereich. Vorsicht ist geboten bei mathematischen Operationen die einen positiven oder negativen Überlauf generieren können.

TYPE T_FIX16 :
STRUCT
    value  : INT := 0;
    n      : WORD(0..15);
    status : DWORD := 0;
END_STRUCT
END_TYPE

value: Diese Membervariable beinhaltet den eigentlichen Wert der Festkommazahl (16 Bit Vor- und Nachkommastellen).

n: Anzahl der Nachkommastellen. Zulässiger Bereich: 0..15. Das höherwertigste Bit ist für das Vorzeichenbit reserviert.

status: Status-Flags (reserviert, zur Zeit nicht benutzt).

Beispiel 1:

Ein A/D-C liefert Messwerte als vorzeichenbehaftete 16 Bit Festkommazahlen mit 15 Nachkommastellen. Diese Messwerte wurden in die SPS eingelesen und sollen in LREAL-Datentyp konvertiert werden.

PROGRAM FIX_TO_FLOAT
VAR
    adc_0        : WORD := 2#1010000000000000;(* = -0.75 (Q0.15) *)
    adc_1        : WORD := 2#0111000000000000;(* = +0.875 (Q0.15) *)
    fix_0, fix_1 : T_FIX16;
    dbl_0, dbl_1 : LREAL;
END_VAR
fix_0 := WORD_TO_FIX16( adc_0, 15 );
fix_1 := WORD_TO_FIX16( adc_1, 15 );
dbl_0 := FIX16_TO_LREAL( fix_0 );
dbl_1 := FIX16_TO_LREAL( fix_1 );

Beispiel 2:

Die Parameter eines Micro-Controllers sind vorzeichenbehaftete 16 Bit Festkommazahlen mit 8 Nachkommastellen. Die LREAL-Parameter in der SPS sollen in diesen Format konvertiert werden.

PROGRAM FLOAT_TO_FIX
VAR
    dbl_0          : LREAL := +3.5;
    dbl_1          : LREAL := -3.5;
    fix_0, fix_1   : T_FIX16;
    ctrl_0, ctrl_1 : WORD;
END_VAR
fix_0  := LREAL_TO_FIX16( dbl_0, 8 );
fix_1  := LREAL_TO_FIX16( dbl_1, 8 );
ctrl_0 := FIX16_TO_WORD( fix_0 );
ctrl_1 := FIX16_TO_WORD( fix_1 );

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86, x64, ARM)

Tc2_Utilities (System)