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

Тема: OwenCloud. Что это и с чем его едят?

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

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

    По умолчанию

    Ну т.к. изначально шёл разговор про передачу float одним регистром, то я и использовал закомментированную строку в таком виде:

    Код:
    function FLOAT_TO_DINT: udint; //имя функции и тип данных выхода
        VAR_INPUT
          in : REAL;
        END_VAR
    
        if In >= 0 then
           FLOAT_TO_DINT := real_to_udint(In);
        else
            FLOAT_TO_DINT:= 65536 - real_to_udint(-In);   // Для   INT
         // FLOAT_TO_DINT:= 0 - real_to_udint(-In);     // Для   DINT
        end_if
       
    end_function

  2. #2

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Ну т.к. изначально шёл разговор про передачу float одним регистром, то я и использовал закомментированную строку в таком виде:
    А число подаёте из диапазона DINT -33000, для INT не может быть меньше чем -32768
    Последний раз редактировалось kondor3000; 10.07.2024 в 09:46.

  3. #3

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    А число подаёте из диапазона DINT -33000, для INT не может быть меньше чем -32768
    Но float то может быть и меньше - поэтому там и стоит ограничение ПЕРЕД преобразованием, чтобы не получить кашу на выходе

  4. #4

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Но float то может быть и меньше - поэтому там и стоит ограничение ПЕРЕД преобразованием, чтобы не получить кашу на выходе
    Подал -33000 на ваш блок с ограничением, получил +32768, так какой в нём смысл то? 1 Ограничение.jpg
    Как сказал Валенок, можно везде использовать функцию DINT, просто использовать 1 или 2 регистра для передачи. А ограничивать вход всё равно надо для INT.
    Последний раз редактировалось kondor3000; 10.07.2024 в 10:13.

  5. #5

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Подал -33000 на ваш блок с ограничением, получил +32768, так какой в нём смысл то? 1 Ограничение.jpg
    Как сказал Валенок, можно везде использовать функцию DINT, просто использовать 1 или 2 регистра для передачи. А ограничивать вход всё равно надо для INT.
    Попробуйте преобразовать в int значения
    32526
    и
    32768
    и появится смысл

Похожие темы

  1. Сетевой шлюз ПМ210 для доступа к сервису OwenCloud по GPRS
    от Евгений Багаев в разделе ПМ210
    Ответов: 475
    Последнее сообщение: 16.12.2025, 08:12
  2. mod_rssim, и с чем его едят?
    от Vitorgan в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 21.02.2022, 11:22

Ваши права

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