Если вы хотите использовать пользовательский системный конечный файл в создавании модели, которая сослалась на модели, необходимо сконфигурировать пользовательский системный конечный файл к ссылке модели поддержки.
Чтобы создать модель, которая ссылается на другие модели:
Используйте пользовательский системный конечный файл, который выведен из GRT или системного конечного файла ERT.
Пользовательский системный конечный файл должен объявить, что податливость модели - ссылки – видит, что Объявление Модели Ссылается на Податливость.
Make-файл шаблона должен задать некоторые сущности, что ссылка модели поддержки – видит, что Модель Оказания Ссылается на Поддержку в TMF.
Чтобы объявить податливость модели - ссылки для вашей цели, необходимо реализовать функцию обратного вызова, которая устанавливает ModelReferenceCompliant
отметьте, и затем установите функцию обратного вызова в SelectCallback
поле rtwgensettings
структура в вашем системном конечном файле. Функция обратного вызова инициирована каждый раз, когда пользователь выбирает цель в Системном Браузере Конечного файла. Например, следующий системный код конечного файла устанавливает SelectCallback
функция с именем custom_select_callback_handler
:
rtwgensettings.SelectCallback = 'custom_select_callback_handler(hDlg,hSrc)';
Аргументы к SelectCallback
функция (hDlg
, hSrc
) указатели на частные данные, используемые API-функциями коллбэка. Эти указатели ограничиваются, чтобы использовать в системных функциях обратного вызова конечного файла. Они должны быть переданы в без изменения.
Ваша функция обратного вызова должна установить ModelReferenceCompliant
отметьте можно следующим образом:
slConfigUISetVal(hDlg,hSrc,'ModelReferenceCompliant','on'); slConfigUISetEnabled(hDlg,hSrc,'ModelReferenceCompliant',false);
Если вы можете использовать цель, чтобы создать модели, содержащие иерархии ссылки большой модели, полагать, что конфигурирование цели, чтобы поддержать параллельные сборки, как обсуждено в Уменьшают Время изготовления для Моделей, на которые Ссылаются, при помощи Параллельных Сборок (Simulink Coder).
Чтобы сконфигурировать цель для параллельных сборок, ваша функция обратного вызова должна также установить ParMdlRefBuildCompliant
отметьте можно следующим образом:
slConfigUISetVal(hDlg,hSrc,'ParMdlRefBuildCompliant','on'); slConfigUISetEnabled(hDlg,hSrc,'ParMdlRefBuildCompliant',false);
Для получения дополнительной информации о системном API коллбэка конечного файла, смотрите slConfigUIGetVal
, slConfigUISetEnabled
, и slConfigUISetVal
страницы ссылки на функцию.
Сконфигурировать make-файл шаблона (TMF) для ссылки модели:
Добавьте, что следующее делает переменные и лексемы, которые будут расширены, когда make-файл сгенерирован:
MODELREFS = |>MODELREFS<| MODELLIB = |>MODELLIB<| MODELREF_LINK_LIBS = |>MODELREF_LINK_LIBS<| MODELREF_LINK_RSPFILE = |>MODELREF_LINK_RSPFILE_NAME<| RELATIVE_PATH_TO_ANCHOR = |>RELATIVE_PATH_TO_ANCHOR<| MODELREF_TARGET_TYPE = |>MODELREF_TARGET_TYPE<|
Следующая выборка кода показывает, как лексемы make-файла расширены для модели, на которую ссылаются.
MODELREFS = MODELLIB = engine3200cc_rtwlib.a MODELREF_LINK_LIBS = MODELREF_LINK_RSPFILE = RELATIVE_PATH_TO_ANCHOR = ../../.. MODELREF_TARGET_TYPE = RTW
Следующая выборка кода показывает, как лексемы make-файла расширены для топ-модели, которая ссылается на модель, на которую ссылаются.
MODELREFS = engine3200cc transmission MODELLIB = archlib.a MODELREF_LINK_LIBS = engine3200cc_rtwlib.a transmission_rtwlib.a MODELREF_LINK_RSPFILE = RELATIVE_PATH_TO_ANCHOR = .. MODELREF_TARGET_TYPE = NONE
Лексема | Расширяется до |
---|---|
MODELREFS для топ-модели | Список имен модели, на которые ссылаются. |
MODELLIB | Имя библиотеки сгенерировано для модели. |
MODELREF_LINK_LIBS лексема для топ-модели | Список библиотек модели, на которые ссылаются, против которых соединяется топ-модель. |
MODELREF_LINK_RSPFILE лексема для топ-модели | Имя файла ответа, против которого соединяется топ-модель. Эта лексема допустима только для сред сборки, которые поддерживают файлы ответа компоновщика. Для примера его использования смотрите . |
RELATIVE_PATH_TO_ANCHOR | Относительный путь, от местоположения сгенерированного make-файла, к MATLAB® рабочая папка. |
MODELREF_TARGET_TYPE | Показывает тип создаваемой цели. Возможные значения
|
Если вы конфигурируете свою цель, чтобы поддержать параллельные сборки, как обсуждено в Уменьшают Время изготовления для Моделей, на которые Ссылаются, при помощи Параллельных Сборок (Simulink Coder), необходимо также добавить следующие маркерные определения TMF:
START_DIR = |>START_DIR<| MASTER_ANCHOR_DIR = |>MASTER_ANCHOR_DIR<|
Лексема | Расширяется до |
---|---|
START_DIR | Текущая папка работы (pwd ) в то время запущенная сборка. |
MASTER_ANCHOR_DIR | Текущая папка работы (pwd ) в то время запущенная сборка. |
Добавьте RELATIVE_PATH_TO_ANCHOR
включайте путь к полному INCLUDES
переменная.
INCLUDES = -I. -I$(RELATIVE_PATH_TO_ANCHOR) $(ADD_INCLUDES) \ $(USER_INCLUDES) $(SHARED_INCLUDES)
Измените SRCS
переменная в вашем TMF так, чтобы это первоначально перечислило только общие модули. Дополнительные модули затем добавлены условно, как описано в следующем шаге. Например, изменение
SRCS = $(MODEL).c $(MODULES) ert_main.c $(ADD_SRCS) $(EXT_SRC)
к
SRCS = $(MODULES)
Создайте переменные, чтобы задать итоговую цель make-файла. Можно удалить переменные, которые, возможно, существовали для определения итоговой цели. Например, удалить
PROGRAM = ../$(MODEL)
и замените его на
ifeq ($(MODELREF_TARGET_TYPE), NONE) # Top model for RTW PRODUCT = $(RELATIVE_PATH_TO_ANCHOR)/$(MODEL) BIN_SETTING = $(LD) $(LDFLAGS) -o $(PRODUCT) $(SYSLIBS) BUILD_PRODUCT_TYPE = "executable" # ERT based targets SRCS += $(MODEL).c ert_main.c $(EXT_SRC) # GRT based targets # SRCS += $(MODEL).c grt_main.c rt_sim.c $(EXT_SRC) $(SOLVER) else # sub-model for RTW PRODUCT = $(MODELLIB) BUILD_PRODUCT_TYPE = "library" endif
Если make-файл шаблона сопоставлен с набором инструментальных средств, удалите $(MODEL).c
или $(MODEL).$(TARGET_LANG_EXT)
от SRCS
список.
Создайте правила для итоговой цели make-файла (замените существующие итоговые целевые правила). Например:
ifeq ($(MODELREF_TARGET_TYPE),NONE) # Top model for RTW $(PRODUCT) : $(OBJS) $(LIBS) $(MODELREF_LINK_LIBS) $(BIN_SETTING) $(LINK_OBJS) $(MODELREF_LINK_LIBS) $(LIBS) @echo "### Created $(BUILD_PRODUCT_TYPE): $@" else # sub-model for RTW $(PRODUCT) : $(OBJS) $(LIBS) @rm -f $(MODELLIB) $(ar) ruvs $(MODELLIB) $(LINK_OBJS) @echo "### Created $(MODELLIB)" @echo "### Created $(BUILD_PRODUCT_TYPE): $@" endif
Создайте правило позволить моделям, на которые ссылаются, компилировать файлы, которые находятся в MATLAB рабочая папка (pwd
).
%.o : $(RELATIVE_PATH_TO_ANCHOR)/%.c $(CC) -c $(CFLAGS) $<
Если вы используете TMF без переменной MODELREFS
, файл может использоваться с предыдущим релизом программного обеспечения Simulink®. Если вы хотите свой TMF к ссылке модели поддержки, добавьте любую переменную MODELREFS
к make-файлу.
По умолчанию значение параметра конфигурации, заданного в системном конечном файле для основанной на TLC пользовательской цели, должно быть тем же самым в модели, на которую ссылаются, и ее родительской модели. Чтобы ослабить это требование, включайте modelReferenceParameterCheck
поле в rtwoptions
элемент структуры, который задает параметр конфигурации и устанавливает значение поля к 'off'
. Например:
rtwoptions(2).prompt = 'My Custom Parameter'; rtwoptions(2).type = 'Checkbox'; rtwoptions(2).default = 'on'; rtwoptions(2).modelReferenceParameterCheck = 'on'; rtwoptions(2).tlcvariable = 'mytlcvariable'; ...
Параметр конфигурации Мой Пользовательский Параметр может отличаться по модели, на которую ссылаются, и ее родительской модели. Смотрите Настраивают Системные Конечные файлы для получения информации об основанных на TLC системных конечных файлах и rtwoptions Полевые Сводные данные Структуры для списка rtwoptions
поля .
Сцепитесь файлы являются дополнительным TLC и файлами программы MATLAB, которые вызываются на четко определенных этапах процесса сборки. Сцепитесь файлы позволяют вам настроить процесс сборки и передать информацию между различными фазами процесса.
Если вы адаптируете свою пользовательскую цель к совместимости генерации кода с функциями модели - ссылки, полагаете, что добавляющие проверки к вашим файлам рычага для обработки моделей, на которые ссылаются, по-другому, чем топ-модели предотвращают конфликты ресурса.
Например, рассмотрите добавление следующей проверки к вашему
:STF
Файл _make_rtw_hook.m
% Check if this is a referenced model mdlRefTargetType = get_param(codeGenModelName,`ModelReferenceTargetType'); isNotModelRefTarget = strcmp(mdlRefTargetType, `NONE'); % NONE, SIM, or RTW if isNotModelRefTarget % code that is specific to the top model else % code that is specific to the referenced model end
Вы, возможно, должны сделать подобную регистрацию вашего кода TLC.
%if !IsModelReferenceTarget() %% code that is specific to the top model %else %% code that is specific to the referenced model %endif