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