hisf_0018: Использование сравнений равенства с плавающей точкой в Stateflow

Идентификатор: Заголовокhisf_0018: Использование сравнений равенства с плавающей точкой в Stateflow
Описание

Чтобы поддержать робастность операций, при выполнении численного сравнения в Stateflow:

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

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

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

ОбъяснениеAУлучшите робастность модели.
Проверки Model AdvisorПроверяйте использование выражений с плавающей точкой в диаграммах Stateflow (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) 'Language Subset'
    EN 50128, таблица A.4 (8) 'Сильно типизированный язык программирования'
    EN 50128, таблица A.3 (1) 'Defensive Programming'

  • DO-331, Section MB.6.3.2.g 'Алгоритмы точны'

  • MISRA C:2012, Dir 1.1

См. также

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

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

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

Правильный

Операторы сравнения равенств не используются в операндах с плавающей точкой.

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

Оператор сравнения равенств == используется в операндах с плавающей точкой.