首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Simulink代码生成: Model Reference及其代码

  • 23-09-22 01:02
  • 4038
  • 12761
blog.csdn.net

本文研究Simulink中的Model Reference配置过程,以及生成的代码。

文章目录

  • 1 问题引入
  • 2 Model Reference建模示例
    • 2.1 模型搭建过程
    • 2.2 转换封装模型
  • 3 Model Reference生成代码
    • 3.1 生成可读的代码
    • 3.3 生成不可读的代码
  • 4 总结

1 问题引入

在团队合作开发或者几个公司合作开发的时候,可能会在算法上做一些保密工作,不让对方看到自己模型的内容。但是,又需要把模型交给对方,以便对方用完整地模型进行仿真或者生成代码。

想要实现这个功能,可以使用Simulink的一种特殊的子系统Model Reference,或称为模型引用。通过模型引用,就可以将模型封装起来,然后由其他模型引用它,从而完成了保密。被引用的加密模型也可以进行仿真或者生成代码。

2 Model Reference建模示例

本章用一个简单的例子演示Model Reference建模的方法。

2.1 模型搭建过程

1)首先新建一个模型 demo_1.slx ,搭建如下的模型内容;
在这里插入图片描述
2)将 demo_1.slx 配置好离散求解器和Embedded Coder(可以参照博主以前的博客),保存并关闭;

3)再新建一个模型 demo.slx ,拖出一个 Model Reference 模块;
在这里插入图片描述
4)双击该模块,将其中的Model Name选为刚刚创建的 demo_1.slx;
在这里插入图片描述
然后模块就会由之前的红色边框转为黑色边框,并且标识出 demo_1 的被引用的模型。

5)这时给这个模块加上输入和输出,就能够正常的仿真;
在这里插入图片描述

2.2 转换封装模型

2.1 章节的 Model Reference 还没有进行封装,通过双击模块还是能够进入 demo_1.slx 中的。本章在上一章的基础上,对其进行封装。

1)右键这个模块,选择Create Protected Model for Selected Model Block;
在这里插入图片描述
2)接着会弹出一个窗口,用于配置被保护模型的封装程度;
在这里插入图片描述
其中可以勾选三种行为,并设置密码:

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

3)这里我们只勾选Simulate,并设置密码为 123456,保持默认路径,然后点击Create;
在这里插入图片描述
4)等待一段时间后,在当前路径下会出现demo_1.slxp文件,这就是封装后的文件;
在这里插入图片描述
5)双击该模块,会提示输入密码,然后会弹出一个模型报告,而不是直接打开模型;
在这里插入图片描述
这是因为我们已经将其设置为只能用于仿真的加密模型,所以看不到其中的算法模块。

6)这个slxp文件不能直接用于仿真,而是要回到demo.slx中,把被引用的模型改成demo_1.slxp;
在这里插入图片描述
点击OK后,Model Reference模块的样式也会改变,左下角多出一个保护标志。

7)在demo.slx中就可以仿真改模型;

3 Model Reference生成代码

在2.2章节最后,如果Ctrl + B尝试生成代码,就会报错;
在这里插入图片描述
提示说被保护的模型不能用于生成代码,这时因为没有勾选生成代码,本章节尝试生成代码。

3.1 生成可读的代码

1)重新将 demo_1.slx 封装,但是这次勾选 Use generated code ,并将content type选择成Readable source code;
在这里插入图片描述
2)重新引用slxp文件,并且Ctrl + B生成代码;在生成的代码中,会为 demo.slx 生成一个demo_step()函数,其中引用了 demo_1() 函数。
在这里插入图片描述
另外,为demo_1单独生成了一组文件,其中包含了demo_1()函数的定义和声明,函数的输入输出都是以传参的形式体现的,对应了模型中的输入和输出端口;
在这里插入图片描述
生成的代码还是比较规范的,包含了许多注释,以及合理的变量名和缩进。

3.3 生成不可读的代码

1)如果将content type选为Obfuscated source code,就会生成不一样的代码
在这里插入图片描述
2)重新封装、引用模型,生成代码如下:
在这里插入图片描述
可以看出,生成的代码更加混乱,可读性非常差。这样,也就从代码的层面上保护了算法。

4 总结

Model Reference模块在算法保护方面有很大的价值,比较适合多方团队的合作开发。

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/114594510"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top