01--模型保护的应用
在开发工作过程中,常常在涉及到与客户的沟通过程中,客户为了想要知道供应商的开发能力,想要供应商的模型进行测试。面对如此要求,为了能够尽快拿到定点项目,供应商会选择一小块算法或是模型以黑盒的形式供客户测试。在此背景下,博主以自己的经验将以几种保护模型的方式进行叙述,和各位小伙伴共同学习。
02--模型保护功能之Protected Model
PS:博主使用的MATLAB为2020b,低版本的不一定有该功能。
在应用该功能之前,请确保自己的MATLAB已经关联的编译器MinGW-w64,不然再进行功能实现时会报如下错误:
①编译器MinGW-w64 安装
(1)附加功能内至官网下载
如果你的MATLAB购买了附加功能,可以直接去官网下载编译器
步骤如下:
点击附加功能,获取附加功能
在搜索框内,输入:MinGW-w64
然后进行下载安装就可以了
(2)离线下载
如果很不幸,你的MATLAB没有该功能,或者其他原(Dao)因(Ban),那么可以选择下面连接的方式进行下载:
http://MinGW-w64 - for 32 and 64 bit Windows download | SourceForge.net
按如下方式:
保存文件至本地路径
下好之后直接解压即可,
②环境变量配置
这一步的目的,就是在启动MATLAB之后,能够自动识别你已经下载的编译器了
右击我的电脑,选择属性
点击高级系统设置。
点击环境变量
新建变量
变量名填:MW_MINGW64_LOC
变量值:填你解压缩编译器的路径
配置完成后,重启下MATLAB,在命令框内输入如下命令:
setenv('MW_MINGW64_LOC','D:\Program Files\mingw64')
再输入:
mex -setup
当出现下图提示,则代表编译器与MATLAB关联成功!
选择 mex -setup C++
③Protected Model
我们以一个小的子系统为例:
模型设置如下:
模型如下图:
Run一下,没有任何报错
子系统外部:
子系统内部:
(1)保护模型只允许仿真
点击保存,下拉选项选择,Protected Model
在出来的对话框中,只勾选了仿真,并设定密码123456789
路径我这里选择当前路径,Create
会在选择的路径下生成一个.mlproj的工程格式文件
在MATLAB中去打开该工程文件
弹出对话框,就选择当前文件夹即可
双击:模型Test1_harness
运行该模型,需要提供密码才能运行
输入刚刚设置的123456789,可以正常运行。
双击模型,无法看到内部具体逻辑,会弹出一个总结及接口报告对话框,并且能够看到该模型被设置的权限。需要密码才能仿真,不能够读取内部逻辑,不能够生成代码,不能进行并发任务支持
来手动给一些测试点(用常数注意数据类型),验证下功能逻辑是否正常。
0 = 真实SOC与显示SOC偏差大于15%
1 = 真实SOC与显示SOC偏差小于等于15%
2 = 真实SOC与显示SOC偏差小于等于10%
3 = 时间大于10小时Invalid
能够看到,功能逻辑都是正常的。
接下来,试试,是否能够生成代码。
Ctrl+B
发现没有权限,不能够生成代码。
(2)保护模型允许仿真、允许读取内部逻辑,允许生成代码
前提是,上述操作的完成,需要输入密码。
允许读取内部逻辑:987654321
允许仿真:123456789
允许生成代码:456123789
所生成的.slxp文件是不可逆的(一般意义上),输入密码所看到的model view也只是类似图片的模型在web中的预览,并不是说获得该密码就能溯源回原model。这也是为什么系统会直接生成同名.slx文件备份。一般.slxp文件也会比源文件大很多。
看看能否生成代码
能够生成代码,但是可读性一言难尽
03--模型保护功能之FMU
使用的2020b,低版本的可能没有该功能,需要借助第三方插件实现。
保存到该路劲下:
发现,如果要把模型导出为FMU格式,输入,输出接口及内部的参数变量必须是一下三种数据类型:int32,double,boolean,不然会报如下错误:
将数据类型进行转化下,再保存
完成后,会生成一个fmu格式文件和一个只有接口的slx文件
有了该文件,可以和第三方一起进行联合调试
双击点开,没有相关信息显示
扫个点,发现功能逻辑正常
如果使用生成的slx去生成代码是可行的。
04--模型保护功能之s-function
该功能在之前博文已经写过笔记,见如下链接
https://blog.csdn.net/BlueBachke/article/details/130730034?spm=1001.2014.3001.5502