Этот пример показывает, как предотвратить создание моделями Simulink ® неиспользуемых переменных в сгенерированном коде, когда условие варианта исходного блока более мягкое, чем условие варианта целевого блока. Предотвращение создания неиспользованных переменных в сгенерированном коде увеличивает вероятность генерации кода С, который соответствует правилу 2.2 руководящих принципов C:2012 MISRA.
В этой модели источником подсвеченного сигнала является блок EvlnB. Адресат сигнала - VariantSource3. Вариантом условия EvlnB является A > 0
, что более мягко, чем условие варианта A > 0 && B == 1
VariantSource3.
Предположим, что значение 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
. Установка этого параметра предупреждает вас о неиспользованных переменных во время генерации кода.