主要内容

定义受保护模型的回调

创建受保护模型时,可以通过定义回调来自定义其行为。回调指定在查看、模拟或生成受保护模型的代码时执行的代码。您不能为受保护的模型启用HDL代码生成支持的受保护模型回调。要了解有关HDL代码生成限制的更多信息,请参见HDL代码生成的受保护模型限制(高密度脂蛋白编码器)

受保护的模型用户不能查看或修改回调。如果模型引用带有回调的受保护模型,则无法保护该模型。

使用回调函数创建一个受保护的模型:

  1. 定义Simulink.ProtectedModel.Callback对象。

  2. 要创建受保护的模型,请调用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”功能和“构建”事件时,对象提供目标标识符和模型代码接口类型(“高级模式”“模型参考”).

创建带有回调的受保护模型

这个例子创建了一个带有代码生成回调的受保护模型。

  1. 在MATLAB路径上,创建一个回调脚本,pm_callback.m,包含:

    s1 =代码接口为:;cbinfobj = Simulink.ProtectedModel.getCallbackInfo(...“sldemo_mdlref_counter”“构建”“CODEGEN”);disp ([s1 cbinfobj.CodeInterface]);
  2. 创建一个使用脚本的回调。

    pmCallback = Simulink.ProtectedModel.Callback(“构建”...“CODEGEN”“pm_callback.m”);
  3. 创建受保护的模型并指定代码生成回调。

    Simulink.ModelReference.protect (“sldemo_mdlref_counter”...“模式”“CodeGeneration”“回调”, {pmCallback})
  4. 构建受保护的模型。在构建之前,回调将显示代码接口。

    slbuild (“sldemo_mdlref_basic”

另请参阅

||

相关的话题

Baidu
map