C代码中常用的循环控制语句有诸如for 、while以及do while。那么,这种循环逻辑在Simulink模型中是如何实现的呢?
Simulink里有三种建模手段:
Simulink 框图
Stateflow Chart
先来看看如何使用Simulink 框图来表达这种循环逻辑。
点击末尾的 “阅读原文” 下载本文的案例模型
循环逻辑
要得到:
y1 = 0;
for(inx = 0; inx <10; inx++)
{
y1 = u1[inx] + y1;
}
或者
while(flag && (num_iter <= 100)
{
flag = func ();
num_iter ++;
}
怎么做:
在 Simulink的Port & Subsystem库里,有IF-ELSE以及While模块。
For循环实例
1. 新建一个简单的Simulink模型
首先来看For循环,这是从Port & Subsystem库里拖出来的For Iterator模块:

双击它,搭建内部如下图:

代码生成之前所需要的配置、数据对象的构造以及信号关联等等,这些任务与之前所述一样,此处就不再重复说了。
5. 生成代码
Ctrl+B,生成代码。
如前面所设置的,可以看到下图所生成的For循环的C代码:

While循环实例
在Port & Subsystem库里的While Iterator模块,实现while循环的功能。从这个模型的端口来看,在这个循环里根据输入u2来计算输出y2的值,如下图。

在这个While Iterator子系统内部,则是具体的while循环的内容,如下图。
While Iterator模块,是这个循环的条件模块,可以设置最大的循环次数,同时cond为while的循环条件。而在上部的累加计算框图,则是 while 循环的内容。

生成代码,如下图。图中的func函数就是框图func子系统所生成的函数。内部做了一些更新flag的计算。另外可以看到累加框图生成的代码:y2 += u2。

do while循环实例
这个就简单了,直接把上图中的 while Iterator 模块双击设置为 do while 的模式就行了。
其他
生成代码结束之后,如果继续编译链接生成 exe 文件时,会有一个有意思的错误如下。有兴趣的可以去查看 math.h 的函数定义。

在Simulink的Port & Subsystem库里,有IF-ELSE以及While相应的子系统模块实现循环算法。
-
逻辑
+关注
关注
2文章
834浏览量
30051 -
循环
+关注
关注
0文章
92浏览量
16610 -
C代码
+关注
关注
1文章
90浏览量
15093
发布评论请先 登录
关于系统链接脚本的介绍
AES加解密算法逻辑实现及其在蜂鸟E203SoC上的应用介绍
温度循环测试后如何进行数据记录和分析?
人工智能行业如何使用for循环语句进行循环
数字IC设计:方法、技巧与实践
实用电子电路设计(全6本)——数字逻辑电路的ASIC设计
技术干货驿站 ▏深入理解C语言:嵌套循环与循环控制的底层原理
芯片失效分析的方法和流程
汽轮机热力循环分析
循环伏安法(CV)基础知识

关于实现逻辑循环的方法分析和介绍
评论