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

Тема: блок fDIV, деление на 0

  1. #1

    По умолчанию блок fDIV, деление на 0

    Здравствуйте
    Блоки DIV, fDIV, деление на 0.
    В справке указано, что деление на ноль - дает ноль. И все.
    Однако, в fDIV ноль получается только при делении нуля на ноль.
    При делении положительного числа на ноль симулятор выдает положительную бесконечность, а прибор - максимальное число.
    При делении отрицательного числа на ноль симулятор выдает отрицательная бесконечность, а прибор минимальное число (максимальный минус).
    Как-то так...
    Вопрос: Почему все это не отображено в справке?
    И второй "пинок".
    Тут https://owen.ru/forum/showthread.php?t=40401 я поднимал вопрос работы блока преобразования X-B. Справку так и не поправили, хотя и обещали

  2. #2

    По умолчанию

    Хотя в справке и требуется отобразить поведение конкретного компилятора при UB (неопределённом поведении), думаю, что не нужно доводить до появления этого UB, чтобы не испытывать судьбу, после того, как разработчик через время согласится с доводами другого пользователя и изменит поведение - сделав нерабочими часть библиотечных макросов, использующих этот трюк с неявным преобразованием.

    Такие вещи как деление на 0 и преобразование типов должны быть описаны в стандарте языка программирования. Мне лень искать, но любопытно - какое поведение требуется, ожидается?

    Стараюсь рассматривать подобные ситуации и формировать флаг ошибки входных параметров и останавливать вычисления.
    На ST это совсем легко, на FBD чуть сложнее, но тоже возможно - пример ПИД регулятор, из-за ошибочных параметров останавливающий работу с сигнализацией, а также обрабатывающий нулевое значение времени интегрирования (замена всего слагаемого на 0 независимо от свойств деления на 0)
    Сам макрос
    https://owen.ru/forum/showthread.php...l=1#post430251
    Скрины с примером обработки ошибочных параметров и с исключением UB при корректном параметре, но приводящем к делению на 0

    Итого, поддерживаю позицию с необходимостью описания в справке различных UB, их соответствия стандартам, а также считаю необходимым программисту самостоятельно избегать подобного UB программы.
    Изображения Изображения

  3. #3

    По умолчанию

    Цитата Сообщение от Kliper Посмотреть сообщение
    Здравствуйте
    Блоки DIV, fDIV, деление на 0.
    В справке указано, что деление на ноль - дает ноль. И все.
    Однако, в fDIV ноль получается только при делении нуля на ноль.
    При делении положительного числа на ноль симулятор выдает положительную бесконечность, а прибор - максимальное число.
    При делении отрицательного числа на ноль симулятор выдает отрицательная бесконечность, а прибор минимальное число (максимальный минус).
    Как-то так...
    Вопрос: Почему все это не отображено в справке?
    И второй "пинок".
    Тут https://owen.ru/forum/showthread.php?t=40401 я поднимал вопрос работы блока преобразования X-B. Справку так и не поправили, хотя и обещали
    Добрый день.
    Описание, действительно, актуально только для блока DIV. Для fDIV изучим вопрос.
    По поводу преобразования Х-В - в справке описание обновлено ведь:
    Снимок экрана 2025-03-10 113103.png
    Инженер по продукту | ПР и Owen Logic
    email: k.korolev@owen.ru

  4. #4

    По умолчанию

    Каюсь, по поводу второго пункта был невнимателен. Мельком глянул, и не увидев "разжеванности" для целых и дробных чисел, подумал что правок не было.
    И еще в догонку. Обратите внимание на несоответствие размеров прямоугольников в лоджике и в приборе. Писал тут: https://owen.ru/forum/showthread.php?t=40476
    Уже три обновления вышло, а у меня в ПР205, по прежнему прямоугольник за рамку текста вылазит.

Похожие темы

  1. В Codesys деление на 0
    от zxcv в разделе Панели оператора (HMI)
    Ответов: 7
    Последнее сообщение: 17.04.2020, 12:37
  2. Деление в codesys V3
    от Пьер в разделе СПК1xx (архив)
    Ответов: 9
    Последнее сообщение: 01.08.2017, 16:07
  3. Блок параметров
    от andrey111999 в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 12.07.2016, 18:01
  4. Ответов: 5
    Последнее сообщение: 16.12.2015, 17:47
  5. Деление
    от jus в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 14.05.2014, 10:23

Ваши права

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