BYTE_TO_LREALEX

The conversion of unsigned numbers into floating point numbers of the type LREAL is not supported in TwinCAT 2 on the ARM platform. Unsigned numbers with the highest significant bit set may possibly be implicitly converted into negative floating point numbers. The function described here allows the explicit conversion of the type BYTE into a positive floating point number of the type LREAL in TwinCAT 2 (even if the highest significant bit was set and without compiler warning). You only need this function in order to be able to compile converted TwinCAT 2 projects without changes in TwinCAT 3.
Unsigned numbers of the type BYTE are always (implicitly and explicitly) converted into positive floating point numbers in TwinCAT3. For this reason this function can be dispensed with.
FUNCTION BYTE_TO_LREALEX: LREAL
VAR_INPUT
VAR_INPUT
in : BYTE;
END_VAR
Sample:
PROGRAM MAIN
fLreal : LREAL := 0.0;
VAR
nByte : BYTE := 16#FF;END_VAR
(* fLreal value | Tc2.x ARM | Tc2.x X86 | Tc3.x ARM, X86, X64 *)
(* -: not supported *)
(*__________________________________________________________________________________________________________________________________*)
fLreal := nByte; (* | +255, Warning 1105* | +255 | +255 *)
fLreal := BYTE_TO_LREAL( nByte ); (* | +255, Warning 1105* | +255 | +255 *)
fLreal := BYTE#16#FF; (* | +255, Warning 1105* | +255 | +255 *)
fLreal := 16#FF; (* | +255 | +255 | +255 *)
fLreal := BYTE_TO_LREALEX( nByte ); (* | +255 | +255 | +255 *)
fLreal := BYTE_TO_LREALEX( BYTE#16#FF ); (* | +255 | +255 | +255 *)
fLreal := BYTE_TO_LREALEX( 16#FF ); (* | +255 | +255 | +255 *)
(* TwinCAT 2.x Warning 1105*:warning: Conversion of unsigned integer to LREAL is not supported. The value is used as signed instead. *)
Requirements
Development environment |
Target platform |
PLC libraries to be integrated (category group) |
---|---|---|
TwinCAT v3.1.0 |
PC or CX (x86, x64, ARM) |
Tc2_Utilities (System) |