文档

为受保护模型定义回调函数

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

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

要创建一个带有回调的受保护模型:

  1. 定义金宝appSimulink.ProtectedModel.Callback对象用于每个回调。

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

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

此示例创建了一个受保护的模型,该模型带有用于代码生成的回调。

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

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

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

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

    rtwbuild (“sldemo_mdlref_basic”

另请参阅

||

相关的话题