ВСЕМ ПРИВЕТ! устал боротся с собственной безграмотностью, не могу победить код для отправки значиний с плавающей запятой . должно улетать старшим и младшим битом, ругается на intValue AND 65535- не поддерживает UDINT
FUNCTION_BLOCK fbScalePosition
VAR_INPUT
PRO_POS_H : REAL; // Входная позиция (вещественное число)
END_VAR
VAR_OUTPUT
inp_PR0_position_H : UDINT; // Старшие 16 бит результата
inp_PR0_position_L : UDINT; // Младшие 16 бит результата
END_VAR
VAR
scaledValue : REAL; // Промежуточное масштабированное значение
intValue : UDINT; // 32-битное беззнаковое целое для результата
scaledMin : REAL := -10000000.0; // Минимальное значение входного диапазона
scaledMax : REAL := 10000000.0; // Максимальное значение входного диапазона
outputMax : REAL := 4294967295.0; // Максимальное значение выходного диапазона (2^32 - 1)
scaleFactor : REAL; // Коэффициент масштабирования
END_VAR

// Тело функционального блока
scaledValue := PRO_POS_H;

// Ограничение входного значения диапазоном
IF scaledValue < scaledMin THEN
scaledValue := scaledMin;
ELSIF scaledValue > scaledMax THEN
scaledValue := scaledMax;
END_IF;

// Масштабирование входного значения к диапазону 0...4294967295
scaleFactor := outputMax / (scaledMax - scaledMin);
scaledValue := (scaledValue - scaledMin) * scaleFactor;

// Преобразование в целое число
intValue := REAL_TO_UDINT(scaledValue);

// Разделение 32-битного значения на два 16-битных
inp_PR0_position_H := SHR(intValue, 16); // Старшие 16 бит
inp_PR0_position_L := intValue AND 65535; // Младшие 16 бит
END_FUNCTION_BLOCK