exponenta event banner

Создание многоразового кода из атомных субчартов Stateflow

Создание многоразового кода для связанных атомных субчартов

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

  1. Откройте библиотечную модель, содержащую атомарную вложенную диаграмму.

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

  3. Щелкните правой кнопкой мыши диаграмму библиотеки и выберите «Параметры блока».

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

    1. На вкладке Главная (Main) выберите параметр Обработать как атомную единицу измерения (Treat as atomic unit).

    2. На вкладке Создание кода установите для параметра Упаковка функций значение Reusable function.

    3. Задать для параметров имени файла значение User specified.

    4. В поле «Имя файла» введите имя файла без расширения.

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

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

    1. Задайте для параметра конфигурации модели System target file значение ert.tlc.

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

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

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

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

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

      • $M - искомый текст

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

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

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

Чтобы задать параметры генерации кода для несвязанного атомарного подкадра, выполните следующие действия.

  1. На диаграмме щелкните правой кнопкой мыши атомарную вложенную диаграмму и выберите Свойства.

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

    1. Задайте для свойства Упаковка функции создания кода значение Reusable function.

    2. Задать для параметров имени файла генерации кода значение User specified.

    3. В поле Имя файла генерации кода введите имя файла без расширения.

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

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

    1. Задайте для параметра конфигурации модели System target file значение ert.tlc.

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

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

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

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

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

      • $M - искомый текст

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

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

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

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

Чтобы преобразовать состояние A в атомарный подшаг, щелкните его правой кнопкой мыши и выберите пункт «Группа и подшаг» > «Атомарный подшаг». Изменение состояния А в атомарном подшаге:

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

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

  2. Задайте для свойства Упаковка функции создания кода значение Reusable function.

  3. Задать для параметров имени файла генерации кода значение User specified.

  4. В поле «Имя файла генерации кода» введите saturator в качестве имени файла.

  5. Нажмите кнопку ОК.

Настройка отчета по созданию кода

  1. Задайте для параметра конфигурации модели System target file значение ert.tlc.

  2. Выберите параметры конфигурации модели Создать отчет о создании кода и Открыть отчет автоматически.

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

  4. Нажмите кнопку «Применить».

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

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

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

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

    • $M - токен манглов.

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

    Дополнительные сведения см. в разделе Методы подсистемы.

  2. Нажмите кнопку «Применить».

Создать код только для атомарного подшлага

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

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

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

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

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

  • $M является маркером mangle, который пуст.

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

Примечание

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

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

В этой модели показано, как разделить атомарную подсистему на собственный исходный файл. Как только подсистема указана как атомарная, в диалоговом окне «Параметр блока подсистемы» на вкладке «Создание кода» можно указать способ представления подсистемы в сгенерированном коде с помощью параметра упаковки функции:

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

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

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

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

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

open_system('rtwdemo_filepart')

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

bdclose('rtwdemo_filepart');

Связанные темы