exponenta event banner

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

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

Идентификатор: Заголовокhisl_0016: Использование блоков, вычисляющих реляционные операторы
Описание

Для поддержки надежности операций при использовании блоков, которые вычисляют реляционные операторы, включая реляционный оператор, сравнение с константой, сравнение с нулем, знак, обнаружение изменений и блоки If:

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

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

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

ОбъяснениеAПовышение надежности модели.
Проверки помощника по моделиПроверка блоков реляционного оператора, которые приравнивают типы с плавающей запятой (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (2) «Язык программирования со строгой типизацией»
    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 (1с) «Применение строгой типизации»

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

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

  • MISRA C:2012, Dir 1.1

См. также

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

himl_0009: код MATLAB с равными/не равными реляционными операторами

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

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

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

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

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

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

AЗадать для параметра блока Тип выходных данных значение Boolean.
BДля блоков реляционного оператора убедитесь, что входные сигналы имеют один и тот же тип данных.
ОбъяснениеA, BПоддержка создания кода, который обеспечивает однозначное поведение.
Проверки помощника по моделиПроверка использования блоков реляционного оператора (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (2) «Язык программирования со строгой типизацией»
    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 (1с) «Применение строгой типизации»

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

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

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

См. такжеhisl_0016: Использование блоков, вычисляющих реляционные операторы
Последнее изменениеR2018a

hisl_0018: Использование блока логического оператора

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

Для поддержки однозначного поведения генерируемого кода при использовании блока логического оператора,

A

Задать для параметра блока Тип выходных данных значение Boolean.

B

Убедитесь, что входные сигналы имеют тип Boolean.

Предпосылки

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

ОбъяснениеA, BИзбегайте неоднозначного поведения созданного кода.
Проверки помощника по моделиПроверка использования логических блоков оператора (Simulink Check)
Ссылки
  • DO-331, Раздел MB.6.3.2.g «Алгоритмы точны»

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

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

  • MISRA C:2012, Директива 10.1

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

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

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

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

A

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

Примечания

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

Побитовые блоки включают в себя:

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

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

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

  • ISO 26262-6, Таблица 1 (1b) «Использование языковых поднаборов»
    ISO 26262-6, таблица 1 (1с) «Применение строгой типизации»
    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