Блок Деление с остатком¶
Описание: Блок функции «Деление с остатком») производит операцию деления значения входа A
на значения входа B
, при этом результат раскладывается на 2 составляющие: выход А/В
- неполное частное от деления, выход mod
- остаток от деления. Если B
равен 0 (деление на 0), значение выхода mod
равно значению на входе A
.
Пример: Производится операция деления 9/5. Результат данной операции: число 9 содержит одну 5, а остаток равен 4:
Свойства блока: (ПКМ по блоку - Свойства ( Alt + P ))
Общие свойства: см. Редактирование свойств блока.
Тип данных: допускаются любые типы данных из предложенных.
Обработка переполнения: при выполнении операции выполняется проверка на переполнение выхода, т.е. результирующего значения за диапазон значений выбранного типа данных. В такой ситуации рассчитанное значение не может быть верным математически.
Существуют следующие способы обработки переполнения:
- «Игнорировать» - выход получает только младшие биты данных от полученного результата. Не рекомендуется использовать, за исключением реализации циклических счетчиков, когда переход счетчика через максимальное значение в 0 специально нужен, или когда старшие биты значения не нужны, достаточно младших битов.
- «Установить 0» - выход устанавливается в 0. Рекомендуется использовать при использовании значения 0 как признак аварии;
- «Выставить граничное значение» - выход получает значение, ближайшее к истинному значению, на границе диапазона значений выбранного типа данных. Это наиболее логически правильный и рекомендуемый способ, особенно для значений, суммируемых за некоторое время работы устройства;
- «Настройки проекта» - ссылка на один из первых трех способов, указанный в настройках проекта. Эта опция позволяет централизованно управлять этим свойством.
Пример выполнения блока для 1-байтового беззнакового
типа данных, значения ограничены диапазоном от 0 до 255:
Способ обработки переполнения |
Вход «A» | Вход «B» | Выход «A/B» | Выход «Mod» |
Игнорировать | 2 | 129 | 0 | 2 |
Игнорировать | 9 | 5 | 1 | 4 |
Игнорировать | 0 | 0 | 0 | 0 |
Игнорировать | 100 | 0 | 0 | 100 |
Игнорировать | 10 | 1 | 100 | 0 |
Игнорировать | 65 | 64 | 1 | 1 |
Игнорировать | 1 | 255 | 0 | 1 |
Установить 0 | 2 | 129 | 0 | 2 |
Установить 0 | 9 | 5 | 1 | 4 |
Установить 0 | 0 | 0 | 0 | 0 |
Установить 0 | 100 | 0 | 0 | 100 |
Установить 0 | 100 | 1 | 100 | 0 |
Установить 0 | 65 | 64 | 1 | 1 |
Установить 0 | 1 | 255 | 0 | 1 |
Граничное значение | 2 | 129 | 0 | 2 |
Граничное значение | 9 | 5 | 1 | 4 |
Граничное значение | 0 | 0 | 255 | 0 |
Граничное значение | 100 | 0 | 255 | 100 |
Граничное значение | 100 | 1 | 100 | 0 |
Граничное значение | 65 | 64 | 1 | 1 |