当前位置: 首页 > news >正文

Simulink中Model模块的模型保护功能

在开发工作过程中,用户为想要知道供应商的开发能力,想要供应商的模型进行测试。面对如此要求,为了能够尽快拿到定点项目,供应商会选择一小块算法或是模型以黑盒的形式供客户测试。Simulink的Model模块除了具有模块引用的功能之外,还具有模型保护的功能。今天主要是以一个简单的实例讲解使用Model模块实现模型保护的功能。

1.Model模块

元件名称 Ports&Subsystems   Model
功能:引用另一个模型来创建模型层次结构。
Library:  
Simulink / Ports & Subsystems
HDL Coder / Ports & Subsystems

图片

新建mi_add.slx命名的simulink文件,添加一个Model模块:

图片

建立一个Add5.slx命名的simulink文件,包含了一个Add原子系统,实现了三个数相加的简单算法。

图片

add原子系统内部的内容:

图片

使用Model模块选择引用Add5.slx仿真文件:

图片

此时,实现了在mi_add.slx文件中引用Add5.slx文件的功能,具有三个输入一个输出的仿真。

图片

使用constant常数模块测试功能:

图片

(1)右键选择Model模块,点击Subsystem&Model Reference->Create Protected for Selected Model Block。

图片

(2)接着会弹出一个窗口,用于配置被保护模型的封装程度;

其中可以勾选三种行为,并设置密码:

Open read-only view of model 表示可以查看模型,但是无法修改;Simulate 表示可以仿真;Use generated code 表示可以生成代码;

图片

(3)这里只勾选Simulate,并设置密码为 5205211314,保持默认路径,然后点击Create。

图片

这里我遇到了报错,显示没有找到支持操作的编译器MinGW-w64,这里需要先安装该编译器。可以注册登录一个mathwork的账号就可以下载安装MinGW-w64,下载网址如下:

https://ww2.mathworks.cn/matlabcentral/fileexchange/52848-matlab-support-for-mingw-w64-c-c-fortran-compiler

图片

下载之后获得mingw.mlpkginstall文件,在MATLAB的环境下打开,登录注册的账号开始在附加功能管理器中下载MinGW-w64编译器。

图片

图片

图片

编译 yprime.c 示例

可以通过编译 yprime.c 示例来测试 MinGW编译器,将源文件复制到可写文件夹。

copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),'.','f')

如果在系统中仅安装了 MinGW 编译器,则 mex 命令会自动选择 MinGW。继续下一步。但如果有多个 C 或 C++ 编译器,请使用 mex -setup 选择 MinGW。

mex -setup

编译该 MEX 文件:

mex yprime.c

MATLAB 将显示“编译工具”消息,其中显示用于编译 MEX 文件的编译器,运行函数:

yprime(1,1:4)

图片

图片

安装好编译器之后,再次点击Creat,即可生成成功。

图片

双击,会出现选择一个路径的对话框,会在选择的路径下生成一个.mlproj的工程格式文件。

图片

这里在当前的路径下生成了Add5_protected的文件夹,其中文件具有Add5_harness.slx、Add5_protected.prj和Add5.slxp文件。

图片

图片

双击模型Add5_harness:

图片

运行该模型,需要提供密码才能运行。

图片

图片

可以简单将输入改成了constant常量模块输入,display模块作为输出,可以发现功能算法实现正常。

图片

双击Add5.xlsp模型,无法看到内部具体逻辑,会弹出一个总结及接口报告对话框,并且能够看到该模型被设置的权限。需要密码才能仿真,不能够读取内部逻辑,不能够生成代码,不能进行并发任务支持。

图片

2.自动生成代码

修改模型的配置,使模型能够自动生成嵌入式代码:

图片

图片

图片

尝试在只选择Simulate时,是否能够生成代码,按住Ctrl+B(自动生成代码的快捷键),发现没有权限,不能够生成代码。

图片

保护模型允许仿真、允许读取内部逻辑,允许生成代码:

图片

content type选为Obfuscated source code,就会生成可读性较差的代码。

前提是,上述操作的完成,需要输入密码。允许读取内部逻辑:52052113145允许仿真:5205211314允许生成代码:52052113146

在这里遇到了错误,需求删除之前生成的文件。

图片

图片

图片

点击Add5_harness.slx,输入上述密码:

图片

双击可以进入受保护的引用仿真文件:

图片

图片

按Ctrl+B,自动生成嵌入式代码快捷键,会在当前的文件夹下生成如下所示的文件:

图片

图片

可以看出,生成的代码更加混乱,可读性非常差。这样,也就从代码的层面上保护了算法。

如果将content type选择成Readable source code,就会生成可读性较好的代码,生成的代码会比较规范的,包含了许多注释,以及合理的变量名和缩进。

图片

图片

http://www.lryc.cn/news/490420.html

相关文章:

  • Linux常用工具的使用(2):文本编辑器的使用
  • 【StarRocks】starrocks 3.2.12 【share-nothing】 多Be集群容器化部署
  • 联想ThinkServer服务器主要硬件驱动下载
  • Ansys Zemax Optical Studio 中的近视眼及矫正
  • 三次握手后的数据传输
  • 企业OA管理系统:Spring Boot技术实现与案例研究
  • (免费送源码)计算机毕业设计原创定制:Java+JSP+HTML+JQUERY+AJAX+MySQL springboot计算机类专业考研学习网站管理系统
  • Go语言工程测试的基本规则和流程
  • 阿里云cdn配置记录和nodejs手动安装
  • PTC在电池中的作用
  • 嵌入式C语言面试题 - 2024/11/18
  • 理解原子变量之四:可见性、memory_order_acquire与 memory_order_release
  • requests的session
  • MySQL面试题补
  • Windows系统编程 - 进程遍历
  • 从零开始创建一个 Vue3+Vite+TS+Eslint项目
  • Python操作neo4j库py2neo使用(一)
  • Oracle - 多区间按权重取值逻辑 ,分时区-多层级-取配置方案(二)
  • leetcode刷题记录(四十二)——101. 对称二叉树
  • AutoDL安装docker问题
  • C++头文件大全(要是还有请帮忙)
  • 深度学习实战人脸识别
  • oracle排查长时间没提交的事务造成的阻塞案例
  • React第七节 组件三大属性之 refs 的用法注意事项
  • 工程企业需要什么样的物资管理系统?为什么需要物资管理系统?
  • 基于网页的大语言模型聊天机器人
  • 深入理解索引(一)
  • 动态规划子数组系列一>最长湍流子数组
  • MATLAB矩阵元素的修改及删除
  • 对 TypeScript 中函数如何更好的理解及使用?与 JavaScript 函数有哪些区别?