Main Content

引用来自第三方的受保护模型

为了交付模型而不泄露其知识产权,第三方可以在交付前保护模型。受保护模型是不支持编辑的引用模型。受保护模型的作者可以选择是否启用只读视图、仿真、代码生成和密码保护。当操作受密码保护时,AES-256 加密技术保护支持文件内容。

注意

创建受保护模型需要 Simulink® Coder™ 许可证。

要识别受保护模型,请查找:

  • MATLAB® 当前文件夹浏览器中具有徽章图标 .slxp 扩展名的文件。受保护模型不会出现在模型资源管理器的模型层次结构中。

  • Simulink 编辑器中左下角有徽章图标的 Model 模块:

    A Model block that references a protected model displays the badge icon in addition to the protected model name, input port names, and output port names.

如果可用,受保护模型报告将说明支持的功能。要打开报告,请使用以下选项之一:

  • 在 MATLAB 当前文件夹浏览器中,右键点击受保护模型,然后点击打开报告

  • 在 Simulink 编辑器中,右键点击 Model 模块上的受保护模型徽章图标,然后点击显示报告

加载受保护模型的支持文件

您可以在工程存档或包中单独接收受保护模型。

  • 如果您收到工程存档 (.mlproj),请提取受保护模型和全部支持文件。在当前文件夹浏览器中双击工程存档 (.mlproj),并指定目标文件夹。或者,右键点击工程存档,然后点击提取到此处。工程将打开,提取的文件位于以工程存档命名的新文件夹中。

  • 如果您通过其他方法收到受保护模型或支持文件,请按照提供的说明进行操作。例如,您可能需要加载包含工作区定义的 MAT 文件。您可以配置回调函数,例如 LoadFcn,以自动加载 MAT 文件。请参阅使用回调自定义模型行为

验证受保护模型的数字签名

如果作者对受保护模型使用了签名,请验证数字签名。在当前文件夹浏览器中,双击受保护模型。在详细信息窗格中,签名者字段指示对模型签名的发布者以及签名是否已经过受信任证书认证中心的验证。在以下情况下验证会失败:

  • 受保护模型在签名后发生了更改。

  • 受保护模型没有签名。

  • 受保护模型用过期的证书进行了签名。

  • 受保护模型用作者颁发的证书进行了自签名。

  • 受保护模型用缺失或无效的证书进行了签名。

  • 您的系统中缺失 CA 证书或 CA 证书无效。

要在默认情况下验证对受保护模型的签名,请在“Simulink 预设项”对话框中,选择打开前验证受保护模型的数字签名

查看受保护模型的内容

您可以使用 Web 视图来查看以下受保护模型信息:

  • 系统内容

  • 模块参数

  • 信号属性

要打开只读视图,请双击引用受保护模型的 Model 模块或当前文件夹浏览器中的 .slxp 文件。如果只读视图受密码保护,请右键点击受保护模型的徽章图标,然后选择授权。在模型视图框中,输入密码,然后点击确定

您可以通过双击 ModelSubsystem 模块来导航模型层次结构。您也可以导航到查看全部选项卡,并选择要查看的系统。您无法在受保护模型中查看受保护引用模型的内容。

要查看模块参数和信号属性,请分别选择模块或信号线。

要在 Web 视图中搜索,请点击搜索按钮,然后在出现的框中输入要搜索的名称或值。搜索返回的模型元素会突出显示。搜索结果包括每个返回的元素的名称和父元素。

在隔离环境中测试受保护模型

对于受保护模型,您可能会收到一个框架模型,其后缀通常为 _harness。框架模型为您测试受保护模型提供隔离的环境。如果缺失任何支持文件,对框架模型进行仿真或生成代码有助于识别这些文件。

要创建框架模型,请在当前文件夹浏览器中右键点击受保护模型文件,然后点击创建框架模型。创建的框架模型是为了受保护模型仿真而建立的。

引用受保护模型

要引用受保护模型,请执行下列步骤:

  1. 确保受保护模型位于 MATLAB 路径上。

  2. 如果您有一个框架模型,请将框架模型中的 Model 模块复制到您的模型中。否则,请在新的 Model 模块中引用受保护模型。打开模块参数对话框,并在模型名称字段中输入受保护模型的名称。

    Model 模块引用受保护模型时,该模块的仿真模式变为 Accelerator。您无法更改此模式。

  3. 如果受保护模型受密码保护,请右键点击 Model 模块上的受保护模型徽章图标,然后点击授权。在模型视图框中,输入密码,然后点击确定

  4. 将信号线连接到满足其输入和输出端口要求的 Model 模块。请参阅定义模型引用接口

    请注意,受保护模型不能直接或间接使用非内联 S-Function。

  5. 提供所需的模型参量值。请参阅参数化引用模型

如果您计划对受保护模型进行仿真,请使用曾用于创建受保护模型的相同平台。软件将受保护模型存储为已编译的 MEX 二进制文件。

使用在以前的版本中保护的模型

检查您正在使用的 Simulink 版本是否支持受保护模型。

如果可用,受保护模型报告将显示用于创建受保护模型的版本。请使用与创建受保护模型所用相同的 Simulink 版本(除非受保护模型也支持更高版本),如下表中所述。

建模要求跨版本受保护模型支持
只读视图

支持,但存在限制 - R2019a 及更高版本

  • 受保护模型必须是在 R2018b 或更高版本中创建的。

普通模式下的仿真

支持,但存在限制 - R2019a 及更高版本

  • 受保护模型必须是在 R2018b 或更高版本中创建的。

加速模式下的仿真

支持,但存在限制 - R2020a 及更高版本

  • 受保护模型必须是在 R2018b 或更高版本中创建的。

  • 您必须直接对受保护模型的父模型进行仿真。不支持对包含父模型作为引用模型的模型层次结构进行仿真。要以交互方式对父模型进行仿真,您必须在它自己的窗口中将它作为顶层模型打开。有关详细信息,请参阅Navigate Model Hierarchy

  • 受保护模型必须使用即时加速,并且不能要求生成 C 代码。有关加速模式的详细信息,请参阅加速模式的工作原理

SIL 或 PIL 模式下的仿真

支持,但存在限制 - R2020b 及更高版本

  • 受保护模型包含在 R2018b 或更高版本中生成的 ERT 代码、基于 ERT 的代码、AUTOSAR 代码、GRT 代码或基于 GRT 的代码。您可以运行引用受保护模型的 Model 模块 SIL 和 PIL 仿真。有关详细信息,请参阅 Use Protected Models from Previous Releases to Perform SIL Testing and Generate Code (Embedded Coder)

    如果受保护模型中的 ERT 或 AUTOSAR 代码需要共享实用工具代码,请使用 sharedCodeUpdate (Embedded Coder) 将所需代码复制到现有共享实用工具代码文件夹中。有关详细信息,请参阅Cross-Release Shared Utility Code Reuse (Embedded Coder)

  • 您无法使用 Simulink.ModelReference.ProtectedModel.addTargetSimulink.ModelReference.ProtectedModel.removeTarget 在使用不同版本创建的受保护模型中添加或删除生成代码。

快速加速模式下的仿真不支持
代码生成

支持,但存在限制 - R2020b 及更高版本

  • 受保护模型包含在 R2018b 或更高版本中生成的 ERT 代码、基于 ERT 的代码、AUTOSAR 代码、GRT 代码或基于 GRT 的代码,具有模型引用代码接口。有关详细信息,请参阅 Use Protected Models from Previous Releases to Perform SIL Testing and Generate Code (Embedded Coder)

    如果受保护模型中的 ERT 或 AUTOSAR 代码需要共享实用工具代码,请使用 sharedCodeUpdate (Embedded Coder) 将所需代码复制到现有共享实用工具代码文件夹中。有关详细信息,请参阅Cross-Release Shared Utility Code Reuse (Embedded Coder)

  • 您无法使用 Simulink.ModelReference.ProtectedModel.addTargetSimulink.ModelReference.ProtectedModel.removeTarget 在使用不同版本创建的受保护模型中添加或删除生成代码。

另请参阅

|

相关主题