ID: Заголовок | hisl_0001: Использование блока Abs | ||
---|---|---|---|
Описание | Поддерживать робастность сгенерированного кода, при использовании блока Abs, | ||
A | Избегайте булевых и типов данных без знака как входных параметров с блоком Abs. | ||
B | Выберите параметры блоков Saturate on integer overflow. | ||
Примечания | Блок Abs не поддерживает булевы типы данных. Задавая тип входных данных без знака, может оптимизировать блок Abs из сгенерированного кода, приводящего к блоку, который вы не можете проследить до сгенерированного кода. Для типов данных со знаком Simulink® не представляет абсолютное значение наиболее отрицательной величины. Когда вы выбираете Saturate on integer overflow, абсолютное значение типа данных насыщает к самому положительному представимому значению. Когда вы очищаете Saturate on integer overflow, вычисления абсолютного значения в симуляции и сгенерированном коде не могут быть сопоставимыми или ожидаться. | ||
Объяснение | A | Поддержите генерацию прослеживаемого кода. | |
B | Достигните сопоставимого и ожидаемого поведения симуляции модели и сгенерированного кода. | ||
Проверки Model Advisor | Проверяйте использование блоков Abs (Simulink Check) | ||
Ссылки |
| ||
В последний раз измененный | R2018b | ||
Примеры |
Рекомендуемый Не рекомендуемый |
ID: Заголовок | hisl_0002: Использование блоков Математической функции (rem и обратная величина) | ||
---|---|---|---|
Описание | Поддерживать робастность сгенерированного кода, при использовании блока Math Function с остатком после деления ( | ||
A | Защитите вход | ||
B | Защитите второй вход | ||
Примечание | Можно получить операцию деления на нуль, приводящую к большому количеству ( | ||
Объяснение | Защитите от переполнения и неопределенных числовых результатов. | ||
Проверки Model Advisor | Проверяйте использование блоков Математической функции (rem и взаимные функции) (Simulink Check) | ||
Ссылки |
| ||
В последний раз измененный | R2017b | ||
Примеры | В следующем примере, когда входной сигнал колеблется вокруг нуля, выход показывает большое изменение в значении. Вам нужна дальнейшая защита от большого изменения в значении.
|
ID: Заголовок | hisl_0003: Использование блоков Квадратного корня | ||
---|---|---|---|
Описание | Чтобы поддержать робастность сгенерированного кода, при использовании блока Square Root, выполняют одно из следующих действий: | ||
A | Объясните комплексные числа как выход. | ||
B | Защитите вход от движения отрицательного. | ||
Объяснение | A, B | Избегайте нежелательных результатов в сгенерированном коде. | |
Проверки Model Advisor | Проверяйте использование блоков Sqrt (Simulink Check) | ||
Ссылки |
| ||
В последний раз измененный | R2016a | ||
Примеры |
|
ID: Заголовок | hisl_0028: Использование Взаимных блоков Квадратного корня | ||
---|---|---|---|
Описание | Чтобы поддержать робастность сгенерированного кода, при использовании блока Reciprocal Square Root, выполняют одно из следующих действий: | ||
A | Защитите вход от движения отрицательного. | ||
B | Защитите вход от попытки обнулить. | ||
Примечание | Можно получить операцию деления на нуль, приводящую к | ||
Объяснение | A, B | Избегайте нежелательных результатов в сгенерированном коде. | |
Проверки Model Advisor | Проверяйте использование Взаимных блоков Sqrt (Simulink Check) | ||
Ссылки |
| ||
В последний раз измененный | R2016a | ||
Примеры |
|
ID: Заголовок | hisl_0004: Использование блоков Математической функции (натуральный логарифм и основа 10 логарифмов) | ||
---|---|---|---|
Описание | Поддерживать робастность сгенерированного кода, при использовании блока Math Function с натуральным логарифмом ( | ||
A | Защитите вход от движения отрицательного. | ||
B | Защитите вход от равенства нулю. | ||
C | Объясните комплексные числа как выходное значение. | ||
Примечания | Если вы устанавливаете тип выходных данных объединять, натуральный логарифм и основывать 10 функций логарифма выходные комплексные числа для отрицательных входных значений. Если вы устанавливаете тип выходных данных на действительный, функции выход | ||
Объяснение | A, B, C | Поддержите генерацию устойчивого кода. | |
Проверки Model Advisor | Проверяйте использование блоков Математической функции (журнал и функции log10) (Simulink Check) | ||
Ссылки |
| ||
В последний раз измененный | R2017b | ||
Примеры |
Можно защитить от:
Следующий пример отображает получившийся вывод для входных значений в пределах от
|
ID: Заголовок | hisl_0005: Использование блоков продукта | |
---|---|---|
Описание | Когда параметры блоков Product Multiplication установлены в | |
Примечания | При использовании блоков Product, чтобы вычислить инверсию матрицы или матричное деление, вы можете получить деление сингулярной матрицей. Это деление приводит к | |
Объяснение | Защитите от переполнения и поддержите робастность сгенерированного кода. | |
Проверки Model Advisor | Соблюдение этого руководства по моделированию не может быть проверено при помощи проверки Model Advisor. | |
Ссылки |
| |
Необходимые условия | hisl_0314: Параметры конфигурации> Диагностика> Валидность Данных> Сигналы | |
В последний раз измененный | R2021a |
ID: Заголовок | hisl_0029: Использование блоков Присвоения |
---|---|
Описание | Чтобы поддержать робастность сгенерированного кода, при использовании блока Assignment, инициализируют поля массивов перед их первым использованием. |
Примечания | Если выходной вектор блока Assignment не инициализируется входом с блоком, элементы векторной силы не инициализируются в сгенерированном коде. Когда блок Assignment используется итеративно, и все поле массивов присвоены во время одного шага времени симуляции, вам не нужен вход инициализации с блоком. Доступ к неинициализированным элементам блока выход может привести к неожиданному поведению. |
Объяснение | Избегайте нежелательных результатов в сгенерированном коде. |
Проверки Model Advisor | Проверяйте использование блоков Присвоения (Simulink Check) |
Ссылки |
|
В последний раз измененный | R2016a |
Примеры |
Не Рекомендуемый: Никакой вход Y0 инициализации, когда блок не используется итеративно Рекомендуемый: Y0 входа Initialization, когда блок не используется итеративно Рекомендуемый: Инициализируйте поля массивов, когда блок будет использоваться итеративно |
ID: Заголовок | hisl_0066: Использование блоков Усиления | ||
---|---|---|---|
Описание | Чтобы поддержать трассируемость сгенерированного кода, значение блока Gain не должно решать к 1 . | ||
Примечания | Процесс генерации кода может удалить значения Усиления, равные Исключение к этому правилу устанавливает значение Усиления к именованному объекту данных параметра с неавтоматическим классом памяти. | ||
Объяснение | Поддержите генерацию прослеживаемого кода. | ||
Проверки Model Advisor | Проверяйте использование блоков Усиления (Simulink Check) | ||
Ссылки |
| ||
В последний раз измененный | R2018a |
ID: Заголовок | hisl_0067: Защитите от вычислений деления на нуль |
---|---|
Описание | Чтобы поддержать робастность сгенерированного кода, при выполнении делят операции, защищают делитель от попытки обнулить. |
Примечание | Чтобы доказать, что деление на нуль не возможно, выполните статический анализ модели. Если деление на нуль возможно, реализуйте одно из следующих. Используя больше чем одну опцию может привести к избыточным операциям защиты:
Используя CRLs или очищающий параметр конфигурации Удаляют код, который защищает от арифметических исключений деления (Embedded Coder), защищает операции деления от операций деления на нуль. Однако это действие действительно вводит дополнительный вычислительный и память наверху, а также потенциал, чтобы ввести недостижимый код. |
Объяснение | Улучшите податливость кода сгенерированного кода |
Проверки Model Advisor | Проверяйте на вычисления деления на нуль (Simulink Check) |
Ссылки |
|
Смотрите также | |
В последний раз измененный | R2021a |
Пример | Неправильный Операция деления может привести к сценарию деления на нуль. Правильный Графическая функция к проверке деления на нуль модели. |