Как можно избежать переполнения типа данных в Simulink? - PullRequest
0 голосов
/ 25 мая 2018

У меня проблема переполнения в Simulink, я сделал модель в Simulink, см. Прикрепленное изображение.

Если порт 2 (const ticks_des) равен 256, то блок памяти переполняется, и time_over_flg не может быть активнымвызвать сброс.Как я могу изменить свою модель, чтобы избежать переполнения типа данных?

Value comparator Simulink

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Блок simulink (например, суммирование) часто будет иметь флажок с эффектом «насыщать при переполнении целых чисел».

Если это не так, вы можете исправить это самостоятельно, приведя тип данных каждой арифметической операции к типу данных, достаточно большому, чтобы содержать любое наибольшее значение, которое может дать арифметическая операция.Вы бы взяли модуль результата этой арифметической операции с максимальным значением типа выходных данных.

Например, если вы добавляете два uint8 вместе, вы приводите каждый к uint16, а затем беретемодуль этого дополнения с 255 (то есть. finalresult = mod (uint16 (a) + uint16 (b), 255).

0 голосов
/ 26 июня 2018

Простым решением для переполнения типов данных является использование блока преобразования типов данных.Добавьте блок преобразования типов данных к выходу входа 2. Затем

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

https://i.stack.imgur.com/LdYeF.png

см. Его блок

...