В этом примере показано, как использовать атомарные субдиаграммы для генерации кода для отдельных частей графика Stateflow ®. Когда вы генерируете код для вашего графика, отдельный файл хранит код для атомарной субдиаграммы. Атомарные субдиаграммы поддерживаются только в диаграммах Stateflow в моделях Simulink ®. Для получения дополнительной информации смотрите Создание переиспользуемых подкомпонентов при помощи атомарных субдиаграмм.
Эта модель содержит два блока Sine Wave (Simulink): один с частотой 1 радиан в секунду, и другой с частотой 2 радиана в секунду.
На графике каждое состояние использует логику сатуратора, чтобы преобразовать вход синусоиды в выход квадратную волну с той же частотой.
Поскольку этот пример не использует атомарные субдиаграммы, сгенерированный код для всей модели хранится в одном файле. Чтобы найти код для определенной части графика, необходимо просмотреть весь файл.
Напротив, можно преобразовать состояние A
для атомарной субдиаграммы и указать, что код для субдиаграммы появляется в отдельном файле. Этот метод генерации кода позволяет выполнить модульное тестирование для определенной части графика. Вы избегаете поиска через несвязанный код и фокусируетесь только на коде, который вас интересует.
Шаг 1. Преобразование состояния в атомарную субдиаграмму
Щелкните правой кнопкой мыши состояние A
и выберите Group & Subchart > Atomic Subchart. Конечные A
изменяется на атомарной субдиаграмме и отображает метку Atomic в левом верхнем углу.
Шаг 2: Настройка автономного файла C для атомарной субдиаграммы
Откройте диалоговое окно свойств для субдиаграммы A
щелчком правой кнопкой мыши по субдиаграмме и выбором Свойств.
Установите свойство упаковки функции генерации кода в Reusable function
.
Установите значение свойства Code generation file name options User specified
.
В поле Имя файла генерации кода введите saturator
как имя файла.
Нажмите кнопку ОК.
Шаг 3: Настройка отчета генерации кода
На вкладке Моделирование щелкните Свойства графика > Настройки модели, чтобы открыть диалоговое окно Параметры конфигурации.
На вкладке Генерации кода установите параметр System target файла равным ert.tlc
.
В разделе Генерация кода > Отчет выберите Создать отчет генерации кода.
В разделе продвинутые параметры выберите Model-to-code.
Нажмите Применить.
Шаг 4: Настройка сгенерированных Имен функции
В диалоговом окне Параметров конфигурации, на вкладке Генерации кода > Identifiers, установите параметр Subsystem methods в формат схемы $R$N$M$F
, где:
$R
- имя корневой модели.
$N
- имя блока.
$M
- это мангльная лексема.
$F
- тип функции интерфейса для атомарной субдиаграммы.
Чтобы сгенерировать код для вашей модели при помощи Embedded Coder ®, нажмите Ctrl + B.
Отчет о генерации кода содержит ссылки на код, сгенерированный из графика (файлы модели) и атомарной субдиаграммы (файлы подсистемы). Чтобы просмотреть код субдиаграммы, щелкните saturator.c
гиперссылка.
Линия 31 показывает, что during
функция, сгенерированная для атомарной субдиаграммы, имеет имя ex_reuse_states_A_during
. Это имя соответствует схеме формата $R$N$M$F
для методов Подсистемы:
Имя корневой модели ex_reuse_states
.
Имя блока A
.
Лексема мангле пуста.
Тип функции интерфейса для атомарной субдиаграммы during
.
Примечание. Номера линий, которые появляются в отчете генерации кода, могут отличаться от показанных номеров.
Sine Wave (Simulink)