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