Ссылка модели поддержки

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

Требования для ссылки модели с пользовательским системным конечным файлом

Чтобы создать модель, которая ссылается на другие модели:

Объявление модели, ссылающейся на податливость

Чтобы объявить податливость модели - ссылки для вашей цели, необходимо реализовать функцию обратного вызова, которая устанавливает 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);

Если вы можете использовать цель, чтобы создать модели, содержащие иерархии ссылки большой модели, полагать, что конфигурирование цели, чтобы поддержать параллельные сборки, как обсуждено в Уменьшают Время изготовления для Моделей, на которые Ссылаются, при помощи Параллельных Сборок.

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

slConfigUISetVal(hDlg,hSrc,'ParMdlRefBuildCompliant','on');
slConfigUISetEnabled(hDlg,hSrc,'ParMdlRefBuildCompliant',false);

Для получения дополнительной информации о системном API коллбэка конечного файла, смотрите slConfigUIGetVal, slConfigUISetEnabled, и slConfigUISetVal страницы ссылки на функцию.

Оказание модели, ссылающейся на поддержку в TMF

Сконфигурировать make-файл шаблона (TMF) для ссылки модели:

  1. Добавьте, что следующее делает переменные и лексемы, которые будут расширены, когда 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 лексема для топ-модели Имя файла ответа, против которого соединяется топ-модель. Эта лексема допустима только для сред сборки, которые поддерживают файлы ответа компоновщика. Для примера его использования смотрите matlabroot/rtw/c/grt/grt_vc.tmf.
    RELATIVE_PATH_TO_ANCHORОтносительный путь, от местоположения сгенерированного make-файла, к MATLAB® рабочая папка.
    MODELREF_TARGET_TYPE

    Показывает тип создаваемой цели. Возможные значения

    • NONE: Автономная или топ-модель модели, ссылающаяся на другие модели

    • RTW: Сборка цели модели-ссылки

    • SIM: Симуляция модели - ссылки предназначается для сборки

    Если вы конфигурируете свою цель, чтобы поддержать параллельные сборки, как обсуждено в Уменьшают Время изготовления для Моделей, на которые Ссылаются, при помощи Параллельных Сборок, необходимо также добавить следующие маркерные определения TMF:

    START_DIR = |>START_DIR<|
    MASTER_ANCHOR_DIR = |>MASTER_ANCHOR_DIR<|
    ЛексемаРасширяется до
    START_DIRТекущая папка работы (pwd) в то время запущенная сборка.
    MASTER_ANCHOR_DIRТекущая папка работы (pwd) в то время запущенная сборка.
  2. Добавьте RELATIVE_PATH_TO_ANCHOR включайте путь к полному INCLUDES переменная.

    INCLUDES = -I. -I$(RELATIVE_PATH_TO_ANCHOR) $(ADD_INCLUDES) \
    	   $(USER_INCLUDES) $(SHARED_INCLUDES)
  3. Измените SRCS переменная в вашем TMF так, чтобы это первоначально перечислило только общие модули. Дополнительные модули затем добавлены условно, как описано в следующем шаге. Например, изменение

    SRCS  = $(MODEL).c $(MODULES) ert_main.c $(ADD_SRCS) $(EXT_SRC)

    к

    SRCS = $(MODULES)
  4. Создайте переменные, чтобы задать итоговую цель 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 список.

  5. Создайте правила для итоговой цели 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
  6. Создайте правило позволить моделям, на которые ссылаются, компилировать файлы, которые находятся в 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

Похожие темы