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

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

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

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

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

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

Оказание модели, ссылающейся на поддержку в 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: Симуляция модели - ссылки предназначается для сборки

    Если вы конфигурируете свою цель, чтобы поддержать параллельные сборки, как обсуждено в Уменьшают Время изготовления для Моделей, на которые Ссылаются, при помощи Параллельных Сборок (Simulink Coder), необходимо также добавить следующие маркерные определения 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

Похожие темы