我原来写了一些很漂亮的 C 函数,写得非常不错,想把它集成到 Simulink 环境中来,怎么办?
点击末尾的 “阅读原文” 下载本文的案例模型
集成外部C代码到Simulink模型
要得到:
把自己编写的 C 函数集成到 Simulink 模型中
怎么做:
Simulink 提供了多种方法来集成外部的 C 代码。从简单到复杂来看,可以:
使用 Stateflow;
使用 Legacy Code Tool 构造 S-fcn 模块;
自己写 S-fcn
只介绍简单的方法
1.假设已有代码 table1D.c 以及 table1D.h
table1D 是个简单的 1 维查表函数。这是它的函数原型。第1、2个输入是表格数据,第 3 个输入是表格长度数据,第 4 个输入就是要查找的 x,查到的结果作为返回值。
2. 函数调用
我现在希望在 Simulink 环境下使用这个查表函数。当前的应用场景是:在给定表格的情况下,通过输入 u 查出相应的 y 出来。
在Stateflow中,参照 .h 文件里定义的函数原型直接调用这个函数:
然后如下图说明一下各个变量:u 是这个 Chart 模块的输入,y 是 Chart 的输出, uMap,yMap,n 是固定的表格参数。
在MATLAB Function模块中,需要使用到coder.ceval调用这段代码,引用传递使用 coder.rref:
跟 Stateflow 类似,在 MATLAB Function 中也需要对 m 脚本里用到的各个变量名做一个说明。
3. 在Workspace 里定义数据对象
再来看 Simulink 模型,它现在有 4 个信号:
我希望控制这 4 个信号的名字以及定义方式,所以新建这 4 个信号对应的数据对象。另外,也给之前的 3 个参数定义对应的数据对象。
4.并把该模型生成代码
Ctrl + B,得到如下所示,两句函数调用的语句:
另外,为了保证模型的正确编译链接,生成代码之前还需要在源文件中 include 手写的 .h 文件。如图,要在模型.h 文件中增加这一行 include 的代码。
那这一行 include 是怎么加进去的呢?如下页面得到:
总结
使用 Stateflow 以及 MATLAB Function 模块可以很方便的集成外部的 C 代码。
-
函数
+关注
关注
3文章
4151浏览量
61560 -
C代码
+关注
关注
1文章
89浏览量
14198
发布评论请先 登录
相关推荐
Vivado 使用Simulink设计FIR滤波器
电路仿真软件simulink的工作原理
任意单片机基于simulink模型开发方式
![任意单片机基于<b class='flag-5'>simulink</b><b class='flag-5'>模型</b>开发方式](https://file1.elecfans.com/web2/M00/B3/B6/wKgZomVoOLCAViKwAABToXD5CJ8054.jpg)
从HumanEval到CoderEval: 你的代码生成模型真的work吗?
![从HumanEval<b class='flag-5'>到</b>CoderEval: 你的<b class='flag-5'>代码</b>生成<b class='flag-5'>模型</b>真的work吗?](https://file1.elecfans.com//web2/M00/B2/DF/wKgZomVhqYKAREC2AALgDQgQB60275.png)
simulink自动生成ROS代码
![<b class='flag-5'>simulink</b>自动生成ROS<b class='flag-5'>代码</b>](https://file1.elecfans.com/web2/M00/AE/66/wKgaomVUlQ6AdMtWAAI8Hz8F4I8542.jpg)
ARM System C循环模型用户指南
如何测试带服务接口的Simulink模型?
![如何测试带服务接口的<b class='flag-5'>Simulink</b><b class='flag-5'>模型</b>?](https://file1.elecfans.com/web2/M00/8D/7A/wKgaomS7Nd6AbO9eAAB-Wsa85ow071.jpg)
simulink命令有哪些 simulink命令集大全
MBD的Simulink使用技巧:详解代码生成中的模型与代码(2)
![MBD的<b class='flag-5'>Simulink</b>使用技巧:详解<b class='flag-5'>代码</b>生成中的<b class='flag-5'>模型</b>与<b class='flag-5'>代码</b>(2)](https://file1.elecfans.com/web2/M00/8C/A8/wKgZomSvpByAN0CaAAG6X2yV0T0613.jpg)
评论