Simulink编程快速上手之:HelloWorld
Simulink编程快速上⼿之:HelloWorld
⼀般程序设计的⼊门书籍,最开始为了让新学者能够更直观的了解开发过程和马上看到⾃⼰程序设计的成果,都会从输出"Hello World"开始。对于Simulink来说,它的特长是数据计算,所以我们就⽤Simulink中最常⽤的⼏个模块,快速搭建⼀个加法运算⼩程序,来达
到“Hello World”的同等效果。
⼀、创建模型
1.打开Matlab,新建⼀个空⽩的Simulink模型,同时将模型另存为 “HelloWorld.slx”
2.在模型空⽩处双击⿏标,在输⼊框中输⼊“Constant”添加两个常量模块,输⼊“Sum”添加⼀个加法计算模块。
3.选中下⾯的“Constant1”模块,键快捷键“Ctrl+R”旋转模块⽅向,使箭头向上,对象加法模块下⽅输⼊箭头⽅向。再添加⼀个"Display"模块,⽤于表⽰计算结果数据。
4.⿏标选中输⼊\输出端⼝并⽤线连接。
5.选中“DEBUG”选项卡,点击“Run”运⾏按钮
可以看到,计算结果会显⽰在Display模块中。
6.接下来,我们双击下⾯的常量模块,并将Value改成2。再次点击“Run”,运⾏程序。看到Display中显⽰的计算结果被更新了。
⼆、代码⽣成配置
1.按下快捷键“Ctrl+B”对模型进⾏编译。此时,由于我们还没有对代码⽣成进⾏相关配置,系统会弹出错误提⽰,要求对代码⽣成进⾏相关配置。
注:与其他程序设计IDE不同,Simulink的错误功能⾮常强⼤,它不仅仅会提⽰错误信息,还会给出相应的对策⽅法。因
此“Diagnostics Viewer”窗⼝,将是我们在Simulink程序设计过程中经常看到,甚⾄是⾮常依赖的⼀个功能。
人生价值的名言由于程序仿真为⾮连续仿真,所以在⽣成C代码时,Simulink会给出三个提⽰及对策:
1.需要将仿真解算器(Solver)步长改为“固定步长(fixed-step)”
2.把输出⽬标⽂件类型改为可变步长⽬标⽂件
3.通过向导完成代码⽣成的相关设置
我们点击第⼀项后⾯的“Open”按钮,在弹出模型参数设置对话框中,将解算器类型由“variable-step”改为 "fixed-step"。
qq绿钻有什么用
为了简化,其他代码⽣成的相关设置,我们继续点击第三项,利⽤"Simulink Coder Quick Start"向导进⾏配置。这⾥我们,⼀路点击"Next"按钮,采⽤默认配置。
2.配置完成后,再次按下快捷键“Ctrl+B”进⾏C代码⾃动⽣成。
由于向导进⾏配置中,会默认打开“代码⽣成报告“功能,因此在代码⽣成结束后,会⾃动弹出⽹页形式的报告。
3.点击报告左边的“HelloWorld.h”,可以打开⽣成代码的头⽂件。但是,在对应的“HelloWorld.c”中,我们并不到加法运算的相关代码。原因在于,我们在模型中,只是将变量显⽰在了Simulink的"Display"模块中。对于程序来说,并没有真正的输出。没有输出的代码会被Simulink优化掉。
三、⽣成模型对应的C代码
证书过期1.我们将刚才模型中的“Constant1”和“Display”分别⽤“in”(输⼊)、“Out”(输出)模块替换。
2.画框选中所有模块,按下快捷键“Ctrl+G”或通过右键菜单选择,将选中模块集⽣成⼀个"Subsystem“⼦系统。以便最终⽣成⼀个叫“GetSum”的C代码函数。
注:通过右键菜单“Format/Show Block Name”菜单,可以设定常时显⽰每个模块的名称。
新婚姻法婚后财产4.再次按下快捷键“Ctrl+D”,对模型进⾏编译,Simulink会提⽰,输⼊/输出端⼝未被连接。
5.为输⼊/输出端⼝ 设定⼀个有效的输⼊/输出。在模型中添加⼀个 “Data Store Memory”(A)模块,
添加这个模块相当于在C语⾔中,声明⼀个新的全局变量。
添加“Data Store Read”模块,读取 (A)的数据,作为GetSum⼦系统的输⼊。
添加“Data Store Write”模块,将GetSum⼦系统的输出,写⼊到A中。
6.为了⽣成⼀个单独的函数,我们需要将“GetSum”⼦系统,定义为⼀个“atomic unit ”(原⼦⼦系统)
在“Code Generation”选项卡中,将函数打包⽅式更改为“Resuable funciton“
7.再次按下快捷键“Ctrl+B ”代码⽣成后,在代码⽣成报告的左侧链接处,或在matlab⽂件夹中可以看到⽣成的代码⽂件。步步惊心敏敏
如何灭蚂蚁
8.打开“HelloWorld.c”⽂件,可以看到“HelloWorld_GetSum”就是我们模型中“GetSum”⼦系统对应的C代码函数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。