Как вариант real в udint в формате IEEE754:
Код:
function IEEE754_: udint;
     var_input
       VAL : real;              // Входное значение
    end_var

    var
       i : udint;
       Sign : bool;             // true - если значение отрицательное
       Ret : real;              // Вспомогательное
       Mantissa : udint;        // Мантисса
       Exponent : udint;        // Порядок
    end_var

    Mantissa := 0; Exponent := 0;
    if VAL = 0 then return; end_if

    if VAL < 0 then             // Выделяем знак числа
        Sign := true; Ret := -VAL;
    else
        Ret := VAL;
    end_if

    if Ret >= 2 then            // Нормируем
        while Ret >= 2 do
            Ret := Ret / 2; Exponent := Exponent + 1;
        end_while
    else
        while Ret < 1 do
            Ret := Ret * 2; Exponent := Exponent - 1;
        end_while
    end_if

    Ret := Ret - 1;             // Вычисляем мантиссу
    for i := 0 to 22 do
        Mantissa := shl(Mantissa, 1); Ret := Ret * 2;
        if Ret > 1 then Ret := Ret - 1; Mantissa.0 := true; end_if
    end_for
    Ret := Ret *2; if Ret > 1 then Mantissa := Mantissa + 1; end_if
    Exponent := Exponent + 127; // Вычисляем порядок
    
    IEEE754_.31 := Sign;             // Формируем в виде udint
    IEEE754_ := IEEE754_ + shl(Exponent, 23);
    IEEE754_ := IEEE754_ + Mantissa;
    
end_function