Страница 1 из 5 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 42

Тема: 4 байта в число с плавающей запятой

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для Пьер
    Регистрация
    26.01.2011
    Адрес
    Земля
    Сообщений
    518

    По умолчанию 4 байта в число с плавающей запятой

    Codesys 3.5
    Подключил счетчик энергии, в нем полная активная энергия представлена в Int64 - 4 байта информации (т.е. 4 WORD числа, если смотреть в регистрах), как преобразовать в REAL (число с плавающей запятой)?
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  2. #2
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Вы запросите у них точный формат.
    Обычно так:
    A5: DWORD;
    A5: REAL;
    pt: POINTER TO REAL;

    pt :=ADR(A5); (*Копируем в префикс*)
    A6:=pt^; (*Превращение в реал(флоат)*)

  3. #3
    Пользователь Аватар для Пьер
    Регистрация
    26.01.2011
    Адрес
    Земля
    Сообщений
    518

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    Вы запросите у них точный формат.
    Обычно так:
    A5: DWORD;
    A5: REAL;
    pt: POINTER TO REAL;

    pt :=ADR(A5); (*Копируем в префикс*)
    A6:=pt^; (*Превращение в реал(флоат)*)
    64 разрядное целое число и вот его в реал
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  4. #4
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    а что конкретно смущает?
    у меня так с расходомера уже 7 лет пересчитывает из 2х ворд, в одном из которых мантиса, в другом экспонента.
    сложение в дворд я опустил, а результат такой.

  5. #5
    Пользователь Аватар для Пьер
    Регистрация
    26.01.2011
    Адрес
    Земля
    Сообщений
    518

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    а что конкретно смущает?
    у меня так с расходомера уже 7 лет пересчитывает из 2х ворд, в одном из которых мантиса, в другом экспонента.
    сложение в дворд я опустил, а результат такой.
    а как конкретно это в коде будет выглядеть?
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  6. #6
    Пользователь Аватар для Пьер
    Регистрация
    26.01.2011
    Адрес
    Земля
    Сообщений
    518

    По умолчанию

    я с адресациями не очень
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  7. #7
    Пользователь Аватар для Пьер
    Регистрация
    26.01.2011
    Адрес
    Земля
    Сообщений
    518

    По умолчанию

    FUNCTION two_word_TO_real : REAL
    VAR_INPUT
    IN_Data: POINTER TO ARRAY[0..1] OF DWORD; (*Указатель на массив регистров для Float*)
    END_VAR
    VAR
    p1: POINTER TO BYTE;
    p2: POINTER TO BYTE;
    END_VAR
    ------------------------------------------------------------
    p1:=ADR(two_word_to_real);
    p2:=ADR(IN_Data^[1]);

    p1^:=p2^;
    p1:=p1+1;
    p2:=p2+1;
    p1^:=p2^;
    p1:=p1+1;
    p2:=ADR(IN_Data^[0]);
    p1^:=p2^;
    p1:=p1+1;
    p2:=p2+1;
    p1^:=p2^;
    ---------------------------
    этот код, работает для 2х байтов, но как преобразовать в 4 не пойму.
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  8. #8
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    не нужно так усложнять.
    в прг. складываю регистры, вам это не нужно.
    что нужно я написал в первом сообщении.
    программа такая.
    Вложения Вложения

  9. #9

    По умолчанию

    Что-то не совсем в сообщении задание понимаю.
    Int64 это же 8 байт, 4 слова, два двойных слова. А предлагают обычное преобразование в 4 -х байт в Real?
    Нужно 8 байт в Real?

  10. #10
    Пользователь Аватар для Пьер
    Регистрация
    26.01.2011
    Адрес
    Земля
    Сообщений
    518

    По умолчанию

    Цитата Сообщение от ferret_maybe Посмотреть сообщение
    Что-то не совсем в сообщении задание понимаю.
    Int64 это же 8 байт, 4 слова, два двойных слова. А предлагают обычное преобразование в 4 -х байт в Real?
    Нужно 8 байт в Real?
    Совершенно верно, я не описал задачу толково.
    Попробую.
    Вопрос, почему у КДС нет стандартной функции такой?
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

Страница 1 из 5 123 ... ПоследняяПоследняя

Похожие темы

  1. Как убрать скачки значения в знаки после запятой
    от skinnbatter в разделе Помощь Разработчикам
    Ответов: 2
    Последнее сообщение: 04.06.2017, 11:10
  2. Выбор из чисел с плавающей точкой
    от anthrwpos в разделе Среда программирования OWEN Logic
    Ответов: 2
    Последнее сообщение: 14.02.2017, 10:03
  3. ТРМ138 и Modbus RTU и числа с плавающей запятой
    от Dinf в разделе Помощь Разработчикам
    Ответов: 2
    Последнее сообщение: 10.06.2013, 13:18
  4. Положение запятой в ТРМ138
    от Turboblock в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 21.07.2009, 09:45
  5. Есть ли процедура чтения байта в библ. Owen_io.dll
    от незарегистрированный в разделе Сервисное ПО
    Ответов: 6
    Последнее сообщение: 08.10.2007, 11:36

Ваши права

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