Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 20

Тема: DWORD + DWORD

  1. #1

    По умолчанию DWORD + DWORD

    Здравствуйте администраторы, здравствуйте Petera!!!

    работаю с тензодатчиком. Результат в DWord

    пытаюсь скомпенсировать 0, т.е. добавить константу, не получается.


    float у ;
    DWord X;

    .. функция получения значения с тензодатчика в формате DWord

    y=0.035;
    X=X-Float_2_DWord(y);
    так не работает.
    Последний раз редактировалось Технос; 23.08.2016 в 15:05.

  2. #2
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,502

    По умолчанию

    Я конечно чайник в Си. Но чего вы хотите добиться своим преобразованием?
    Float_2_DWord(y) - инструкция преобразования из плавающей в DWord . Дробная часть округляется. Если значение превышает DWord диапазон значений, будет использоваться значение 0 или 4294967295 .
    Т.е. Float_2_DWord(0.035)=0
    Прибавляйте свою константу как DWord. Наверняка Ваш результат с тензодатчика в DWord предполагает фиксированную точку.

    И зачем вообще Вам макрос на Си. Что в ф.области Вам не хватило вычислений?
    26 лет деятельности в области промышленной безопасности

  3. #3

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Дробная часть округляется. Если значение превышает DWord диапазон значений, будет использоваться значение 0 или 4294967295 .
    Т.е. Float_2_DWord(0.035)=0
    Вовсе нет.
    Float_2_DWord(0.035)=0xf5c293d0. Это интерпретация, а не конвертация.

    Технос, выложите проект, пожалуйста, с подробным пояснением, чего вы ожидаете от макроса.

  4. #4

    По умолчанию

    Спасибо за оперативную реакцию на моё сообщение!!!

    DWORD X;
    float y;

    X=MY_4_READ(4, 20);
    //y=DWord_2_Float(X);
    //X=X-Int32_2_DWord(35000);
    //X=X-Float_2_DWord(0.035);
    //X=X*2;
    PSW[300] = LOWORD(X);
    PSW[301] = HIWORD(X);

    // на дисплей вывожу PSW[300] и PSW[301] как float
    // вижу значение 0,035
    // Хотелось бы провести арифметические операции, для примера вычесть/прибавить константу типа float
    // умножил Х на 2 тоже получил странный результат.
    // хотелось бы сделать калибровку датчика

    Последний раз редактировалось Технос; 23.08.2016 в 15:49.

  5. #5

    По умолчанию

    Как верно заметил Petera - вы уверены, что вашу задачу необходимо реализовывать именно через макросы?
    Выкладываю пример, те же самые операции можно производить через функциональную область.

    Технос.txp

  6. #6

    По умолчанию

    меня бы так устроило, если бы можно было добавить регистр а не константу

  7. #7

    По умолчанию

    нашёл, можно и с регистром. пробую

  8. #8

    По умолчанию

    нет не работает
    Вложения Вложения

  9. #9

  10. #10

    По умолчанию

    Евгений, не пойму как Вы убедились в том, что работает.
    чисто теоретически должно, согласен, но не работает.
    Вложения Вложения
    Последний раз редактировалось Технос; 24.08.2016 в 11:04.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. ПЛК 63 - DWORD в конфигурации
    от melky в разделе ПЛК63/73
    Ответов: 3
    Последнее сообщение: 13.10.2015, 18:12
  2. Передача DWORD в панель СП270
    от IIeroniux в разделе Панели оператора (HMI)
    Ответов: 15
    Последнее сообщение: 26.11.2013, 18:24
  3. REAL 2 DWORD СП270
    от kenny_sk8 в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 08.10.2012, 14:40
  4. 4байта dword из плк по модбус в lectus
    от alexval2006 в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 19.12.2011, 18:40

Ваши права

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