Когда вы создаете защищенную модель, можно настроить ее поведение путем определения коллбэков. Коллбэки задают код, который выполняется, когда вы просматриваете, моделируете или генерируете код для защищенной модели. Вы не могли защитить образцовые коллбэки с поддержкой генерации HDL-кода, включенной для защищенной модели. Чтобы узнать больше об ограничениях генерации HDL-кода, смотрите Защищенные Образцовые Ограничения для генерации HDL-кода (HDL Coder).
Защищенный образцовый пользователь не может просмотреть или изменить коллбэк. Если модели - ссылки защищенная модель с коллбэками, вы не можете защитить модель.
Создать защищенную модель с коллбэками:
Задайте объекты Simulink.ProtectedModel.Callback
для каждого коллбэка.
Чтобы создать вашу защищенную модель, вызовите функцию 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'
, объект обеспечивает целевой идентификатор и тип интерфейса типового кодекса ('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