最近想系统的学习一下MATLAB的Simulink仿真相关的知识,因为以后可能会涉及到Simulin中的模型自动生成代码、Stateflow、状态机相关的内容,想提前学习一下。
1.Simulink的介绍
Simulink是MATLAB中的一种可视化仿真工具, 是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。
Simulink提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。
Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。
2.Simulink的功能
Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。
Simulink是用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具。对各种时变系统,包括通讯、控制、信号处理、视频处理和图像处理系统,Simulink提供了交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。
构架在Simulink基础之上的其他产品扩展了Simulink多领域建模功能,也提供了用于设计、执行、验证和确认任务的相应工具。Simulink与MATLAB紧密集成,可以直接访问MATLAB大量的工具来进行算法研发、仿真的分析和可视化、批处理脚本的创建、建模环境的定制以及信号参数和测试数据的定义。
特点
- 丰富的可扩充的预定义模块库。
- 交互式的图形编辑器来组合和管理直观的模块图。
- 以设计功能的层次性来分割模型,实现对复杂设计的管理。
- 通过Model Explorer 导航、创建、配置、搜索模型中的任意信号、参数、属性,生成模型代码。
- 提供API用于与其他仿真程序的连接或与手写代码集成。
- 使用Embedded MATLAB模块在Simulink和嵌入式系统执行中调用MATLAB算法。
- 使用定步长或变步长运行仿真,根据仿真模式(Normal,Accelerator,Rapid Accelerator)来决定以解释性的方式运行或以编译C代码的形式来运行模型。
- 图形化的调试器和剖析器来检查仿真结果,诊断设计的性能和异常行为。
- 可访问MATLAB从而对结果进行分析与可视化,定制建模环境,定义信号参数和测试数据。
- 模型分析和诊断工具来保证模型的一致性,确定模型中的错误。
3.Embedded Coder和Simulink Coder
Embedded Coder产品为 MATLAB产品扩展了可用于嵌入式软件开发的功能,可以生成具有专业人工代码的清晰度和效率的代码。例如可以:
(1)生成紧凑、快速的代码。(2)大规模生产中使用的微处理器以及嵌入式系统至关重要。(3)自定义生成的代码的外观。(4)针对特定于应用的要求对生成的代码进行优化。(5)启用追溯选项,帮助您验证生成的代码。
MATLAB Coder用于从MATLAB生成 ANSI C/C++ 代码,同时也是使用Simulink Coder的一个前置条件。
Simulink Coder跟MATLAB Coder的功能相似,只不过是从Simulink模型来生成ANSI C/C++代码。Embedded Coder 则允许更进一步的针对MATLAB Coder或者Simulink Coder 生成的代码进行优化和定制,从而生成可以应用到嵌入式产品中去的产品级代码。
4. slx文件与mdl文件的差别
Matlab 2012b以前的版本中,Simulink模型文件格式为.mdl;Matlab 2012b及以后的版本中,Simulink模型默认文件格式为.slx。
slx文件是二进制格式文件,mdl文件是文本格式文件,由于slx文件相对于mdl文件被压缩,通常slx文件大小会比相同的mdl文件小。
类型 | 文件格式 | 文件大小 | 打开速度 | 运行速度 |
.slx文件 | 二进制文件 | 较小 | 相当 | 相当 |
.mdl文件 | 文本文件 | 较大 | 相当 | 相当 |
5.Simulink的启动
方式一:菜单栏启动
方式二:命令行窗口启动
输入simulink,按下回车
6.MATLAB运行simulink命令
常用命令
(1)仿真命令
sim | —仿真运行一个simulink模块 |
sldebug | —调试一个simulink模块 |
simset | —设置仿真参数 |
simget | —获取仿真参数 |
(2)线性化和整理命令
linmod | —从连续时间系统中获取线性模型 |
linmod2 | —也是获取线性模型,采用高级方法 |
dinmod | —从离散时间系统中获取线性模型 |
trim | —为一个仿真系统寻找稳定的状态参数 |
(3)构建模型命令
open_system | –打开已有的模型 |
close_system | –关闭打开的模型或模块 |
new_system | –创建一个新的空模型窗口 |
load_system | –加载已有的模型并使模型不可见 |
save_system | –保存一个打开的模型 |
add_block | –添加一个新的模块 |
add_line | –添加一条线(两个模块之间的连线) |
delete_block | –删除一个模块 |
delete_line | –删除一根线 |
find_system | –查找一个模块 |
hilite_system | –使一个模块醒目显示 |
replace_block | –用一个新模块代替已有的模块 |
set_param | –为模型或模块设置参数 |
get_param | –获取模块或模型的参数 |
add_param | –为一个模型添加用户自定义的字符串参数 |
delete_param | –从一个模型中删除一个用户自定义的参数 |
bdclose | –关闭一个simulink窗口 |
bdroot | –根层次下的模块名字 |
gcb | –获取当前模块的名字 |
gcbh | –获取当前模块的句柄 |
gcs | –获取当前系统的名字 |
getfullname | –获取一个模块的完全路径名 |
slupdate | –将1.x的模块升级为3.x的模块 |
addterms | –为未连接的端口添加terminators模块 |
boolean | –将数值数组转化为布尔值 |
slhelp | –simulink的用户向导或者模块帮助 |
(4)封装命令
hasmask | –检查已有模块是否封装 |
hasmaskdlg | –检查已有模块是否有封装的对话框 |
hasmaskicon | –检查已有模块是否有封装的图标 |
iconedit | –使用ginput函数来设计模块图标 |
maskpopups | –返回并改变封装模块的弹出菜单项 |
movemask | –重建内置封装模块为封装的子模块 |
(5)诊断命令
sllastdiagnostic –上一次诊断信息 |
sllasterror –上一次错误信息 |
sllastwarning –上一次警告信息 |
sldiagnostics –为一个模型获取模块的数目和编译状态 |
硬拷贝和打印命令: |
frameedit –编辑打印画面 |
print –将simulink系统打印成图片,或将图片保存为m文件 |
printopt –打印机默认设置 |
orient –设置纸张的方向 |
>> new_system(\"u1\")>> open_system(\"u1\")>> bdclose>> new_system(\"test1\")>> open_system(\"test1\")>> save_system(\"test1\")>> bdclose>> open_system(\"test1\")>> gcs
ans = \'test1\'