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

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

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

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

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

Чтобы объявить соответствие модели - ссылки для вашей цели, необходимо реализовать функцию обратного вызова, которая устанавливает флаг ModelReferenceCompliant, и затем установите функцию обратного вызова в поле SelectCallback структуры rtwgensettings в STF. Функция обратного вызова инициирована каждый раз, когда пользователь выбирает цель в Системном Браузере Конечного файла. Например, следующий код STF устанавливает функцию с именем SelectCallback custom_select_callback_handler:

rtwgensettings.SelectCallback = 'custom_select_callback_handler(hDlg,hSrc)';

Аргументы к функции SelectCallback (hDlg, hSrc) являются указателями на частные данные, используемые API-функциями коллбэка. Эти указатели ограничиваются, чтобы использовать в функциях обратного вызова STF. Они должны быть переданы в без изменения.

Ваша функция обратного вызова должна установить флаг 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 коллбэка STF, смотрите 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.

Проверка настройки рабочего для параллельных сборок иерархий модели - ссылки (Необязательно)

Если ваша цель поддерживает параллельные сборки для иерархий ссылки большой модели, можно дополнительно настроить автоматическую верификацию рабочих MATLAB Parallel Server™. Это обращается к возможности, что у параллельных рабочих могут быть различные настройки, некоторые из которых не могут быть совместимы с определенной целевой сборкой. Например, необходимый компилятор не может быть установлен в системе рабочего.

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

Чтобы настроить автоматическую верификацию рабочих, необходимо задать параллельную функцию с именем проверки настройки STF_par_cfg_chk, где STF определяет системное имя конечного файла. Например, параллельной функцией проверки настройки для ert.tlc является ert_par_cfg_chk.

Общий синтаксис для функции:

function varargout = STF_par_cfg_chk(action,varargin)

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

Вызовите синтаксисОбращенный:Действие
cfg = STF_par_cfg_chk ('getPreferredCfg');КлиентВозвратите структуру, представляющую предпочтительную настройку для рабочих MATLAB Parallel Server.
[tf, cfg] = STF_par_cfg_chk ('getWorkerCfg', cfg);РабочиеКаждый рабочий передается предпочтительная настройка клиента MATLAB Parallel Server. Возвратите true, если рабочий может поддержать предпочтительную настройку; в противном случае возвратите false наряду со структурой, представляющей настройку, которую может поддержать рабочий. Информация, возвращенная каждым рабочим, добавляется к массиву ячеек настроек.
[tf, cfg] = STF_par_cfg_chk ('getCommonCfg', cfgs);КлиентКлиент передается массив ячеек настроек рабочего. Если применимая общая настройка существует, возвратите true и возвратите общую настройку, чтобы установить для всех систем. Если общая настройка не может быть установлена, возвратить false или принять некоторые меры, такие как возвращение к последовательным сборкам или бросок ошибки.
tf = STF_par_cfg_chk ('setCommonCfg', cfg);Рабочие и клиентКаждая система передается общая настройка, чтобы использовать. Настройте общую настройку и, в случае успеха, возвратите true. Если ошибки или проблемы происходят, возвращают false или принимают некоторые меры, такие как возвращение к последовательным сборкам или бросок ошибки.
STF_par_cfg_chk ('clearCfg');Рабочие и клиентВымойтесь после завершения параллельной сборки.

Параллельные функции проверки настройки для MathWorks®, если цели реализованы как обертка, функционируют, которые вызывают функцию с именем parallelMdlRefHostConfigCheckFcn. Например, смотрите функцию проверки настройки параллели ERT в файле matlabroot/toolbox/rtw/rtw/ert_par_cfg_chk.m и функция, это вызывает в файле matlabroot/toolbox/simulink/simulink/+Simulink/parallelMdlRefHostConfigCheckFcn.m. Функция parallelMdlRefHostConfigCheckFcn пытается установить общий компилятор через клиент MATLAB Parallel Server и рабочих.

Для получения дополнительной информации о параллельных сборках, смотрите, Уменьшают Время изготовления для Моделей, на которые Ссылаются (Simulink Coder).

Предотвращение конфликтов ресурса (Необязательно)

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

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

Например, рассмотрите добавление следующей проверки к вашему STF_make_rtw_hook.m file:

% 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

Похожие темы