Логика и битовые операции

hisl_0016: Использование блоков, которые вычисляют операторы отношения

ID: Заголовокhisl_0016: Использование блоков, которые вычисляют операторы отношения
Описание

Чтобы поддержать робастность операций, при использовании блоков, которые вычисляют операторы отношения, включая Оператор отношения, Выдерживают сравнение С Постоянным, Выдерживают сравнение С Нулем, Обнаруживают Изменение, и Если блоки:

AИзбегайте сравнений с помощью == или оператора ~= на типах данных с плавающей точкой.
Примечания

Из-за проблем точности с плавающей точкой, не тестируйте выражения с плавающей точкой на равенство (==) или неравенство (~=).

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

ОбъяснениеAУлучшите образцовую робастность.
Проверки Model Advisor
  • By Task> Modeling Standards for DO-178C/DO-331> High-Integrity Systems> Simulink> Check for Relational Operator blocks that equate floating-point types

  • By Task> Modeling Standards for IEC 61508> High-Integrity Systems> Simulink> Check for Relational Operator blocks that equate floating-point types

  • By Task> Modeling Standards for IEC 62304> High-Integrity Systems> Simulink> Check for Relational Operator blocks that equate floating-point types

  • By Task> Modeling Standards for ISO 26262 > High-Integrity Systems> Simulink> Check for Relational Operator blocks that equate floating-point types

  • By Task> Modeling Standards for EN 50128> High-Integrity Systems> Simulink> Check for Relational Operator blocks that equate floating-point types

Для получения дополнительной информации проверки смотрите Проверку на блоки Оператора отношения, которые приравнивают типы с плавающей точкой.

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

  • EN 50128, таблица A.4 (11) 'языковое подмножество'
    EN 50128, таблица A.4 (8) 'язык программирования со строгим контролем типов'
    EN 50128, таблица A.3 (1) 'безопасное программирование'

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

  • MISRA C:2012, Dir 1.1

Смотрите такжеhisl_0017: Использование блоков, которые вычисляют операторы отношения (2)
В последний раз измененныйR2018a
Примеры

Положительный Шаблон: Чтобы протестировать, равны ли две переменные с плавающей точкой или выражения, сравните различие этих двух переменных против порога, который учитывает относительную точность с плавающей точкой (eps) и значение чисел.

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

hisl_0017: Использование блоков, которые вычисляют операторы отношения (2)

ID: Заголовокhisl_0017: Использование блоков, которые вычисляют операторы отношения (2)
Описание

Чтобы поддержать однозначное поведение в сгенерированном коде, при использовании блоков, которые вычисляют операторы отношения, включая Оператор отношения, Выдерживают сравнение С Постоянным, Выдерживают сравнение с Нулем и Обнаруживают Изменение

AУстановите параметр блока Output data type на Boolean.
BДля блоков Оператора отношения гарантируйте, что все входные сигналы имеют совпадающий тип данных.
ОбъяснениеA, B Поддержите генерацию кода, который производит однозначное поведение.
Проверки Model Advisor
  • By Task> Modeling Standards for DO-178C/DO-331> High-Integrity Systems> Simulink> Check usage of Relational Operator blocks

  • By Task> Modeling Standards for IEC 61508> High-Integrity Systems> Simulink> Check usage of Relational Operator blocks

  • By Task> Modeling Standards for IEC 62304> High-Integrity Systems> Simulink> Check usage of Relational Operator blocks

  • By Task> Modeling Standards for ISO 26262 > High-Integrity Systems> Simulink> Check usage of Relational Operator blocks

  • By Task> Modeling Standards for EN 50128> High-Integrity Systems> Simulink> Check usage of Relational Operator blocks

Для получения дополнительной информации проверки смотрите использование Проверки блоков Оператора отношения.

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

  • EN 50128, таблица A.4 (11) 'языковое подмножество'
    EN 50128, таблица A.4 (8) 'язык программирования со строгим контролем типов'
    EN 50128, таблица A.3 (1) 'безопасное программирование'

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

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

Смотрите такжеhisl_0016: Использование блоков, которые вычисляют операторы отношения
В последний раз измененныйR2018a

hisl_0018: Использование блока Logical Operator

ID: Заголовокhisl_0018: Использование блока Logical Operator
Описание

Поддерживать однозначное поведение сгенерированного кода, при использовании блока Logical Operator,

A

Установите параметры блоков Output data type на Boolean.

B

Гарантируйте, что все входные сигналы имеют тип Boolean.

Предпосылки

hisl_0045: Параметры конфигурации> Математика и Типы данных> логика Реализации сигнализируют как булевы данные (по сравнению с двойным)

ОбъяснениеA, B Избегайте неоднозначного поведения сгенерированного кода.
Проверки Model Advisor
  • By Task> Modeling Standards for DO-178C/DO-331> High-Integrity Systems> Simulink> Check usage of Logical Operator blocks

  • By Task> Modeling Standards for IEC 61508> High-Integrity Systems> Simulink> Check usage of Logical Operator blocks

  • By Task> Modeling Standards for IEC 62304> High-Integrity Systems> Simulink> Check usage of Logical Operator blocks

  • By Task> Modeling Standards for ISO 26262 > High-Integrity Systems> Simulink> Check usage of Logical Operator blocks

  • By Task> Modeling Standards for EN 50128> High-Integrity Systems> Simulink> Check usage of Logical Operator blocks

Для получения дополнительной информации проверки смотрите использование Проверки блоков Логического оператора.

Ссылки
  • DO-331, Раздел MB.6.3.1.e — Требования высокого уровня соответствуют стандартам
    DO-331, Раздел MB.6.3.2.e — Низкоуровневые требования соответствуют стандартам
    DO-331, Раздел MB.6.3.1.g 'Алгоритмы точен'
    DO-331, Раздел MB.6.3.2.g 'Алгоритмы точен'
    DO-331, Раздел MB.6.3.4.e — Исходный код прослеживаем к низкоуровневым требованиям.
    DO-331, Раздел MB.6.3.3.b — Программная архитектура сопоставима.

  • IEC 61508-3, Таблица A.3 (2) 'Язык программирования со строгим контролем типов’
    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 (1c) 'Осуществление строгого контроля типов'

  • EN 50128, таблица A.4 (11) 'языковое подмножество'
    EN 50128, таблица A.4 (8) 'язык программирования со строгим контролем типов'
    EN 50128, таблица A.3 (1) 'безопасное программирование'

  • MISRA C:2012, директива 1.1

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

hisl_0019: Использование битовых операций

ID: Заголовокhisl_0019: Использование битовых операций
Описание

Поддерживать однозначное поведение, при использовании битовых операций в блоках Simulink,

A

Избегайте подписанных типов данных, как введено к блоку.

Примечания

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

Поразрядные блоки включают:

ОбъяснениеAПоддержите однозначное поведение сгенерированного кода.
Проверки Model Advisor
  • By Task> Modeling Standards for DO-178C/DO-331> High-Integrity Systems> Simulink> Check for bitwise operations in Simulink blocks

  • By Task> Modeling Standards for IEC 61508> High-Integrity Systems> Simulink> Check for bitwise operations in Simulink blocks

  • By Task> Modeling Standards for IEC 62304> High-Integrity Systems> Simulink> Check for bitwise operations in Simulink blocks

  • By Task> Modeling Standards for EN 50128> High-Integrity Systems> Simulink> Check for bitwise operations in Simulink blocks

  • By Task> Modeling Standards for ISO 26262> High-Integrity Systems> Simulink> Check for bitwise operations in Simulink blocks

Для получения дополнительной информации проверки смотрите Проверку на битовые операции в блоках Simulink.

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

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

  • IEC 62304, 5.5.3 - критерии допустимости Программного блока

  • ISO 26262-6, Таблица 1 (1b) 'Использование языковых подмножеств'
    ISO 26262-6, Таблица 1 (1c) 'Осуществление строгого контроля типов'
    ISO 26262-6, Таблица 1 (1d) 'Использование защитных методов реализации'

  • EN 50128, таблица A.4 (11) 'языковое подмножество'
    EN 50128, таблица A.3 (1) 'безопасное программирование'
    EN 50128, таблица A.4 (8) 'язык программирования со строгим контролем типов'

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

Смотрите такжеhisf_0003: Использование битовых операций
В последний раз измененныйR2019a