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

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

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

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

  1. Задайте Simulink.ProtectedModel.Callback объекты для каждого коллбэка.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Можно использовать Simulink.ProtectedModel.getCallbackInfo функция в коде коллбэка, чтобы получить информацию о защищенной модели. Функция возвращает Simulink.ProtectedModel.CallbackInfo объект, который обеспечивает защищенное имя модели и имена подмоделей. Если коллбэк задан для 'CODEGEN' функциональность и 'Build' событие, объект обеспечивает целевой идентификатор и тип интерфейса типового кодекса ('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. Создайте защищенную модель. Перед сборкой коллбэк отображает интерфейс кода.

    rtwbuild('sldemo_mdlref_basic')

Смотрите также

| |

Похожие темы