exponenta event banner

Математические операции

hisl_0001: Использование блока Abs

Идентификатор: Заголовокhisl_0001: Использование блока Abs
ОписаниеДля обеспечения надежности генерируемого кода при использовании блока Abs
AИзбегайте логических и неподписанных типов данных в качестве входных данных блока Abs.
BВыберите параметр блока Насыщение при переполнении целого числа.
Примечания

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

Для подписанных типов данных Simulink ® не представляет абсолютное значение самого отрицательного значения. При выборе параметра «Насыщение при целочисленном переполнении» абсолютное значение типа данных достигает максимально положительного представимого значения. При сбросе параметра «Насыщение при переполнении целого числа» расчеты абсолютных значений в моделировании и сгенерированном коде могут быть непротиворечивыми или ожидаемыми .

ОбъяснениеAПоддержка генерации отслеживаемого кода.
BОбеспечение согласованного и ожидаемого поведения моделирования модели и сгенерированного кода.
Проверки помощника по модели Проверка использования блоков Abs (Simulink Check)
Ссылки
  • МЭК 61508-3, Таблица A.3 (3) «Поднабор языка»
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование»
    IEC 61508-3, Таблица A.3 (2) «Язык программирования со строгой типизацией »
    МЭК 61508-3, Таблица B.8 (3) «Анализ потока управления»

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 (1b) «Использование языковых поднаборов»
    ISO 26262-6, Таблица 1 (1d) «Использование защитных технологий реализации»
    ISO 26262-6, Таблица 7 (1f) «Анализ контрольного потока»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»
    EN 50128, Таблица A.4 (8) «Сильно типизированный язык программирования»
    EN 50128, Таблица A.19 (3) «Анализ потока управления»

  • DO-331, Раздел MB.6.3.2.d «Проверяются требования низкого уровня»
    DO-331, Раздел MB.6.3.2.g - «Алгоритмы точны»

  • MISRA C:2012, Dir 4.1

Последнее изменениеR2018b
Примеры

Рекомендуется

Не рекомендуется

hisl_0002: Использование блоков математических функций (rem и revacal)

Идентификатор: Заголовокhisl_0002: Использование блоков математических функций (rem и revacal)
Описание

Для поддержки надежности генерируемого кода при использовании блока Математическая функция с остатком после деления (rem) или взаимный (reciprocal) функции:

A

Защита входных данных reciprocal от перехода к нулю.

B

Защитите второй вход rem от перехода к нулю.

Примечание

Можно получить операцию деления на ноль, в результате чего получится бесконечная (Inf) выходное значение для reciprocal функция или не-a-число (NaN) выходное значение для rem функция. Чтобы избежать переполнения или неопределенных значений, защитите соответствующие входные данные от перехода к нулю.

ОбъяснениеЗащита от переполнений и неопределенных числовых результатов.
Проверки помощника по моделиПроверка использования математических функциональных блоков (rem и обратных функций) (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Поднабор языка "
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование »

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 b) «Использование языковых поднаборов»
    ISO 26262-6, Таблица 1 d) «Использование защитных технологий реализации»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»

  • DO-331, Раздел MB.6.3.2.g «Алгоритмы точны»

  • MISRA C:2012, Dir 4.1

Последнее изменениеR2017b
Примеры

В следующем примере, когда входной сигнал колеблется вокруг нуля, выходной сигнал показывает большое изменение значения. Требуется дополнительная защита от большого изменения стоимости.

hisl_0003: Использование блоков квадратного корня

Идентификатор: Заголовокhisl_0003: Использование блоков квадратного корня
Описание

Для обеспечения надежности созданного кода при использовании блока «Квадратный корень» выполните одно из следующих действий:

A

Учитывайте комплексные числа в качестве выходных данных.

B

Защитите входные данные от отрицательного изменения.

ОбъяснениеA, BИзбегайте нежелательных результатов при создании кода.
Проверки помощника по моделиПроверка использования блоков Sqrt (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Поднабор языка "
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование »

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 b) «Использование языковых поднаборов »
    ISO 26262-6, Таблица 1 d) «Использование защитных технологий реализации»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»

  • DO-331, Раздел MB.6.3.2.g «Алгоритмы точны»

  • MISRA C:2012, Dir 4.1

Последнее изменениеR2016a
Примеры

hisl_0028: Использование блоков обратного квадратного корня

Идентификатор: Заголовокhisl_0028: Использование блоков обратного квадратного корня
Описание

Для обеспечения надежности генерируемого кода при использовании блока «Обратный квадратный корень» выполните одно из следующих действий:

A

Защитите входные данные от отрицательного изменения.

B

Защитите входные данные от перехода к нулю.

Примечание

Можно получить операцию деления на ноль, что приведет к (Inf) выходное значение для обратной функции. Чтобы избежать переполнения или неопределенных значений, защитите соответствующие входные данные от перехода к нулю.

ОбъяснениеA, BИзбегайте нежелательных результатов при создании кода.
Проверки помощника по моделиПроверка использования взаимных блоков Sqrt (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Поднабор языка "
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование »

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 b) «Использование языковых поднаборов »
    ISO 26262-6, Таблица 1 d) «Использование защитных технологий реализации»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»

  • DO-331, Раздел MB.6.3.2.g «Алгоритмы точны»

  • MISRA C:2012, Dir 4.1

Последнее изменениеR2016a
Примеры

hisl_0004: Использование блоков математических функций (натуральный логарифм и базовый 10 логарифм)

Идентификатор: Заголовокhisl_0004: Использование блоков математических функций (натуральный логарифм и базовый 10 логарифм)
Описание

Для поддержки надежности генерируемого кода при использовании блока Математическая функция с натуральным логарифмом (log) или логарифм основания 10 (log10) параметры функции,

A

Защитите входные данные от отрицательного изменения.

B

Защитите входные данные от равенства нулю.

C

Учтите комплексные числа в качестве выходного значения.

Примечания

Если для типа выходных данных задано комплексное значение, функции натурального логарифма и базового логарифма 10 выводят комплексные значения для отрицательных входных значений. Если для типа выходных данных установлено значение real, функции выводят данные NAN для отрицательных чисел и минус бесконечность (-inf) для нулевых значений.

ОбъяснениеA, B, CПоддержка создания надежного кода.
Проверки помощника по моделиПроверка использования математических функциональных блоков (функции log и log10) (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Поднабор языка "
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование »

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 b) «Использование языковых поднаборов»
    ISO 26262-6, Таблица 1 d) «Использование защитных технологий реализации»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»

  • DO-331, Раздел MB.6.3.2.g «Алгоритмы точны»

  • MISRA C:2012, Dir 4.1

Последнее изменениеR2017b
Примеры

Вы можете защитить от:

  • Отрицательные числа с использованием блока Abs.

  • Нулевые значения с использованием комбинации блока MinMax и блока Constant со значением Constant, равным eps (эпсилон).

В следующем примере показаны выходные данные для входных значений в диапазоне от -100 кому 100.

hisl_0005: Использование блоков продуктов

Идентификатор: Заголовокhisl_0005: Использование блоков продуктов
Описание

Если для параметра блока продукта Multiplication установлено значение Matrix(*), защитить входы делителей от превращения в сингулярные входные матрицы.

Примечания

При использовании блоков изделия для вычисления инверсии матрицы или деления матрицы можно получить деление на сингулярную матрицу. Это разделение приводит к NaN выход. Чтобы избежать переполнения, защитите входы делителей от превращения в сингулярные входные матрицы.

ОбъяснениеЗащита от переполнения и поддержка надежности генерируемого кода.
Проверки помощника по моделиСоблюдение этого руководства по моделированию невозможно проверить с помощью проверки Model Advisor.
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Поднабор языка "
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование »

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 (1b) «Использование языковых поднаборов»
    ISO 26262-6, Таблица 1 (1d) «Использование защитных технологий реализации»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»

  • DO-331, Раздел MB.6.3.2.g 'Алгоритмы точны

  • MISRA C:2012, Dir 4.1

Предпосылкиhisl_0314: Параметры конфигурации > Диагностика > Валидность данных > Сигналы
Последнее изменениеR2021a

hisl_0029: Использование блоков назначения

Идентификатор: Заголовокhisl_0029: Использование блоков назначения
Описание

Для поддержки надежности сгенерированного кода при использовании блока Assignment инициализируйте поля массива перед их первым использованием.

Примечания

Если выходной вектор блока Assignment не инициализирован с вводом в блок, элементы вектора могут не быть инициализированы в сгенерированном коде.

Если блок Assignment используется итеративно и все поля массива назначаются в течение одного шага времени моделирования, ввод инициализации в блок не требуется.

Доступ к неинициализированным элементам блочного вывода может привести к непредвиденному поведению.

ОбъяснениеИзбегайте нежелательных результатов при создании кода.
Проверки помощника по моделиПроверка использования блоков назначения (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Поднабор языка "
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование»
    IEC 61508-3, таблица A.3 (2) «Сильно типизированный язык программирования»

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 b) «Использование языковых поднаборов »
    ISO 26262-6, Таблица 1 d) «Использование защитных технологий реализации»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»
    EN 50128, Таблица A.4 (8) «Сильно типизированный язык программирования»

  • DO-331, Раздел MB.6.3.2.g - «Алгоритмы точны»

  • MISRA C:2012, правило 9.1

Последнее изменениеR2016a
Примеры

Не рекомендуется: нет Y0 ввода инициализации, если блок не используется итеративно


Рекомендуется: Y0 ввода инициализации, когда блок не используется итеративно


Рекомендуется: Инициализация полей массива при итерационном использовании блока

hisl_0066: Использование блоков усиления

Идентификатор: Заголовокhisl_0066: Использование блоков усиления
ОписаниеДля поддержки отслеживания генерируемого кода значение блока усиления не должно разрешаться в 1.
Примечания

Процесс генерации кода может удалить значения коэффициента усиления, равные 1 во время оптимизации, что приводит к появлению элементов модели без отслеживаемого кода.

Исключением из этого правила является установка значения Gain для именованного объекта данных параметра с классом хранения, не являющимся автоматическим.

ОбъяснениеПоддержка создания отслеживаемого кода.
Проверки помощника по моделиПроверка использования блоков усиления (Simulink Check)
Ссылки
  • DO-331, раздел MB 6.3.2.b «Требования низкого уровня являются точными и согласованными»

  • МЭК 61508-3, Таблица A.3 (3) «Поднабор языка»
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование»
    МЭК 61508-3, Таблица B.8 (3) «Анализ потока управления»

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 (1b) «Использование языковых поднаборов»
    ISO 26262-6, Таблица 1 (1d) «Использование защитных технологий реализации»
    ISO 26262-6, Таблица 7 (1f) «Анализ контрольного потока»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»
    EN 50128, Таблица A.19 (3) «Анализ потока управления»

Последнее изменениеR2018a

hisl_0067: Защита от деления на ноль

Идентификатор: Заголовокhisl_0067: Защита от деления на ноль
ОписаниеДля обеспечения надежности генерируемого кода при выполнении операций деления защитите делитель от перехода к нулю.
Примечание

Чтобы доказать, что деление на ноль невозможно, выполните статический анализ модели.

Если возможно разделение на ноль, выполните одно из следующих действий. Использование нескольких вариантов может привести к резервированию операций защиты:

Использование списков CRL или удаление параметра конфигурации Удалить код, защищающий от арифметических исключений разделения (Embedded Coder), защищает операции разделения от операций деления на ноль. Однако это действие действительно приводит к дополнительным вычислительным расходам и расходам памяти, а также к возможности введения недостижимого кода.

ОбъяснениеУлучшение соответствия кода сформированному коду
Проверки помощника по моделиПроверка на деление на ноль (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Поднабор языка "

    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование»

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 b) «Использование языковых поднаборов»

    ISO 26262-6, Таблица 1 d) «Использование защитных технологий реализации»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»

    EN 50128, таблица A.3 (1) «Оборонительное программирование»

  • DO-331, Раздел MB.6.3.2.g «Алгоритмы точны»

  • MISRA C:2012, Dir 4.1

См. также
Последнее изменениеR2021a
Пример

Неправильный

Операция разделения может привести к сценарию деления на ноль.

Divide-by-zero exists in model example.

Правильный

Графическая функция для проверки деления модели на ноль.

Correct example of modeling to prevent divide-by-zero.