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

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

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

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.2.g 'Алгоритмы точен'

  • MISRA C:2012, Dir 1.1

Смотрите также

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

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

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

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

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