Когда вы создаете защищенную модель, можно настроить ее поведение путем определения коллбэков. Коллбэки задают код, который выполняется, когда вы просматриваете, симулируете или генерируете код для защищенной модели. Вы не могли защитить коллбэки модели с поддержкой генерации HDL-кода, включенной для защищенной модели. Чтобы узнать больше об ограничениях генерации HDL-кода, смотрите Защищенные Ограничения Модели для генерации HDL-кода (HDL Coder).
Защищенный пользователь модели не может просмотреть или изменить коллбэк. Если модели - ссылки защищенная модель с коллбэками, вы не можете защитить модель.
Создать защищенную модель с коллбэками:
Задайте Simulink.ProtectedModel.Callback
объекты для каждого коллбэка.
Чтобы создать вашу защищенную модель, вызовите 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'
).
Этот пример создает защищенную модель с коллбэком для генерации кода.
На пути MATLAB создайте скрипт коллбэка, pm_callback.m
, содержа:
s1 = 'Code interface is: '; cbinfobj = Simulink.ProtectedModel.getCallbackInfo(... 'sldemo_mdlref_counter','Build','CODEGEN'); disp([s1 cbinfobj.CodeInterface]);
Создайте коллбэк, который использует скрипт.
pmCallback = Simulink.ProtectedModel.Callback('Build',... 'CODEGEN', 'pm_callback.m');
Создайте защищенную модель и задайте коллбэк генерации кода.
Simulink.ModelReference.protect('sldemo_mdlref_counter',... 'Mode', 'CodeGeneration','Callbacks',{pmCallback})
Создайте защищенную модель. Перед сборкой коллбэк отображает интерфейс кода.
rtwbuild('sldemo_mdlref_basic')
Simulink.ModelReference.protect
| Simulink.ProtectedModel.Callback
| Simulink.ProtectedModel.getCallbackInfo