Показано с 1 по 7 из 7

Тема: Как Float 32 разложить на 2 int 16

  1. #1

    По умолчанию Как Float 32 разложить на 2 int 16

    Подскажите пожалуйста. Как вывести в модуле МУ110-6У выходную величину. Как я понял нужно Float 32 разложить на два int 16 и послать их в регистры 0000 и 0001Dec. А вот как его разложить не соображу.

    Собрать
    pi1:=ADR(Inpit_1);
    pi2:=ADR(Inpit_2);
    P:=ADR(output);
    P^[0]:=pi2^[0];
    P^[1]:=pi2^[1];
    P^[2]:=pi1^[0];
    P^[3]:=pi1^[1];

    так. А как на оборот? Или есть простой способ?

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,419

    По умолчанию

    Цитата Сообщение от Serrk Посмотреть сообщение
    Подскажите пожалуйста. Как вывести в модуле МУ110-6У выходную величину. Как я понял нужно Float 32 разложить на два int 16 и послать их в регистры 0000 и 0001Dec. А вот как его разложить не соображу.

    Собрать
    pi1:=ADR(Inpit_1);
    pi2:=ADR(Inpit_2);
    P:=ADR(output);
    P^[0]:=pi2^[0];
    P^[1]:=pi2^[1];
    P^[2]:=pi1^[0];
    P^[3]:=pi1^[1];

    так. А как на оборот? Или есть простой способ?
    Реал через указатель на dword, дальше через смещение и маску в два слова
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  3. #3
    Пользователь Аватар для _Mikhail
    Регистрация
    25.07.2013
    Адрес
    Ярославль
    Сообщений
    572

    По умолчанию

    Цитата Сообщение от Serrk Посмотреть сообщение
    Подскажите пожалуйста. Как вывести в модуле МУ110-6У выходную величину. Как я понял нужно Float 32 разложить на два int 16 и послать их в регистры 0000 и 0001Dec. А вот как его разложить не соображу.

    Собрать
    pi1:=ADR(Inpit_1);
    pi2:=ADR(Inpit_2);
    P:=ADR(output);
    P^[0]:=pi2^[0];
    P^[1]:=pi2^[1];
    P^[2]:=pi1^[0];
    P^[3]:=pi1^[1];

    так. А как на оборот? Или есть простой способ?
    2019-07-27_153643.jpg
    Какой Float?
    В модуле МУ110-6У используется INT.
    0000 - это канал 1
    0001 - это канал 2
    Зачем их смешивать?
    Читайте внимательно инструкцию

  4. #4
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Нерезиновая, ЮЗАО
    Сообщений
    2,462

    По умолчанию

    LIN_TRAFO + REAL_TO_INT

  5. #5

    По умолчанию

    Спасибо. Ступил.

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

    По умолчанию

    Serrk
    Переменная Real в проекте должна быть преобразована в INT в диапазоне 0..1000, что соответствует 0..100% выхода МУ.

  7. #7

    По умолчанию

    Ивините, а не подскажете как это делается?

Похожие темы

  1. Ответов: 3
    Последнее сообщение: 08.06.2016, 11:12
  2. float PIC
    от f-kons в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 25.02.2016, 12:33
  3. Переход от float (Nullable) к просто float
    от ASo в разделе Master SCADA
    Ответов: 1
    Последнее сообщение: 12.11.2014, 14:21
  4. float в ИП320
    от Vladimir_M в разделе Панели оператора (HMI)
    Ответов: 0
    Последнее сообщение: 06.11.2012, 17:07
  5. Точность FLOAT !!!
    от Cherns в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 07.07.2008, 19:05

Ваши права

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