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