
希望关注本专栏的朋友,也能一并关注微信公众号。

原文地址:Simulink迭代器及其代码生成
需求分析
在传统手工撸代码过程中迭代器是十分常见的,土鳖点的叫法是“循环”。“For循环”、“While循环”、“do…while循环”、“递归函数”等。在Simulink中如何实现迭代功能呢?先来了解Simulink建模的原理!

以定步长的离散场景为例,开始时间0s结束时间1s,采样时间0.1s。

配置完成后,上图的模型就会以0.1s为周期共运行10次。类似我们控制器中的100ms任务。看到这很多老铁可能又要问,上面这图里不是已经用unit dely模块实现了累加了吗?但是这仅仅是每一个周期+1,如果我需要在一个周期中在加入一个迭代器进行运算那又该怎么做?
迭代器模块
老铁放心,Matlab的工程师早就想到大家有这个需求,已经开发了迭代器模块

如上图在Library Broswer中的Port&Subsystem选项卡中,有三个迭代器模块

从名字上看对应了For循环、For Each循环(这个好像C语言没有)、While循环,下面【思想】以While迭代器为例子演示下迭代器模块如何使用代码生成的效果。

从While模块可以看到有2个输入,分别是输入的初始信号In1当然也可以根据自己的需要增加,另一个是IC这个是个布尔型数据,用于判断当前步长是否要运行while迭代器。IC这个信号一定要由迭代器的外部输入!

进入子系统中,有一个cond口,是用来判断推出循环的条件,该信号来自迭代器子系统内部的逻辑判断。

双击进入While Iterator后有四个地方需要进行配置
1、Maximum number ofiterations:设置最大的循环次数,防止死循环,如果你对自己设计的退出逻辑很有把握也可以设置为-1,无限循环模式
2、while loop type:设置循环模式While与do…While,这两个有什么区别就不多做介绍了,不清楚的就复习下《C语言程序设计》;
3、Status when starting:值为rest或held,设置进入迭代器时候的状态,具体的看我们后面的演示;
4、Show interation numberport:是否输出迭代器次数,勾选While Iterator会多一个output口,输出退出循环时一共迭代了几次,具体的看我们后面的演示;
演示模型

While Iterator中States when starting设置为held,保留迭代器的过程数据,让下一次迭代引用!

算法配置:时长0.2s,周期0.1s,共运行3次,有迭代器执行的结果是30,对照组执行结果是6,循环次数为5。迭代器比对照组每一个步长多执行5次累加运算。

接着,把While Itertor中的Stateswhen starting设置为reset。再来看看结果!

结果发生变化,就不会出现执行3次的结果叠加,而只会显示1次循环的结果。看到这你明白了States when starting这个选项如何使用的了吗?
代码生成

配置好生成代码时会用到的信号变量还有算法等。如果不知道怎么配置的可以看看我们前面的文章:
1.Simulink代码生成应用教程
2.Simulink代码生成提高教程

这里就是While迭代器生成的C语言程序,左边的是States When Starting为Reset,右边为Held。可以看到Reset在每个step都会对UnitDelay_DSTATE进行清零。
精彩预告
1.行星排混动从入门到精通(结构)
2.行星排混动从入门到精通(控制)
3.仿真与实测数据对不上怎么办?
4.工程师眼里的LKAS
5.如何优雅的编辑数学公式
以下是推荐阅读:
- Simulink迭代器及其代码生成
- 让【思想】头疼的Motorola编码
- 大开脑洞——虚拟测功机
- 跟【思想】一起,在家里玩HIL(VCU仿真实例)
- 跟【思想】一起,在家里玩HIL(1)
- 【旁门左道】提取万有特性数据
- 动力经济性信息系统(2)
- 动力经济性信息系统(1)
- CRUISE&CRUISE M傻傻分不清楚
- 换挡策略如何影响动力经济性
- Amesim电动车仿真
- Amesim与Simulink联合仿真演示
- Amesim与Simulink联合仿真
- 增程式发动机仿真控制逻辑详解(二)
- 增程式发动机仿真控制逻辑详解(一)
- 增程式混合动力系统动力经济性仿真
- 工况路谱的采集与数据处理
- 路谱数据滤波工具
- 混合动力节油的秘密-发动机万有特性
- AVL-CRUISE纯电动仿真策略提高教程
- AVL-CRUISE纯电动模型仿真策略
- 燃料电池车(FCHEV)动力经济性建模与仿真
- CRUISE与Isight联合仿真优化
- CRUISE与Simulink联合仿真介绍
- 部分仿真软件对比介绍
- 体验整车控制器程序设计
- 永磁同步电机是什么?
- 【科普】整车控制器-软件篇
- 【科普】整车控制器-硬件篇
- Simulink中浮点数的优化表示法
- 嵌入式C语言中CAN报文字节序问题的处理方法
- 嵌入式C语言环境下的CAN总线通讯协议
- Simulink代码生成提高教程
- S-Funciton应用实例
- 汽车工程师眼中的C#
- Simulink代码生成应用教程
- Sinmulink代码生成基础体验教程
- CAN总线(J1939)速成指南【1】
- DBC文件助手~三月累计更新
- DBC文件助手-基础功能介绍2
- DBC文件助手-基础功能介绍1
- 路谱数据滤波工具
- Excel与DBC文件的互相转换
- 电机效率MAP生成工具
最后
以上就是自然水壶最近收集整理的关于simulink仿真及代码生成技术入门到精通_Simulink迭代器及其代码生成的全部内容,更多相关simulink仿真及代码生成技术入门到精通_Simulink迭代器及其代码生成内容请搜索靠谱客的其他文章。
发表评论 取消回复