Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 15 из 15

Тема: REAL побитово в UDINT

  1. #11
    Пользователь Аватар для zaychenko
    Регистрация
    01.12.2021
    Адрес
    Санкт-Петербург
    Сообщений
    59

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    какой диапазон значений ожидаемых коррекций?
    Рандомный диапазон, например до 5кПа с дискретностью 1 Па.

    В датчике отправляемое значение коррекции применяется в зависимости от выбранных единиц измерения (bar, Па, кПа и т.д., что также задаются через целочисленный ID по modbus).

    На данный момент решили реализовать запись коррекции в Па без дробной части, т.к. проще преобразовать в два Word в соответствии с IEEE 754.
    _______________________________

    С уважением,
    Зайченко Никита
    ООО «Политехник»
    Тел.: +7 (911) 284 86 84
    E-mail: zaychenko@owen-polytechnic.ru

  2. #12
    Пользователь Аватар для zaychenko
    Регистрация
    01.12.2021
    Адрес
    Санкт-Петербург
    Сообщений
    59

    По умолчанию

    Всем спасибо! Вопрос успешно решен для любого REAL, в том числе и с дробной частью. Все достаточно несложно преобразуется инструментами OwenLogic. Для реализации достаточно написать формулу преобразования REAL из 32-х бит на листочке и все станет ясно.
    Скрин_OL_REAL_TO_2WORD.png
    _______________________________

    С уважением,
    Зайченко Никита
    ООО «Политехник»
    Тел.: +7 (911) 284 86 84
    E-mail: zaychenko@owen-polytechnic.ru

  3. #13
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,457

    По умолчанию

    И где собственно решение?

  4. #14

    По умолчанию

    Как вариант 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

  5. #15

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Как вариант real в udint в формате IEEE754:
    EFrol, ну ты прям молоток, у меня всё сошлось)))1 Разборка REAL.jpg

    Выкладываю преобразования REAL_TO_DWORD_TO_REAL и REAL_TO__2Word_To_REAL 1 REAL_TO__2Word_To.jpg
    Вложения Вложения
    Последний раз редактировалось kondor3000; 15.12.2024 в 13:47.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. ПР200 логические операции на ST над udint
    от Васильев в разделе Программируемые реле
    Ответов: 6
    Последнее сообщение: 06.05.2024, 13:19
  2. Преобразование REAL
    от КонстантинСт в разделе ПЛК2хх
    Ответов: 4
    Последнее сообщение: 25.06.2023, 09:04
  3. Real c ИП320
    от zendo057 в разделе Панели оператора (HMI)
    Ответов: 5
    Последнее сообщение: 07.10.2015, 17:31
  4. Как записать UDINT в два WORD ?
    от Sergey_Byk в разделе СПК2xx (архив)
    Ответов: 2
    Последнее сообщение: 15.03.2013, 13:16
  5. REAL в СП270
    от xaccat в разделе Трёп (Курилка)
    Ответов: 17
    Последнее сообщение: 16.01.2013, 18:52

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •