Предотвратите создание неиспользованных переменных для вариантов Lenient

Этот пример показывает, как предотвратить создание моделями Simulink ® неиспользуемых переменных в сгенерированном коде, когда условие варианта исходного блока более мягкое, чем условие варианта целевого блока. Предотвращение создания неиспользованных переменных в сгенерированном коде увеличивает вероятность генерации кода С, который соответствует правилу 2.2 руководящих принципов C:2012 MISRA.

Описание модели

В этой модели источником подсвеченного сигнала является блок EvlnB. Адресат сигнала - VariantSource3. Вариантом условия EvlnB является A > 0, что более мягко, чем условие варианта A > 0 && B == 1 VariantSource3.

Сгенерируйте код С, используя Embedded Coder

Предположим, что значение A является 1, и значение B является 0.

Когда вы генерируете код, используя Embedded Coder™, условие варианта EvlnB, A > 0, оценивает, чтобы true, и условие VariantSource3, A > 0 && B == 1, оценивает, чтобы false. Однако код генерируется для всех вариантов выбора. В сгенерированном коде переменная rtb_Switch создается. Эта переменная соответствует блоку Switch, который расположен внутри блока EvlnB. rtb_Switch используется только тогда, когда A > 0 && B == 1 вычисляет, чтобы true. В этом примере, с A > 0 && B == 1 вычисляет, чтобы false, rtb_Switch остается неиспользованным.

Чтобы избежать проблем моделирования, которые могут создать неиспользованные переменные в сгенерированном коде, выберите Model Settings > Diagnostics. Разверните раздел продвинутые параметры и прокрутите до нижней части диалогового окна. В разделе Проблемы моделирования, связанные с вариантами, установите несоответствие условий Варианта в источнике сигнала и параметре назначения на warning или error. Установка этого параметра предупреждает вас о неиспользованных переменных во время генерации кода.

См. также