В этом примере показано, как указать, следует ли создавать варианты по умолчанию для операторов switch-case в коде диаграмм Stateflow ®. Сгенерированный код, не содержащий случаев по умолчанию, сохраняет потребление ПЗУ и обеспечивает лучшее покрытие кода, поскольку каждая ветвь в сгенерированном коде поддается фальсификации.
Некоторые стандарты кодирования, такие как MISRA, требуют использования регистра по умолчанию для операторов switch-case. Если вы хотите увеличить шансы на создание кода, совместимого с MISRA C, создайте варианты по умолчанию для недостижимых инструкций Stateflow switch.
На фиг.1, 2 и 3 показаны соответствующие части sldemo_fuelsys модель, замкнутая система, содержащая установку и контроллер. Логика контроллера расхода воздуха и топлива представляет собой диаграмму статофлоу, которая определяет различные режимы работы.
Рисунок 1: Модель верхнего уровня установки и контроллера

Рис. 2: Подсистема регулятора расхода топлива

Рис. 3: Логика контроллера расхода топлива

В окне команды MATLAB для открытия sldemo_fuelsys через rtwdemo_fuelsys введите:
rtwdemo_fuelsys
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration parameters). На вкладке Создание кода > Стиль кода снимите флажок Подавить создание вариантов по умолчанию для инструкций Stateflow, если они недоступны.
В окне команд MATLAB для построения модели введите:
slbuild('sldemo_fuelsys/fuel_rate_control');Для различных режимов работы: fuel_rate_control.c содержит случаи по умолчанию для недостижимых операторов коммутатора. Например, для режима работы Shutdown созданный код содержит следующую инструкцию по умолчанию:
default: /* Unreachable state, for coverage only */ rtDWork.bitsForTID0.is_Fuel_Disabled = IN_NO_ACTIVE_CHILD; break;
Для режима работы «Разогрев» созданный код содержит следующую инструкцию по умолчанию:
default: /* Unreachable state, for coverage only */ rtDWork.bitsForTID0.is_Low_Emissions = IN_NO_ACTIVE_CHILD; break;
Откройте диалоговое окно «Параметры конфигурации». На вкладке Создание кода > Стиль кода выберите параметр Подавить создание вариантов по умолчанию для инструкций Stateflow, если они недоступны.
Создайте модель.
Прочитайте через fuel_rate_control.c файл. Случаи по умолчанию для операторов недостижимых коммутаторов отсутствуют в сгенерированном коде.