Чтобы задать параметры генерации кода для связанных атомарных субдиаграмм из той же библиотеки:
Откройте модель библиотеки, которая содержит вашу атомарную субдиаграмму.
Разблокируйте библиотеку.
Щелкните правой кнопкой мыши графика библиотеки и выберите Block Parameters.
В диалоговом окне задайте следующие параметры:
На вкладке Main выберите Treat as atomic unit параметра.
На вкладке Code Generation установите Function packaging параметра равным Reusable function
.
Установите File name options значение User specified
.
Для File name введите имя файла без расширения.
Щелкните OK, чтобы применить изменения.
(НЕОБЯЗАТЕЛЬНО) настройте имена сгенерированных функций для атомарных субдиаграмм:
Установите System target file параметра конфигурации модели в ert.tlc
.
Для параметр конфигурации <reservedrangesplaceholder0> модели задайте формат имен функции с помощью комбинации следующих лексем правил именования:
$R
- имя корневой модели
$F
- тип функции интерфейса для атомарной субдиаграммы
$N
- имя блока
$H
- индекс подсистемы
$M
- название-искажение текста
Щелкните OK, чтобы применить изменения.
Когда вы генерируете код для вашей модели, отдельный файл хранит код для связанных атомарных субдиаграмм из той же библиотеки.
Чтобы задать параметры генерации кода для несвязанной атомарной субдиаграммы:
На графике щелкните правой кнопкой мыши атомарная субдиаграмма и выберите Properties.
В диалоговом окне задайте следующие свойства:
Установите Code generation function packaging свойств в Reusable function
.
Установите Code generation file name options значение User specified
.
Для Code generation file name введите имя файла без расширения.
Щелкните OK, чтобы применить изменения.
(НЕОБЯЗАТЕЛЬНО) настройте имена сгенерированных функций для атомарных субдиаграмм:
Установите System target file параметра конфигурации модели в ert.tlc
.
Для параметр конфигурации <reservedrangesplaceholder0> модели задайте формат имен функции с помощью комбинации следующих лексем правил именования:
$R
- имя корневой модели
$F
- тип функции интерфейса для атомарной субдиаграммы
$N
- имя блока
$H
- индекс подсистемы
$M
- название-искажение текста
Щелкните OK, чтобы применить изменения.
Когда вы генерируете код для модели, отдельный файл хранит код для атомарной субдиаграммы. Для получения дополнительной информации смотрите Сгенерировать код из атомарных субдиаграмм.
Чтобы преобразовать состояние A в атомарную субдиаграмму, щелкните правой кнопкой мыши состояние и выберите Group & Subchart > Atomic Subchart. Состояние A изменяется на атомарной субдиаграмме:
Откройте диалоговое окно свойств для A.
Установите Code generation function packaging свойств в Reusable function
.
Установите Code generation file name options значение User specified
.
Для Code generation file name введите saturator
как имя файла.
Нажмите OK.
Установите System target file параметра конфигурации модели в ert.tlc
.
Выберите параметры конфигурации модели Create code generation report и Open report automatically.
Выберите параметры Code-to-model и Model-to-code.
Нажмите Apply.
Установите параметр конфигурации модели Subsystem methods на схему формата $R$N$M$F
, где:
$R
- имя корневой модели.
$N
- имя блока.
$M
- это мангльная лексема.
$F
- тип функции интерфейса для атомарной субдиаграммы.
Для получения дополнительной информации смотрите Методы подсистемы.
Нажмите 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');