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

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

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

В этой модели источник подсвеченного сигнала является блоком 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. Установка этого параметра предупреждает вас о неиспользуемых переменных во время генерации кода.

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