Сгенерируйте повторно используемый код

Атомарный подграфик является графическим объектом в Stateflow®, который помогает вам создать автономные субкомпоненты в диаграмме Stateflow. Для получения дополнительной информации смотрите, Создают Допускающие повторное использование Субкомпоненты при помощи Атомарных Подграфиков (Stateflow).

Создание reuseable сгенерированный код из атомарных подграфиков полезно для тестирования отдельных частей вашей диаграммы Stateflow. Когда вы генерируете код для своего графика, отдельные хранилища файлов код для атомарного подграфика, который допускает модульное тестирование. Для получения дополнительной информации смотрите, Генерируют Повторно используемый код.

Как сгенерировать повторно используемый код для соединенных атомарных подграфиков

Задавать параметры генерации кода для соединенных атомарных подграфиков от той же библиотеки:

  1. Откройте модель библиотеки, которая содержит ваш атомарный подграфик.

  2. Разблокируйте библиотеку.

  3. Щелкните правой кнопкой по графику библиотеки и выберите Block Parameters.

  4. В диалоговом окне задайте следующие параметры:

    1. На вкладке Main выберите Treat as atomic unit.

    2. На вкладке Code Generation, набор Function packaging к Reusable function.

    3. Установите File name options на User specified.

    4. Для File name введите имя файла без расширения.

    5. Нажмите OK, чтобы применить изменения.

  5. (НЕОБЯЗАТЕЛЬНО) Настройте сгенерированные имена функций для атомарных подграфиков:

    1. Установите параметр конфигурации модели System target file на ert.tlc.

    2. Для параметра конфигурации модели Subsystem methods задайте формат имен функций с помощью комбинации следующих лексем:

      • $R — корневое имя модели

      • $F — тип функции интерфейса для атомарного подграфика

      • $N — имя блока

      • $H — индекс подсистемы

      • $M — искажающий имя текст

    3. Нажмите OK, чтобы применить изменения.

Когда вы генерируете код для своей модели, отдельные хранилища файлов код для соединенных атомарных подграфиков от той же библиотеки.

Как сгенерировать повторно используемый код для расцепляемых атомарных подграфиков

Задавать параметры генерации кода для расцепляемого атомарного подграфика:

  1. В вашем графике щелкните правой кнопкой по атомарному подграфику и выберите Properties.

  2. В диалоговом окне задайте следующие параметры:

    1. Установите Code generation function packaging на Reusable function.

    2. Установите Code generation file name options на User specified.

    3. Для Code generation file name введите имя файла без расширения.

    4. Нажмите OK, чтобы применить изменения.

  3. (НЕОБЯЗАТЕЛЬНО) Настройте сгенерированные имена функций для атомарных подграфиков:

    1. Установите параметр конфигурации модели System target file на ert.tlc.

    2. Для параметра конфигурации модели Subsystem methods задайте формат имен функций с помощью комбинации следующих лексем:

      • $R — корневое имя модели

      • $F — тип функции интерфейса для атомарного подграфика

      • $N — имя блока

      • $H — индекс подсистемы

      • $M — искажающий имя текст

    3. Нажмите OK, чтобы применить изменения.

Сгенерируйте повторно используемый код для модульного тестирования

К модульному тесту диаграмма Stateflow в модели Simulink® необходимо сначала разломать график на меньшие автономные компоненты при помощи атомарных подграфиков. Атомарный подграфик является графическим объектом, который помогает вам создать автономные субкомпоненты в диаграмме Stateflow. Если ваш график разломан на отдельные модули, можно затем сгенерировать код для этих модулей, которые можно протестировать.

Чтобы протестировать ваши диаграммы Stateflow, не генерируя код из атомарных подграфиков, смотрите Тестовые обвязки (Simulink Test).

Примите, что у вас есть следующая модель, и график имеет два состояния:

Предположим, что вы хотите сгенерировать повторно используемый код так, чтобы можно было выполнить модульное тестирование на состоянии A. Можно преобразовать ту часть графика к атомарному подграфику и затем задать отдельный файл, чтобы сохранить сгенерированный код.

Преобразуйте состояние в атомарный подграфик

Чтобы преобразовать состояние в атомарный подграфик, во вкладке Modeling, нажимают Atomic Subchart. Состояние изменения в атомарном подграфике:

Задайте параметры генерации кода

Настройте автономный файл C для атомарного подграфика

  1. Откройте диалоговое окно государственной собственности для A.

  2. Установите Code generation function packaging на Reusable function.

  3. Установите Code generation file name options на User specified.

  4. Для Code generation file name введите saturator как имя файла.

  5. Нажмите OK.

Настройте отчет генерации кода

  1. Установите параметр конфигурации модели System target file на ert.tlc.

  2. Выберите параметр конфигурации модели Create code generation report.

    Этот шаг автоматически выбирает Open report automatically и Code-to-model.

  3. Выберите параметр Model-to-code.

  4. Нажмите Apply.

Настройте сгенерированные имена функций

  1. Установите параметр конфигурации модели Subsystem methods на схему $R$N$M$F формата, где:

    • $R корневое имя модели.

    • $N имя блока.

    • $M лексема искажения.

    • $F тип функции интерфейса для атомарного подграфика.

    Для получения дополнительной информации см. методы Подсистемы (Simulink Coder).

  2. Нажмите Apply.

Сгенерируйте отдельный код для атомарного подграфика

Чтобы сгенерировать код для вашей модели, нажмите Ctrl+B. В отчете генерации кода, который появляется, вы видите отдельный файл, который содержит сгенерированный код для атомарного подграфика.

Смотреть код для saturator.c, кликните по гиперссылке в отчете видеть следующий код:

Линия 31 показывает что during функция, сгенерированная для атомарного подграфика, имеет имя ex_reuse_states_A_during. Это имя следует схеме $R$N$M$F формата заданный для Subsystem methods:

  • $R корневое имя модели, ex_reuse_states.

  • $N имя блока, A.

  • $M лексема искажения, которая пуста.

  • $F тип функции интерфейса для атомарного подграфика, during.

Примечание

Показанные номера строки могут отличаться от чисел, которые появляются в вашем отчете генерации кода.

Похожие темы