为受保护模型定义回调函数
当您创建受保护的模型时,您可以通过定义回调来定制它的行为。回调函数指定在查看、模拟或生成受保护模型的代码时执行的代码。您不能为受保护模型启用HDL代码生成支持的受保护模型回调。金宝app要了解更多关于HDL代码生成限制的信息,请参见HDL代码生成的受保护模型限制(高密度脂蛋白编码器)。
受保护的模型用户不能查看或修改回调。如果模型引用带有回调的受保护模型,则不能保护该模型。
要创建一个带有回调的受保护模型:
定义
金宝appSimulink.ProtectedModel.Callback
对象用于每个回调。要创建受保护的模型,请调用
金宝appSimulink.ModelReference.protect
函数。使用“回调”
选项指定要包含在受保护模型中的回调单元格数组。
创建回调
要创建和定义受保护的模型回调,请创建金宝appSimulink.ProtectedModel.Callback
对象。回调对象指定:
为回调执行的代码。代码可以是MATLAB的一个字符向量®命令或脚本的MATLAB路径。
触发回调的事件。事件可以是
“PreAccess”
或“构建”
.事件所应用的受保护模型功能。功能可以是
“CODEGEN”
,“SIM卡”
,“视图”
,或“汽车”
.如果您选择“汽车”
,事件是“PreAccess”
,回调应用于每个功能。如果您选择“汽车”
,事件是“构建”
,回调函数只应用于“CODEGEN”
功能。如果不选择功能,则默认行为为“汽车”
.覆盖受保护的模型构建过程的选项。此选项仅适用于
“CODEGEN”
功能。
每个事件和每个功能只能创建一个回调。
定义回调代码
您可以使用MATLAB命令的字符向量或MATLAB路径上的脚本来定义回调的代码。当你编写回调代码时,遵循以下准则:
回调必须使用MATLAB代码(
.m
或每分钟
).代码可以包括受保护的模型函数或不需要加载模型的MATLAB命令。
回调代码不能调用外部实用程序,除非这些实用程序在使用受保护模型的环境中可用。
回调代码不能引用源受保护模型,除非您正在使用受保护模型函数。
您可以使用金宝appSimulink.ProtectedModel.getCallbackInfo
函数在回调代码中获取受保护模型的信息。函数返回一个金宝appSimulink.ProtectedModel.CallbackInfo
对象,该对象提供受保护的模型名称和子模型的名称。如果指定了回调函数“CODEGEN”
功能和“构建”
事件时,对象提供目标标识符和模型代码接口类型(“高级模式”
或“模型参考”
).
创建一个带有回调的受保护模型
此示例创建了一个受保护的模型,该模型带有用于代码生成的回调。
在MATLAB路径上,创建一个回调脚本,
pm_callback.m
,包含:s1 ='代码接口是:';cbinfobj = 金宝appSimulink.ProtectedModel.getCallbackInfo(...“sldemo_mdlref_counter”,“构建”,“CODEGEN”);disp ([s1 cbinfobj.CodeInterface]);
创建一个使用脚本的回调。
pmCallback = 金宝appSimulink.ProtectedModel.Callback(“构建”,...“CODEGEN”,“pm_callback.m”);
创建受保护的模型并指定代码生成回调。
金宝appSimulink.ModelReference.protect (“sldemo_mdlref_counter”,...“模式”,“CodeGeneration”,“回调”, {pmCallback})
构建受保护的模型。在构建之前,回调将显示代码接口。
rtwbuild (“sldemo_mdlref_basic”)
另请参阅
金宝appSimulink.ModelReference.protect
|金宝appSimulink.ProtectedModel.Callback
|金宝appSimulink.ProtectedModel.getCallbackInfo