模型保护(Protected Models for Model Reference)

1.将子系统转换为模型的引用:

(1)将待转换的部分使用CTRL + G合成子系统,并为该子系统命名保存。

(2)使用如下的matlab语句进行子系统向模型引用转换

     Simulink.SubSystem.convertToModelReference(...

     'simulink文件名称/要保护的子系统名称', ...

     '新模型引用名称,与之前的子系统名称不同', ...

     'AutoFix',true,...

     'ReplaceSubsystem',true,...

     'CheckSimulationResults',true);

(3)将转换后的模型引用进行保存。

2.模型保护:

(1)对上述保存的模型引用右键,选择Subsystem&Model Reference->Create Protected Model for Selected Model Block.

(2)出现对话框,勾选simulink与use generated code,并填写密码(每一行填写相同的密码,该密码至少为4位)。

(3)存储地址与create hardness model for protected model,可以选择性勾选。

(4)点击create,构建受保护模型。

(5)文件夹中出现的后缀为.slxp的即为创建的受保护模型。

3.使用受保护的模型

(1)对模型左下角的盾牌符号右键,选择Authorize,输入Simulation与Code Generation的密码,点击OK,即可对该模型进行仿真与代码生成。

(2)授权的时间为本次matlab软件使用时间。

 

上述方法针对于2016b等高版本,该方法在2012b等低版本上会出现不适配的情况,所以做新的方法说明:

1.子系统转换为模型引用

(1)右键子系统->Block Parameters->勾选 Treat as atomic unit -> Sample time = -1->Apply.

(2)右键子系统->Subsystem & Model Reference->Convert Subsystem to -> Referenced Model(如果出现提示,选择continue conversion)。

(3)模型引用生成,保存新的simulink模型引用。

2.模型引用转换为受保护的模型

(1)右键模型引用-> Subsystem & Model Reference->Create Protected Model for Selected Model Block.

(2)出现对话框,如果需要将模型转换为代码,则勾选Include generated code(Create harness model for protecred model按需勾选)。

(3)点击create,完成创建。

3.受保护模型的使用

(1)点击受保护模型,出现模型说明文档,点击代码生成(勾选include generated code),则直接生成代码,无需填写密码。

 

1.如果在模型保护过程中出现“cannot be used with a variable-step solver”问题,请将原模型引用的解算器更改为离散定步长。

2.受保护模型中不能出现另一个受保护模型。

 

关于Protected Models for Model Reference

1.加密方法采用AES-265

2.要定位受保护的模型,需要查找

(1)MATLAB文件夹浏览器中带有徽章图标的文件

(2)在左下角带有徽章图标的Model模块

(3)扩展名为.slxp的文件

(p.s.受保护的模型不会出现在Model Explorer的模型层次结构中)

3.引用受保护的模型

(1)检查受保护模型是否支持所需的功能(受保护模型报告将显示所支持的功能)

(2)检查自己的simulink版本是否支持该受保护模型

目的 跨版本支持
只读视图 在R2018b或更高版本中保护的模型可以在其原始版本和更高版本中使用
Normal模式下的方针 在R2018b或更高版本中保护的模型可以在其原始版本和更高版本中使用
Accelerator模式下的仿真 不支持跨版本
SIL或PIL模式下的仿真 不支持跨版本
Rapid Accelerator模式下的仿真 不支持跨版本
代码生成 不支持跨版本

(3)确认可以访问在受保护模型中使用的许可证。如果可用,受保护模型报告会显示所需的许可证。

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

(5)如果接收了一个受保护的模型包,请按照随附的说明解包文件。

(6)确保受保护模型位于 MATLAB 路径上。

(7)如果接收了一个框架模型,请将框架模型中的 Model 模块复制到您的模型中。否则,请在 Model 模块中引用受保护模型。

(8)当设置 Model 模块以引用受保护模型时,模块的 Simulation mode 变为 Accelerator。不能更改此模式或在外部模式下使用此 Model 模块。

 

在对保护模型进行代码生成时,需要对受保护模型的基础模型进行环境设置,如果需要在autobox上运行,需要按照autobox的环境配置进行设置,

如果需要在其他的处理器上运行,则需要按照该处理器对模型环境的要求进行修改。

环境变量设置(autobox):

1.fundamental sample time,需要与调用模型的仿真周期设置一致。

2.Singal Logging:一般设置为最终的输出值

3.Inline Prameter:针对2012版matlab,不进行选择

4.其余的设置按照dspace的要求进行

 

==============================================================================================================

Error解释:

1.Input port 1 of the specified subsystem block has constant sample time. Cannot convert subsystems with constant inputs to model reference.

  该Error的解决方式是断开所有的输入,再次进行引用操作

2.The model 'xxxxx' cannot be protected because it or a model that it directly or indirectly references contains a non-inlined S-Function.

  该Error出现在保护模型过程中,目前定位问题为模型中大量使用了属性为Global的goto/from标签

posted @ 2020-01-10 14:40  Frances_FKYM  阅读(2189)  评论(0编辑  收藏  举报