Потребовалось округление до 1 знака после запятой. Алгоритм должен быть наименее ресурсоемкий.
Код:
FUNCTION REAL_TO_STRINGF : STRING[20]
VAR_INPUT
Real_X: REAL;
END_VAR
VAR
pt_in: POINTER TO BYTE;
pt_out: POINTER TO BYTE;
instr: STRING[20];
strlen, i: INT;
END_VAR
IF ABS( Real_X ) < 0.1 THEN
REAL_TO_STRINGF := '0.0';
RETURN;
END_IF;
instr := REAL_TO_STRING( Real_X );
strlen := LEN(instr);
pt_in := ADR(instr);
pt_out := ADR( REAL_TO_STRINGF );
i:= 1;
WHILE i <= strlen DO
IF pt_in^ = 46 THEN
pt_out^ := pt_in^;
IF i = strlen THEN
pt_out := pt_out + 1;
pt_out^ := 48;
ELSE
pt_in := pt_in + 1;
pt_out := pt_out + 1;
pt_out^ := pt_in^;
END_IF;
EXIT;
END_IF;
pt_out^ := pt_in^;
pt_in := pt_in + 1;
pt_out := pt_out + 1;
i := i +1;
END_WHILE
pt_out := pt_out + 1;
pt_out^ := 0;