Задайте коллбэки для защищенных моделей

Когда вы создаете защищенную модель, можно настроить ее поведение путем определения коллбэков. Коллбэки задают код, который выполняется, когда вы просматриваете, моделируете или генерируете код для защищенной модели. Вы не можете иметь защищенные коллбэки модели с поддержкой генерации HDL-кода, включенной для защищенной модели. Для получения дополнительной информации об ограничениях генерации HDL-кода смотрите Защищенные ограничения модели для генерации HDL-кода (HDL Coder).

Пользователь защищенной модели не может просматривать или изменять коллбэк. Если модель ссылается на защищенную модель с коллбэками, вы не можете защитить модель.

Чтобы создать защищенную модель с коллбэками:

  1. Определите Simulink.ProtectedModel.Callback объекты для каждого коллбэка.

  2. Чтобы создать свою защищенную модель, вызовите Simulink.ModelReference.protect функция. Используйте 'Callbacks' опция, чтобы задать массив ячеек коллбэков для включения в защищенную модель.

Создание коллбэков

Чтобы создать и определить защищенную модель коллбэка, создайте Simulink.ProtectedModel.Callback объект. Объекты коллбэка задают:

  • Код для выполнения коллбэка. Код может быть вектором символов MATLAB® команды или скрипт в пути MATLAB.

  • Событие, которое вызывает коллбэк. Событие может быть 'PreAccess' или 'Build'.

  • Функциональность защищенной модели, к которой применяется событие. Функциональность можно 'CODEGEN', 'SIM', 'VIEW', или 'AUTO'. Если вы выбираете 'AUTO', и событие 'PreAccess'обратный коллбэк применяется к каждой функциональности. Если вы выбираете 'AUTO', и событие 'Build'обратный коллбэк применяется только к 'CODEGEN' функциональность. Если вы не выбираете функциональность, поведение по умолчанию 'AUTO'.

  • Опция для переопределения процесса сборки защищенной модели. Эта опция применяется только к 'CODEGEN' функциональность.

Можно создать только один коллбэк для каждого события и каждой функциональности.

Определение кода коллбэка

Вы можете задать код для коллбэка, используя либо вектор символов команд MATLAB, либо скрипт в пути MATLAB. Когда вы пишете код коллбэка, следуйте следующим рекомендациям:

  • Коллбэки должны использовать код MATLAB (.m или .p).

  • Код может включать защищенные функции модели или команду MATLAB, которая не требует загрузки модели.

  • Код коллбэка не должен вызываться внешними утилитами, если только эти утилиты не доступны в окружении, где используется защищенная модель.

  • Код коллбэка не может ссылаться на исходную защищенную модель, если вы не используете защищенные функции модели.

Вы можете использовать Simulink.ProtectedModel.getCallbackInfo функция в коде коллбэка для получения информации о защищенной модели. Функция возвращает Simulink.ProtectedModel.CallbackInfo объект, который задает имя защищенной модели и имена подмоделей. Если коллбэк задан для 'CODEGEN' функциональность и 'Build' event, объект предоставляет целевой идентификатор и тип интерфейса кода модели ('Top model' или 'Model reference').

Создайте защищенную модель с коллбэками

Этот пример создает защищенную модель с коллбэком для генерации кода.

  1. На пути MATLAB создайте скрипт коллбэка, pm_callback.m, содержащая:

    s1 = 'Code interface is: ';
    cbinfobj = Simulink.ProtectedModel.getCallbackInfo(...
    'sldemo_mdlref_counter','Build','CODEGEN');
    disp([s1 cbinfobj.CodeInterface]);
    
  2. Создайте коллбэк, который использует скрипт.

    pmCallback = Simulink.ProtectedModel.Callback('Build',...
    'CODEGEN', 'pm_callback.m');
    
  3. Создайте защищенную модель и задайте коллбэк генерации кода.

    Simulink.ModelReference.protect('sldemo_mdlref_counter',...
    'Mode', 'CodeGeneration','Callbacks',{pmCallback})
  4. Создайте защищенную модель. Перед сборкой в коллбэке отображается интерфейс кода.

    slbuild('sldemo_mdlref_basic')

См. также

| |

Похожие темы