Simulink.ModelReference.modifyProtectedModel
修改现有受保护模型
语法
说明
修改由 harnessHandle
= Simulink.ModelReference.modifyProtectedModel(mdl
)mdl
指定的现有受保护模型的选项。如果不指定名称-值参量,则修改后的受保护模型将更新为默认值,并且仅支持仿真。
当模型保护创建并打开框架模型时,框架模型的句柄由 harnessHandle
返回。默认情况下,harnessHandle
返回 0
。
支持上述语法中的输入参量,且可使用一个或多个名称-值参量指定选项。例如,更改只读视图、仿真和代码生成的加密密码。当您向受保护模型添加功能或更改加密密码时,非受保护模型必须可用。软件会在 MATLAB® 路径中搜索模型。harnessHandle
= Simulink.ModelReference.modifyProtectedModel(mdl
,Name=Value
)
[
在 harnessHandle
,neededVars
] = Simulink.ModelReference.modifyProtectedModel(___)neededVars
中返回受保护模型使用的基础工作区变量的名称。指定上述语法中的一个输入参量组合。
示例
创建一个支持代码生成的可修改的受保护模型,然后将受保护模型重置为使用默认值。
打开包含名为 sldemo_mdlref_counter
的引用模型的示例。
mdl = "sldemo_mdlref_counter";
openExample(mdl)
添加修改受保护模型时的密码。如果跳过此步骤,则当创建可修改的受保护模型时,系统会提示您设置密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... mdl, "password");
创建一个支持代码生成的可修改的受保护模型。
Simulink.ModelReference.protect(mdl, Mode="CodeGeneration", ... Modifiable=true, Report=true);
提供修改受保护模型的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... mdl, "password");
修改模型以使用默认值。
Simulink.ModelReference.modifyProtectedModel(mdl);
生成的受保护模型会更新为默认值,并且仅支持仿真。
创建一个支持代码生成和 Web 视图的可修改的受保护模型,然后修改受保护模型以删除 Web 视图支持。
打开包含名为 sldemo_mdlref_counter
的引用模型的示例。
mdl = "sldemo_mdlref_counter";
openExample(mdl)
添加修改受保护模型时的密码。如果跳过此步骤,则当创建可修改的受保护模型时,系统会提示您设置密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... mdl, "password");
创建一个支持代码生成和 Web 视图的可修改的受保护模型。
Simulink.ModelReference.protect(mdl, Mode="CodeGeneration", ... Webview=true, Modifiable=true, Report=true);
提供修改受保护模型的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... mdl, "password");
从您创建的受保护模型中删除对 Web 视图的支持。
Simulink.ModelReference.modifyProtectedModel(mdl, ... Mode="CodeGeneration", Report=true);
更改可修改的受保护模型的加密密码。
打开包含名为 sldemo_mdlref_counter
的引用模型的示例。
mdl = "sldemo_mdlref_counter";
openExample(mdl)
添加修改受保护模型时的密码。如果跳过此步骤,则当创建可修改的受保护模型时,系统会提示您设置密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... mdl, "password");
添加受保护模型用户在生成代码时必须提供的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForSimulation(... mdl, "simpassword");
创建一个可修改的受保护模型,该模型包含报告并支持采用加密的代码生成。
Simulink.ModelReference.protect(mdl, Mode="CodeGeneration", ... Encrypt=true, Modifiable=true, Report=true);
提供修改受保护模型的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... mdl, "password");
更改仿真的加密密码。
Simulink.ModelReference.modifyProtectedModel(mdl, ... Mode="CodeGeneration", Encrypt=true, Report=true, ... ChangeSimulationPassword={'simpassword','new_password'});
为现有受保护模型创建框架模型。
打开包含名为 CounterAlgorithm
的引用模型的示例。
openExample('simulink/ComponentInterfaceSpecificationUsingBusesExample')
添加修改受保护模型时的密码。如果跳过此步骤,则当创建可修改的受保护模型时,系统会提示您设置密码。
mdl = "CounterAlgorithm"; Simulink.ModelReference.ProtectedModel.setPasswordForModify(... mdl, "password");
创建一个可修改的受保护模型,该模型包含报告并支持采用加密的代码生成。
Simulink.ModelReference.protect(mdl, Mode="CodeGeneration", ... Modifiable=true, Report=true);
提供修改受保护模型的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... mdl, "password");
确定受保护模型所需的变量。
[harness,neededVars] = Simulink.ModelReference.modifyProtectedModel(... mdl, Mode="CodeGeneration", Report=true);
您必须发送到接收方的变量由 neededVars
给出。neededVars
的值是元胞数组,包含受保护模型所需的变量的名称。但是,该元胞数组还可以包含模型不需要的变量的名称。
提示
要将所需的变量定义与受保护模型自动打包在一个工程中,请将 Project
设置为 true
。
在共享受保护模型之前,请编辑 neededVars
以删除模型不需要的任何变量的名称。将所需变量保存在数据字典中。
输入参数
模型名称,指定为字符串或字符向量。指定要修改的受保护模型的名称或引用受保护模型的 Model 模块的路径。
数据类型: char
| string
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Mode="CodeGeneration",OutputFormat="Binaries",ObfuscateCode=true)
指定为受保护模型生成的经过模糊处理的代码,并且只有生成代码中的二进制文件和头文件对受保护模型的用户可见。
文件选项
自 R2023b 起
用于收集工程中依赖关系的选项,指定为 false
或 true
。
指定是否将支持文件(包括框架模型)与受保护模型一起打包到工程存档中。支持文件的类型和数量取决于受保护模型。支持文件的示例是具有基础工作区定义的 MAT 文件和删减成相关定义的数据字典。支持文件不受保护。
false
- 仅创建受保护模型。如果该受保护模型有依赖关系,您必须单独共享它们。同样,如果为受保护模型创建框架模型,则必须单独共享该框架模型。true
- 创建一个工程存档 (.mlproj
),其中包含受保护模型、其依赖关系及其框架模型。支持文件不受保护。工程存档是一个单独的文件,可方便地进行共享。要创建交互式工程,请打开工程存档。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Project=true)
提示
在共享工程之前,请检查工程是否包含必需的支持文件。如果缺失支持文件,对相关的框架模型进行仿真或生成代码有助于识别这些文件。将缺失的依赖关系添加到工程中,并根据需要更新框架模型。有关详细信息,请参阅管理工程文件。
依赖关系
要将 Project
设置为 true
,请将 Mode
设置为支持仿真的值。例如,将 Mode
设置为 "Simulation"
(默认值)。
数据类型: logical
自 R2023b 起
自定义工程名称,指定为字符向量或字符串标量。
指定包含生成文件的工程存档的名称。存档中的工程使用相同的名称。
如果不指定自定义工程名称,则工程的默认名称为受保护模型名称后跟 _protected
。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Project=true,ProjectName="MyProject")
依赖关系
要启用此参量,请将 Project
设置为 true
。
数据类型: char
| string
选择是否创建框架模型,指定为布尔值。
指定是否为受保护模型创建框架模型的位置。框架模型为受保护模型提供隔离的环境,该模型由 Model 模块引用。
false
- 不为受保护模型创建框架模型。true
- 为受保护模型创建框架模型。
当您为依赖基础工作区定义的受保护模型创建框架模型时,软件会创建一个包含基础工作区定义的 MAT 文件。
框架模型必须能够访问支持文件,例如具有基础工作区定义的 MAT 文件或数据字典。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Harness=true)
依赖关系
数据类型: logical
受保护模型的文件夹,指定为字符向量或字符串标量。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Path="C:\Work")
依赖关系
受保护模型必须位于 MATLAB 路径中。
数据类型: char
| string
自 R2024b 起
其他信息的自定义文本字符串,指定为字符向量或字符串标量。
将受保护模型追溯到设计文件的对应版本的能力对于调试很有用。要在受保护模型中存储文件来源信息,请使用与创建受保护模型相关联的信息(如作业号、Git™ 提交或持续集成系统标记)来指定自定义文本标记。
标记长度不能超出 256 个字符。
要基于环境变量生成标记,请使用 getenv
函数。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Tag=
myTag
)
数据类型: char
| string
功能选项
选择是否生成报告,指定为布尔值。
要查看报告,请执行以下操作之一:
Simulink® 编辑器:在 Model 模块上,右键点击受保护模型徽章图标
。然后,选择显示报告。
MATLAB 命令行窗口:使用
Simulink.ProtectedModel.open
函数。例如,要显示名为sldemo_mdlref_counter
的受保护模型的报告,请输入以下命令。Simulink.ProtectedModel.open("sldemo_mdlref_counter","report");
报告以 HTML 格式生成。它包括有关受保护模型的环境、功能和接口的信息。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Report=true)
依赖关系
要将 Report
设置为 true
,请将 Mode
设置为支持仿真的值。例如,将 Mode
设置为 "Simulation"
(默认值)。
数据类型: logical
包含只读 Web 视图的选项,指定为布尔值。
指定是否共享接收者可以在 Web 浏览器中查看的 Simulink 模型的交互式呈现。此模型的只读 Web 视图包括模型的内容和模块参数。
false
- 不共享您保护的模型的 Web 视图。true
- 共享您保护的模型的 Web 视图。
要打开受保护模型的 Web 视图,请执行以下操作之一:
“文件”面板:双击受保护模型文件 (
.slxp
)。MATLAB 命令行窗口:使用
Simulink.ProtectedModel.open
函数。例如,要显示名为sldemo_mdlref_counter
的受保护模型的 Web 视图,请输入以下命令。Simulink.ProtectedModel.open("sldemo_mdlref_counter","webview");
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Webview=true)
依赖关系
创建模型的只读 Web 视图需要 Simulink Report Generator™ 许可证。
数据类型: logical
模型保护模式,指定为以下值之一:
"Simulation"
(自 R2023b 起) - 引用受保护模型的模型可以在普通、加速或快速加速模式下运行。在 R2023b 之前的版本中: 使用
"Accelerator"
而不是"Simulation"
。"CodeGeneration"
- 引用受保护模型的模型可以在普通、加速、快速加速或外部模式下运行,并且可以支持 C 和 C++ 代码生成。此选项需要 Simulink Coder™ 许可证。"HDLCodeGeneration"
- 引用受保护模型的模型可以在普通、加速或快速加速模式下运行,并且可以支持 HDL 代码生成。此选项需要 HDL Coder™ 许可证。"ViewOnly"
- 受保护模型仅支持只读 Web 视图。受保护模型不支持仿真或代码生成。此选项需要 Simulink Report Generator 许可证。
有关模型层次结构中仿真模式的信息,请参阅为模型层次结构选择仿真模式。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Mode="Simulation")
生成代码的接口,指定为以下值之一:
"Model reference"
- 引用受保护模型的 Model 模块可以支持在加速、软件在环 (SIL) 或处理器在环 (PIL) 模式下的 C 和 C++ 代码生成和仿真。对于 SIL 和 PIL 仿真,软件将生成的代码作为使用引用模型的大型应用程序的一部分进行部署。生成的工件与由slbuild
函数用"ModelReferenceCoderTarget"
编译设定生成的工件匹配。"Top model"
- 引用受保护模型的 Model 模块可以支持加速、软件在环 (SIL) 或处理器在环 (PIL) 模式下的仿真。对于 SIL 和 PIL 仿真,软件将生成的代码作为独立应用程序进行部署。生成的工件与由slbuild
函数用"StandaloneCoderTarget"
编译设定生成的工件匹配。
SIL 和 PIL 仿真可以验证受保护模型代码。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,CodeInterface="Top model")
依赖关系
系统目标文件配置参数必须设置为基于 ERT 的系统目标文件,例如 ert.tlc
。此选项需要 Embedded Coder® 许可证。
选择是否生成 HDL 代码,指定为布尔值。
要使受保护模型支持仿真、C 和 C++ 代码生成以及 HDL 代码生成,请将 Mode
设置为 "CodeGeneration"
,将 hdl
设置为 true
。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Mode="CodeGeneration",hdl=true)
提示
要使受保护模型支持仿真和 HDL 代码生成但不支持 C 或 C++ 代码生成,请将 Mode
设置为 "HDLCodeGeneration"
。您不必将 hdl
设置为 true
。
依赖关系
要生成 HDL 代码,您必须有 HDL Coder 许可证。
仅当您将
Mode
设置为"CodeGeneration"
时,此参量才会影响输出。
数据类型: logical
为受保护模型指定回调的选项,指定为由 Simulink.ProtectedModel.Callback
对象组成的元胞数组。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Callbacks={pmcallback_sim,pmcallback_cg})
数据类型: cell
保护选项
选择是否对生成的代码进行混淆处理,指定为布尔值。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Mode="CodeGeneration",ObfuscateCode=true)
依赖关系
仅当您将 Mode
设置为 "CodeGeneration"
时,才会应用此选项。HDL 代码生成不支持混淆处理。
数据类型: logical
受保护代码可见性,指定为以下值之一:
"CompiledBinaries"
- 仅包括生成代码的已编译二进制文件。二进制文件和头文件可见。"MinimalCode"
- 只包含用所选编译设置编译代码所需的最少头文件。编译文件夹中的代码可见。接收者可以检查受保护模型报告中的代码,并根据自己的目的重新编译它。"AllReferencedHeaders"
- 包括包含路径上的头文件。编译文件夹中的代码可见。代码引用的头文件也可见。
此参量确定为受保护模型生成的代码的哪一部分对用户可见。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Mode="CodeGeneration",OutputFormat="AllReferencedHeaders")
依赖关系
仅当您将 Mode
设置为 "Simulation"
、"Accelerator"
或 "CodeGeneration"
时,此参量才会影响输出。
选择是否对受保护模型进行加密,指定为布尔值。
当您在保护期间指定了密码或使用以下函数时,此选项适用:
用于模型的只读视图的密码:
Simulink.ModelReference.ProtectedModel.setPasswordForView
用于仿真的密码:
Simulink.ModelReference.ProtectedModel.setPasswordForSimulation
用于代码生成的密码:
Simulink.ModelReference.ProtectedModel.setPasswordForCodeGeneration
用于 HDL 代码生成的密码:
Simulink.ModelReference.ProtectedModel.setPasswordForHDLCodeGeneration
(HDL Coder)
要将指定的密码应用于受保护模型,请将 Encrypt
设置为 true
。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Encrypt=true)
数据类型: logical
更改仿真的加密密码的选项,指定为由两个字符向量组成的元胞数组。第一个向量是旧密码。第二个向量是新密码。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Encrypt=true,ChangeSimulationPassword={'old_password','new_password'})
依赖关系
要启用此参量,请将 Encrypt
设置为 true
。
数据类型: cell
更改只读视图的加密密码的选项,指定为由两个字符向量组成的元胞数组。第一个向量是旧密码。第二个向量是新密码。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Encrypt=true,ChangeViewPassword={'old_password','new_password'})
依赖关系
要启用此参量,请将 Encrypt
设置为 true
。
数据类型: cell
更改代码生成的加密密码的选项,指定为由两个字符向量组成的元胞数组。第一个向量是旧密码。第二个向量是新密码。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Encrypt=true,ChangeCodeGenerationPassword={'old_password','new_password'})
依赖关系
要启用此参量,请将 Encrypt
设置为 true
。
数据类型: cell
为受保护模型文件添加后处理函数的选项,指定为函数句柄。
该函数接受 Simulink.ModelReference.ProtectedModel.HookInfo
对象作为输入变量。此对象提供关于受保护模型创建期间生成的源代码文件和其他文件的信息。该对象还提供有关您不能修改的导出符号的信息。在打包受保护模型之前,软件调用后处理函数。
对于具有顶层模型接口的受保护模型,Simulink.ModelReference.ProtectedModel.HookInfo
对象无法提供有关导出符号的信息。
示例: Simulink.ModelReference.modifyProtectedModel(mdl,Mode="CodeGeneration",CustomPostProcessingHook=@(protectedMdlInf)myHook(protectedMdlInf))
依赖关系
要启用此参量,请将 Mode
设置为 "CodeGeneration"
。
输出参量
版本历史记录
在 R2014b 中推出新 Tag
参量允许您使用与受保护模型相关的信息来指定自定义文本。
将受保护模型追溯到设计文件的对应版本的能力对于调试很有用。要在受保护模型中存储文件来源信息,请使用与创建受保护模型相关联的信息(如作业号、Git 提交或持续集成系统标记)来指定自定义文本标记。
当为具有模型参量的受保护模型创建框架模型时,框架模型对 Model 模块使用默认实例参数值。以前,框架模型不一致地应用实例参数值。
当您修改受保护模型时,您可以自动将受保护模型与其依赖项和框架模型一起打包到工程存档中。当接收者提取工程存档的内容并打开框架模型时,他们应该能够对受保护模型进行仿真,而不需要定义缺失的变量或对象。在共享工程存档之前,请检查工程是否包含所需的支持文件,并根据需要更新框架模型。
使用 Project
以将受保护模型、其依赖项及其框架模型保存到工程存档中 (.mlproj
)。有了工程存档,您可以在单个文件中共享工程。
使用 ProjectName
指定自定义工程名称。
有关详细信息,请参阅Package and Share Protected Models。
当您将 Mode
设置为 'CodeGeneration'
时,受保护模型支持外部模式仿真。
默认 Mode
值的名称已从 'Accelerator'
更改为 'Simulation'
。默认值的行为没有更改。
不推荐使用 Mode
值 'Accelerator'
。请改用 'Simulation'
。
'Simulation'
和'Accelerator'
的行为相同。'Simulation'
与“创建受保护模型”对话框中的仿真选项的作用更加一致。'Accelerator'
仅指其中一种受支持的仿真模式。引用支持仿真的受保护模型的模型可以在普通、加速或快速加速模式下运行。
目前没有删除 'Accelerator'
的计划。
在以后的版本中,当您将 Mode
设置为 'Normal'
时,该函数将创建一个受保护模型,该模型在父模型以普通、加速或快速加速模式进行仿真时支持仿真。此更改将使新的受保护模型的仿真支持标准化。在此更改之前创建的受保护模型将不受影响。
目前,当您将 Mode
设置为 'Normal'
时,该函数将创建一个受保护模型,仅当父模型在普通模式下仿真时,该模型才支持仿真。
Mode
参量的默认值为 'Accelerator'
。引用受保护模型的模型可以在普通、加速或快速加速模式下运行。
通过此更改,“创建受保护模型”对话框与 Simulink.ModelReference.protect
函数将使用相同的默认模型保护模式。
以前,Mode
参量的默认值为 'Normal'
。'Normal'
模型保护模式限制受保护模型的使用,使得受保护模型仅在父模型以普通模式进行仿真时才支持仿真。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)