Menu
行业资讯
>返回列表
如何实现逻辑循环

如何实现逻辑循环

2016-11-14

C代码中常用的循环控制语句有诸如for 、while以及do while。那么,这种循环逻辑在Simulink模型中是如何实现的呢?

 

Simulink里有三种建模手段:

•Simulink 框图

•Stateflow Chart

•MATLAB Function

 

先来看看如何使用Simulink 框图来表达这种循环逻辑。

 

For循环实例

 

1. 新建一个简单的Simulink模型

2.首先来看For循环,这是从Port & Subsystem库里拖出来的For Iterator模块:

 

640-2

 

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

 

640-1

 

4.代码生成之前所需要的配置、数据对象的构造以及信号关联等等,这些任务与之前所述一样,此处就不再重复说了。

5. Ctrl+B,生成代码。如前面所设置的,可以看到下图所生成的For循环的C代码:

 

640

 

While循环实例

 

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

 

640-2

 

在这个While Iterator子系统内部,则是具体的while循环的内容,如下图。

 

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

 

640-3

 

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

 

640-1

 

do while循环实例

这个就简单了,直接把上图中的 while Iterator 模块双击设置为 do while 的模式就行了。

 

其他

生成代码结束之后,如果继续编译链接生成 exe 文件时,会有一个有意思的错误如下。有兴趣的可以去查看 math.h 的函数定义。

 

总结

在Simulink的Port & Subsystem库里,有IF-ELSE以及While相应的子系统模块实现循环算法。

 


 

本文转自微信公众号:MATLAB