Показано с 1 по 10 из 4133

Тема: Панели оператора СП3xx. Вопросы и ответы

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Начинаем сначала.
    Откуда дельта берётся? Почему она INT?
    Дельта вносится пользователем через элемент Ввод данных с типом Word и форматом Dec.
    Применили Int потому что для дельты, в нашем случае, достаточно только целых чисел.

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Как вы из переменной Float вычитаете INT, этот кусок (DWord_2_Float(temp_value) - (delta * -1)); и что у вас получится?
    А в чём заключается проблема для компилятора?

    1) преобразовали DWord в Float;
    2) если дельта отрицательная - умножаем дельту на -1, чтобы избавиться от знака - у дельты;
    3) вычитаем из п.1 дельту.

    Пробный код из Си компилятора.

    Если я ошибаюсь - поправьте, пожалуйста.

  2. #2

    По умолчанию

    Цитата Сообщение от stdenits Посмотреть сообщение
    Дельта вносится пользователем через элемент Ввод данных с типом Word и форматом Dec.
    Применили Int потому что для дельты, в нашем случае, достаточно только целых чисел.

    Если я ошибаюсь - поправьте, пожалуйста.
    Вам надо либо дельту сделать Float, либо конвертировать INT во Float и только потом совершать математические действия.

  3. #3

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    либо конвертировать INT во Float и только потом совершать математические действия.
    Каким способом можно выполнить приведение типов для случая конфигуратора панели?

    (float)delta; ?
    float tmp_delta = delta; ?

  4. #4
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,095

    По умолчанию

    Цитата Сообщение от stdenits Посмотреть сообщение
    А в чём заключается проблема для компилятора?.
    Видимо kondor3000 и capzap имели ввиду что в
    Код:
    tmp_val = (delta >= 0) ? (DWord_2_Float(temp_value) + delta) : (DWord_2_Float(temp_value) - (delta * -1));
    можно вынести знак за скобку.
    Код:
    tmp_val = (delta >= 0) ? (DWord_2_Float(temp_value) + delta) : (DWord_2_Float(temp_value) - ( - (delta * 1)));
    После вспомнить таблицу умножения на 1:
    Код:
    tmp_val = (delta >= 0) ? (DWord_2_Float(temp_value) + delta) : (DWord_2_Float(temp_value) - ( - delta));
    После вспомнить Великое Правило про пару минусов дающих плюс:
    Код:
    tmp_val = (delta >= 0) ? (DWord_2_Float(temp_value) + delta) : (DWord_2_Float(temp_value) + delta);
    А дальше сказку как стоял витязь перед камнем, а нём:
    "Налево пойдешь - коня потеряешь.
    Направо пойдешь - коня потеряешь.
    Прямо пойдешь - коня потеряешь.
    Назад пойдешь - коня потеряешь"
    Т.е. не пофиг ли что на камне написано, всё равно пешком идти.
    Код:
    tmp_val = DWord_2_Float(temp_value) + delta;
    --
    Код:
    Каким способом можно выполнить приведение типов для случая конфигуратора панели?
    (float)delta; ?
    float tmp_delta = delta; ?
    Видимо оба - и явный и неявный.
    Последний раз редактировалось Валенок; 02.11.2022 в 15:10.

  5. #5

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Видимо оба - и явный и неявный.
    И оба не сработали.

    Даже так попробовал:
    Код:
    tmp_val = (delta >= 0) ? (DWord_2_Float(temp_value) + delta) : (DWord_2_Float(temp_value) - (delta * -1.0));
    И так:
    Код:
    tmp_val = DWord_2_Float(temp_value) + (delta * 1.0);
    Почему тогда с положительной дельтой всё хорошо?

    Цитата Сообщение от Валенок Посмотреть сообщение
    Код:
    tmp_val = (delta >= 0) ? (DWord_2_Float(temp_value) + delta) : (DWord_2_Float(temp_value) - (delta * -1));
    можно вынести знак за скобку.
    Я как бы умножал на -1, чтобы сделать из отрицательной дельты - положительную.
    10 - 3 = 7;
    10 + (-3) = 7;
    10 - (-3 * -1) = 7;
    Поэтому у меня всё правильно.

    Пока не понимаю, что за фигня происходит. Попробую проэмулировать поэтапно в свободное время.
    Может быть разработчикам покажется что-то сверх-очевидным и они подскажут, что не так.
    Последний раз редактировалось stdenits; 02.11.2022 в 15:47.

  6. #6

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    умножить на минус чтоб получить положительное и потом вычесть?
    просто конструкция температура + дельта не работает?
    Так тоже пробовал.
    Выводится фигня, типа 6.86+05.
    Последний раз редактировалось stdenits; 02.11.2022 в 13:47.

Похожие темы

  1. Экспорт CSV в панели СП3xx и порядок квитирования событий
    от theoretician в разделе Панели оператора (HMI)
    Ответов: 30
    Последнее сообщение: 24.08.2021, 16:17
  2. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  3. Сенсорные панели оператора ОВЕН СП3ХХ
    от Боднар Олег Миколайович в разделе Подбор Оборудования
    Ответов: 7
    Последнее сообщение: 17.12.2015, 09:09
  4. СПК 107 в качестве панели оператора
    от Леонид в разделе СПК1xx (архив)
    Ответов: 15
    Последнее сообщение: 20.11.2015, 08:17

Ваши права

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