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

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

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

Чтобы поддержать робастность операций, при использовании блоков, которые вычисляют операторы отношения, включая Relational Operator, Compare To Constant, Compare To Zero, Detect Change и блоки If:

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

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

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

ОбъяснениеAУлучшите робастность модели.
Проверки Model AdvisorПроверяйте на блоки Оператора отношения, которые приравнивают типы с плавающей точкой (Simulink Check)
Ссылки
  • 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)
Описание

Поддерживать однозначное поведение в сгенерированном коде, при использовании блоков, которые вычисляют операторы отношения, включая Relational Operator, Compare To Constant, Compare to Zero и Detect Change

AУстановите параметры блоков Output data type на Boolean.
BДля блоков Relational Operator проверьте, что входные сигналы имеют совпадающий тип данных.
ОбъяснениеA, B Поддержите генерацию кода, который производит однозначное поведение.
Проверки Model AdvisorПроверяйте использование блоков Оператора отношения (Simulink Check)
Ссылки
  • 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Проверяйте использование блоков Логического оператора (Simulink Check)
Ссылки
  • 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, директива 10.1

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

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

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

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

A

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

Примечания

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

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

ОбъяснениеAПоддержите однозначное поведение сгенерированного кода.
Проверки Model AdvisorПроверяйте использование блоков битовой операции (Simulink Check)
Ссылки
  • 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