Сгенерируйте переиспользуемый код из Atomic Subcharts 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. Для параметр конфигурации <reservedrangesplaceholder0> модели задайте формат имен функции с помощью комбинации следующих лексем правил именования:

      • $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. Для параметр конфигурации <reservedrangesplaceholder0> модели задайте формат имен функции с помощью комбинации следующих лексем правил именования:

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

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

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

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

      • $M - название-искажение текста

    3. Щелкните OK, чтобы применить изменения.

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

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

Преобразуйте состояние в атомарную субдиаграмму

Чтобы преобразовать состояние A в атомарную субдиаграмму, щелкните правой кнопкой мыши состояние и выберите Group & Subchart > Atomic Subchart. Состояние A изменяется на атомарной субдиаграмме:

Настройка автономного файла 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.

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

  4. Нажмите Apply.

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

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

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

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

    • $M - это мангльная лексема.

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

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

  2. Нажмите Apply.

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

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

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

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

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

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

  • $M - это лексема мангля, которая пуста.

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

Примечание

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

Упаковка файлов для атомарных подсистем (только для кода)

Эта модель показывает, как разделить атомарную подсистему на ее собственный исходный файл. Если подсистема задана как атомарная, в диалоговом окне Блок Subsystem Parameter, на вкладке Генерация Кода, можно задать, как подсистема представлена в сгенерированном коде, используя параметр Function packaging:

  • Inline: Встроенная функция

  • Function: функция с вводом-выводом, переданная как глобальные данные

  • Reusable function: функция с вводом-выводом передается как аргументы функции

  • Auto: Simulink Coder оптимизирует на основе контекста

С Function и Reusable function опции, можно задать функцию и имя файла с именем функции и именем файла, соответственно. В модели rtwdemo_filepart, SS1 подсистема сконфигурирована следующим образом Reusable function с именем функции myfun и имя файла myfile.

open_system('rtwdemo_filepart')

Эта возможность разделяет только код для подсистемы. Данные объявлены и принадлежат родительской модели. Для полной инкапсуляции системы (то есть данных и функций) используйте Модель-ссылка.

bdclose('rtwdemo_filepart');

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте