Simulink.ModelReference.modifyProtectedModel
修改现有受保护模型
语法
说明
Simulink.ModelReference.modifyProtectedModel(
修改从指定的 model
)model
创建的现有受保护模型的选项。如果未指定 Name,Value
对组参量,则修改后的受保护模型将更新为默认值,并且仅支持仿真。
Simulink.ModelReference.modifyProtectedModel(
使用由一个或多个 model
,Name,Value
)Name,Value
对组参量指定的其他选项。这些选项与 Simulink.ModelReference.protect
函数提供的选项相同。不过,这些选项还带有附加选项,可用于更改只读视图、仿真和代码生成的加密密码。当您向受保护模型添加功能或更改加密密码时,非受保护模型必须可用。软件会在 MATLAB® 路径中搜索模型。如果找不到模型,软件会报告错误。
[
为受保护模型创建框架模型。它在 harnessHandle
] = Simulink.ModelReference.modifyProtectedModel(model
,'Harness
',true)harnessHandle
中返回框架模型的句柄。
[~ ,
返回一个元胞数组,其中包含受保护模型所使用的基础工作区变量的名称。neededVars
] = Simulink.ModelReference.modifyProtectedModel(model
)
示例
用默认值更新受保护模型
创建一个支持代码生成的可修改的受保护模型,然后将其重置为默认值。
添加修改受保护模型时的密码。如果跳过此步骤,则当创建可修改的受保护模型时,系统会提示您设置密码。
openExample('sldemo_mdlref_counter'); Simulink.ModelReference.ProtectedModel.setPasswordForModify(... 'sldemo_mdlref_counter','password');
创建一个支持代码生成和 Web 视图的可修改的受保护模型。
Simulink.ModelReference.protect('sldemo_mdlref_counter','Mode',... 'CodeGeneration','Modifiable',true,'Report',true);
提供修改受保护模型的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... 'sldemo_mdlref_counter','password');
修改模型以使用默认值。
Simulink.ModelReference.modifyProtectedModel(... 'sldemo_mdlref_counter');
生成的受保护模型会更新为默认值,并且仅支持仿真。
从受保护模型中删除功能
创建一个支持代码生成和 Web 视图的可修改的受保护模型,然后修改它,删除 Web 视图支持。
添加修改受保护模型时的密码。如果跳过此步骤,则当创建可修改的受保护模型时,系统会提示您设置密码。
openExample('sldemo_mdlref_counter'); Simulink.ModelReference.ProtectedModel.setPasswordForModify(... 'sldemo_mdlref_counter','password');
创建一个支持代码生成和 Web 视图的可修改的受保护模型。
Simulink.ModelReference.protect('sldemo_mdlref_counter','Mode',... 'CodeGeneration','Webview',true,'Modifiable',true,'Report',true);
提供修改受保护模型的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... 'sldemo_mdlref_counter','password');
从您创建的受保护模型中删除对 Web 视图的支持。
Simulink.ModelReference.modifyProtectedModel(... 'sldemo_mdlref_counter', 'Mode', 'CodeGeneration','Report',true);
更改代码生成的加密密码
更改可修改的受保护模型的加密密码。
添加修改受保护模型时的密码。如果跳过此步骤,则当创建可修改的受保护模型时,系统会提示您设置密码。
openExample('sldemo_mdlref_counter'); Simulink.ModelReference.ProtectedModel.setPasswordForModify(... 'sldemo_mdlref_counter','password');
添加受保护模型用户在生成代码时必须提供的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForSimulation(... 'sldemo_mdlref_counter','cgpassword');
创建一个可修改的受保护模型,该模型包含报告并支持采用加密的代码生成。
Simulink.ModelReference.protect('sldemo_mdlref_counter','Mode',... 'CodeGeneration','Encrypt',true,'Modifiable',true,'Report',true);
提供修改受保护模型的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... 'sldemo_mdlref_counter','password');
更改仿真的加密密码。
Simulink.ModelReference.modifyProtectedModel(... 'sldemo_mdlref_counter','Mode','CodeGeneration','Encrypt',true,... 'Report',true,'ChangeSimulationPassword',... {'cgpassword','new_password'});
为受保护模型添加框架模型
为现有受保护模型添加框架模型。
添加修改受保护模型时的密码。如果跳过此步骤,则当创建可修改的受保护模型时,系统会提示您设置密码。
openExample('sldemo_mdlref_counter'); Simulink.ModelReference.ProtectedModel.setPasswordForModify(... 'sldemo_mdlref_counter','password');
创建一个可修改的受保护模型,该模型包含报告并支持采用加密的代码生成。
Simulink.ModelReference.protect('sldemo_mdlref_counter','Mode',... 'CodeGeneration','Modifiable',true,'Report',true);
提供修改受保护模型的密码。
Simulink.ModelReference.ProtectedModel.setPasswordForModify(... 'sldemo_mdlref_counter','password');
为受保护模型添加框架模型。
[harnessHandle] = Simulink.ModelReference.modifyProtectedModel(... 'sldemo_mdlref_counter','Mode','CodeGeneration','Report',true,... 'Harness',true);
输入参数
model
— 模型名称
字符向量 | 字符串标量
模型名称,指定为字符串或字符向量。它包含模型的名称或引用受保护模型的 Model 模块的路径名称。
数据类型: char
| string
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: 'Mode','CodeGeneration','OutputFormat','Binaries','ObfuscateCode',true
指定为受保护模型生成经过混淆处理的代码。它还指定只有生成代码中的二进制文件和头文件对受保护模型的用户可见。
Project
— 用于收集工程中依存关系的选项
false
(默认) | true
自 R2023b 起
用于收集工程中依存关系的选项,指定为 true
或 false
。
指定是否将支持文件(包括框架模型)与受保护模型一起打包到工程存档中。支持文件的类型和数量取决于受保护模型。支持文件的示例是具有基础工作区定义的 MAT 文件和删减成相关定义的数据字典。支持文件不受保护。
true
- 创建一个工程存档 (.mlproj
),其中包含受保护模型、其依存关系及其框架模型。支持文件不受保护。工程存档是一个单独的文件,可方便地进行共享。要创建交互式工程,请打开工程存档。false
- 仅创建受保护模型。如果该受保护模型有依存关系,您必须单独共享它们。同样,如果为受保护模型创建框架模型,则必须单独共享该框架模型。
示例: 'Project',true
提示
在共享工程之前,请检查工程是否包含必需的支持文件。如果缺失支持文件,对相关的框架模型进行仿真或生成代码有助于识别这些文件。将缺失的依存关系添加到工程中,并根据需要更新框架模型。有关详细信息,请参阅管理工程文件。
依存关系
要将 Project
设置为 true
,请将 Mode
设置为支持仿真的值。例如,将 Mode
设置为 'Simulation'
(默认值)。
数据类型: logical
ProjectName
— 自定义工程名称
字符向量 | 字符串标量
自 R2023b 起
自定义工程名称,指定为字符向量或字符串标量。
指定包含生成文件的工程存档的名称。存档中的工程使用相同的名称。
如果不指定自定义工程名称,则工程的默认名称为受保护模型名称后跟 _protected
。
示例: 'ProjectName','myname'
依存关系
要启用 ProjectName
,请将 Project
设置为 true
。
数据类型: char
| string
Harness
— 用于创建框架模型的选项
false
(默认) | true
选择是否创建框架模型,指定为布尔值。
指定是否为受保护模型创建框架模型的位置。框架模型为受保护模型提供隔离的环境,该模型由 Model 模块引用。
true
- 为受保护模型创建框架模型。false
- 不为受保护模型创建框架模型。
当您为依赖基础工作区定义的受保护模型创建框架模型时,Simulink® 会创建一个包含基础工作区定义的 MAT 文件。
框架模型必须能够访问支持文件,例如具有基础工作区定义的 MAT 文件或数据字典。
示例: 'Harness',true
依存关系
数据类型: logical
Path
— 受保护模型的文件夹
当前工作文件夹 (默认) | 字符向量 | 字符串标量
受保护模型的文件夹,指定为字符向量或字符串标量。
示例: 'Path','C:\Work'
依存关系
受保护模型必须位于 MATLAB 路径中。
数据类型: char
| string
Report
— 选择是否生成报告
false
(默认) | true
选择是否生成报告,指定为布尔值。
要查看报告,请执行以下操作之一:
Simulink 编辑器:在 Model 模块上,右键点击受保护模型徽章图标 。然后,选择显示报告。
MATLAB 命令行窗口:使用
Simulink.ProtectedModel.open
函数。例如,要显示名为sldemo_mdlref_counter
的受保护模型的报告,请输入以下命令。Simulink.ProtectedModel.open('sldemo_mdlref_counter','report');
报告以 HTML 格式生成。它包括有关受保护模型的环境、功能和接口的信息。
示例: 'Report',true
依存关系
要将 Report
设置为 true
,请将 Mode
设置为支持仿真的值。例如,将 Mode
设置为 'Simulation'
(默认值)。
数据类型: logical
Webview
— 包含只读 Web 视图的选项
false
(默认) | true
包含只读 Web 视图的选项,指定为布尔值。
指定是否共享接收者可以在 Web 浏览器中查看的 Simulink 模型的交互式呈现。此模型的只读 Web 视图包括模型的内容和模块参数。
true
- 共享您保护的模型的 Web 视图。false
- 不共享您保护的模型的 Web 视图。
要打开受保护模型的 Web 视图,请执行以下操作之一:
当前文件夹浏览器:双击受保护模型文件 (
.slxp
)。MATLAB 命令行窗口:使用
Simulink.ProtectedModel.open
函数。例如,要显示名为sldemo_mdlref_counter
的受保护模型的 Web 视图,请输入以下命令。Simulink.ProtectedModel.open('sldemo_mdlref_counter','webview');
示例: 'Webview',true
依存关系
创建模型的只读 Web 视图需要 Simulink Report Generator™ 许可证。
数据类型: logical
Mode
— 模型保护模式
'Simulation'
(默认) | 'CodeGeneration'
| 'HDLCodeGeneration'
| 'ViewOnly'
模型保护模式,指定为以下值之一:
'Simulation'
(自 R2023b 起):引用受保护模型的模型可以在普通、加速或快速加速模式下运行。在 R2023b 之前: 使用
'Accelerator'
而不是'Simulation'
。'CodeGeneration'
:引用受保护模型的模型可以在普通、加速、快速加速或外部模式下运行,并且可以支持 C 和 C++ 代码生成。此选项需要 Simulink Coder™ 许可证。'HDLCodeGeneration'
:引用受保护模型的模型可以在普通、加速或快速加速模式下运行,并且可以支持 HDL 代码生成。此选项需要 HDL Coder™ 许可证。'ViewOnly'
:受保护模型仅支持只读 Web 视图。受保护模型不支持仿真或代码生成。此选项需要 Simulink Report Generator 许可证。
有关模型层次结构中仿真模式的信息,请参阅为模型层次结构选择仿真模式。
示例: 'Mode','Simulation'
CodeInterface
— 生成代码的接口
'Model reference'
(默认) | 'Top model'
生成代码的接口,指定为以下值之一:
模型引用 - 编译模型引用 Simulink Coder 目标。代码是作为模型层次结构的一部分从引用模型生成的。代码生成使用以下命令。
slbuild('model','ModelReferenceCoderTarget')
顶层模型 - 使用当前模型配置设置,为指定的模型编译独立的 Simulink Coder 二进制可执行文件。此接口还为引用模型编译模型引用代码生成器目标。代码是使用独立的代码接口从顶层模型生成的。代码生成使用以下命令。
slbuild('model','StandaloneCoderTarget')
您指定的值确定软件在环 (SIL) 和处理器在环 (PIL) 仿真如何为受保护模型部署生成的代码。
模型引用 - 软件将生成的代码作为使用引用模型的大型应用程序的一部分进行部署。
顶层模型 - 软件将生成的代码作为独立应用程序进行部署。
SIL/PIL 仿真可以验证受保护模型代码。
要支持为引用受保护模型的模型生成代码,请指定模型引用。
不管代码接口如何,您都可以在加速模式下对受保护模型进行仿真。
示例: 'CodeInterface','Top model'
依存关系
系统目标文件配置参数必须设置为基于 ERT 的系统目标文件,例如 ert.tlc
。此选项需要 Embedded Coder® 许可证。
hdl
— 选择是否生成 HDL 代码
false
(默认) | true
选择是否生成 HDL 代码,指定为布尔值。
要使受保护模型支持仿真、C 和 C++ 代码生成以及 HDL 代码生成,请将 Mode
设置为 'CodeGeneration'
,将 hdl
设置为 true
。
示例: 'hdl',true
提示
要使受保护模型支持仿真和 HDL 代码生成但不支持 C 或 C++ 代码生成,请将 Mode
设置为 'HDLCodeGeneration'
。您不必将 hdl
设置为 true
。
依存关系
要生成 HDL 代码,您必须有 HDL Coder 许可证。
仅当您将
Mode
设置为'CodeGeneration'
时,此参量才会影响输出。
数据类型: logical
Callbacks
— 为受保护模型指定回调的选项
{}
(默认) | 元胞数组
为受保护模型指定回调的选项,指定为由 Simulink.ProtectedModel.Callback
对象组成的元胞数组。
示例: 'Callbacks',{pmcallback_sim, pmcallback_cg}
数据类型: cell
ObfuscateCode
— 选择是否对生成的代码进行混淆处理
true
(默认) | false
选择是否对生成的代码进行混淆处理,指定为布尔值。
示例: 'ObfuscateCode',true
依存关系
仅当您将 Mode
设置为 'CodeGeneration'
时,才会应用此选项。HDL 代码生成不支持混淆处理。
数据类型: logical
OutputFormat
— 受保护代码可见性
'CompiledBinaries'
(默认) | 'MinimalCode'
| 'AllReferencedHeaders'
受保护代码可见性,指定为以下值之一:
'CompiledBinaries'
- 仅包括生成代码的已编译二进制文件。二进制文件和头文件可见。'MinimalCode'
- 只包含用所选编译设置编译代码所需的最少头文件。编译文件夹中的代码可见。接收者可以检查受保护模型报告中的代码,并根据自己的目的重新编译它。'AllReferencedHeaders'
- 包括包含路径上的头文件。编译文件夹中的代码可见。代码引用的头文件也可见。
此参量确定为受保护模型生成的代码的哪一部分对用户可见。
示例: 'OutputFormat','AllReferencedHeaders'
依存关系
仅当您将 Mode
设置为 'Simulation'
、'Accelerator'
或 'CodeGeneration'
时,此参量才会影响输出。
Encrypt
— 选择是否对受保护模型进行加密
false
(默认) | true
选择是否对受保护模型进行加密,指定为布尔值。当您在保护期间指定了密码或使用以下函数时,此选项适用:
用于模型的只读视图的密码:
Simulink.ModelReference.ProtectedModel.setPasswordForView
用于仿真的密码:
Simulink.ModelReference.ProtectedModel.setPasswordForSimulation
用于代码生成的密码:
Simulink.ModelReference.ProtectedModel.setPasswordForCodeGeneration
用于 HDL 代码生成的密码:
Simulink.ModelReference.ProtectedModel.setPasswordForHDLCodeGeneration
(HDL Coder)
示例: 'Encrypt',true
数据类型: logical
ChangeSimulationPassword
— 更改仿真的加密密码的选项
由两个字符向量组成的元胞数组
更改仿真的加密密码的选项,指定为由两个字符向量组成的元胞数组。第一个向量是旧密码。第二个向量是新密码。
示例: 'ChangeSimulationPassword',{'old_password','new_password'}
数据类型: cell
ChangeViewPassword
— 更改只读视图的加密密码的选项
由两个字符向量组成的元胞数组
更改只读视图的加密密码的选项,指定为由两个字符向量组成的元胞数组。第一个向量是旧密码。第二个向量是新密码。
示例: 'ChangeViewPassword',{'old_password','new_password'}
数据类型: cell
ChangeCodeGenerationPassword
— 选择是否更改代码生成的加密密码
由两个字符向量组成的元胞数组
更改代码生成的加密密码的选项,指定为由两个字符向量组成的元胞数组。第一个向量是旧密码。第二个向量是新密码。
示例: 'ChangeCodeGenerationPassword',{'old_password','new_password'}
数据类型: cell
CustomPostProcessingHook
— 为受保护模型文件添加后处理函数的选项
函数句柄
为受保护模型文件添加后处理函数的选项,指定为函数句柄。
该函数接受 Simulink.ModelReference.ProtectedModel.HookInfo
对象作为输入变量。此对象提供关于受保护模型创建期间生成的源代码文件和其他文件的信息。该对象还提供有关您不能修改的导出符号的信息。在打包受保护模型之前,系统会调用后处理函数。
对于具有顶层模型接口的受保护模型,Simulink.ModelReference.ProtectedModel.HookInfo
对象无法提供有关导出符号的信息。
示例: 'CustomPostProcessingHook',@(protectedMdlInf)myHook(protectedMdlInf)
输出参量
版本历史记录
在 R2014b 中推出R2023b: 收集工程中的受保护模型依存关系
当您修改受保护模型时,您可以自动将它与其依赖项和框架模型一起打包到工程存档中。当接收者提取工程存档的内容并打开框架模型时,他们应该能够对受保护模型进行仿真,而不需要定义缺失的变量或对象。在共享工程存档之前,请检查工程是否包含所需的支持文件,并根据需要更新框架模型。
使用 Project
以将受保护模型、其依赖项及其框架模型保存到工程存档中 (.mlproj
)。有了工程存档,您可以在单个文件中共享工程。
使用 ProjectName
指定自定义工程名称。
有关详细信息,请参阅Package and Share Protected Models。
R2023b: Mode
设置为 'CodeGeneration'
时支持外部模式
当您将 Mode
设置为 'CodeGeneration'
时,受保护模型支持外部模式仿真。
R2023b: 默认 Mode
值为 'Simulation'
默认 Mode
值的名称已从 'Accelerator'
更改为 'Simulation'
。默认值的行为没有更改。
R2023b: 不推荐使用 'Accelerator'
不推荐使用 Mode
值 'Accelerator'
。请改用 'Simulation'
。
'Simulation'
和'Accelerator'
的行为相同。'Simulation'
与“创建受保护模型”对话框中的仿真选项的作用更加一致。'Accelerator'
仅指其中一种受支持的仿真模式。引用支持仿真的受保护模型的模型可以在普通、加速或快速加速模式下运行。
目前没有删除 'Accelerator'
的计划。
R2023a: Mode
不支持普通模式限制
在以后的版本中,当您将 Mode
设置为 'Normal'
时,该函数将创建一个受保护模型,该模型在父模型以普通、加速或快速加速模式进行仿真时支持仿真。此更改将使新的受保护模型的仿真支持标准化。在此更改之前创建的受保护模型将不受影响。
目前,当您将 Mode
设置为 'Normal'
时,该函数将创建一个受保护模型,仅当父模型在普通模式下仿真时,该模型才支持仿真。
R2023a: 默认 Mode
值为 'Accelerator'
Mode
参量的默认值为 'Accelerator'
。引用受保护模型的模型可以在普通、加速或快速加速模式下运行。
通过此更改,“创建受保护模型”对话框与 Simulink.ModelReference.protect
函数将使用相同的默认模型保护模式。
以前,Mode
参量的默认值为 'Normal'
。'Normal'
模型保护模式限制受保护模型的使用,使得受保护模型仅在父模型以普通模式进行仿真时才支持仿真。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)