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

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

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)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Языковое подмножество'
    IEC 61508-3, Таблица A.4 (3) 'Безопасное программирование'
    IEC 61508-3, Таблица A.3 (2) 'Язык программирования со строгим контролем типов’
    IEC 61508-3, таблица B.8 (3) 'анализ потока управления'

  • IEC 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

  • INT32-C. Убедитесь, что операции на целых числах со знаком не приводят к переполнению

В последний раз измененныйR2021b
Примеры

Рекомендуемый

Не рекомендуемый

hisl_0002: Использование остатка и взаимные операции

ID: Заголовокhisl_0002: Использование остатка и взаимные операции
Описание

Поддерживать робастность сгенерированного кода, при использовании блока Math Function с остатком после деления (rem) или обратная величина (reciprocal) операции:

A

Защитите вход reciprocal функция от попытки обнулить.

B

Защитите второй вход rem функция от попытки обнулить.

Примечание

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

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

  • IEC 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

  • INT33-C. Убедитесь, что деление и операции остатка не приводят к ошибкам деления на нуль

В последний раз измененныйR2021b
Примеры

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

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

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

Чтобы поддержать робастность сгенерированного кода, при использовании операций Square Root, выполняют одно из следующих действий:

A

Объясните комплексные числа как выход.

B

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

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

  • IEC 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

В последний раз измененныйR2021b
Примеры

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

ID: Заголовокhisl_0028: Использование Взаимных блоков Квадратного корня
Описание

Чтобы поддержать робастность сгенерированного кода, при использовании блока Reciprocal Square Root, выполняют одно из следующих действий:

A

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

B

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

Примечание

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

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

  • IEC 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

  • INT33-C. Убедитесь, что деление и операции остатка не приводят к ошибкам деления на нуль

В последний раз измененныйR2021b
Примеры

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

ID: Заголовокhisl_0004: Использование натурального логарифма и основы 10 операций логарифма
Описание

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

A

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

B

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

C

Объясните комплексные числа как выходное значение.

Примечания

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

ОбъяснениеA, B, C Поддержите генерацию устойчивого кода.
Проверки Model AdvisorПроверяйте использование журнала и log10 операций (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Языковое подмножество'
    IEC 61508-3, Таблица A.4 (3) 'Безопасное программирование'

  • IEC 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

  • INT33-C. Убедитесь, что деление и операции остатка не приводят к ошибкам деления на нуль

В последний раз измененныйR2021b
Примеры

Можно защитить от:

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

  • Нулевые значения с помощью комбинации блока MinMax и блока Constant, с набором Constant value к eps \epsilon.

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

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

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

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

Примечания

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

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

  • IEC 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: Использование блоков Присвоения

ID: Заголовокhisl_0029: Использование блоков Присвоения
Описание

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

Примечания

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

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

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

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

  • IEC 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

  • EXP33-C. Не читайте неинициализированную память

В последний раз измененныйR2021b
Примеры

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


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


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

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

ID: Заголовокhisl_0066: Использование блоков Усиления
ОписаниеЧтобы поддержать трассируемость сгенерированного кода, значение блока Gain не должно решать к 1.
Примечания

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

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

ОбъяснениеПоддержите генерацию прослеживаемого кода.
Проверки Model AdvisorПроверяйте использование блоков Усиления (Simulink Check)
Ссылки
  • DO-331, Мбайт Раздела 6.3.2.b 'Низкоуровневые требования точен и сопоставим'

  • IEC 61508-3, Таблица A.3 (3) 'Языковое подмножество'
    IEC 61508-3, Таблица A.4 (3) 'Безопасное программирование'
    IEC 61508-3, таблица B.8 (3) 'анализ потока управления'

  • IEC 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: Защитите от вычислений деления на нуль

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

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

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

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

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

    IEC 61508-3, Таблица A.4 (3) 'Безопасное программирование'

  • IEC 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.