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