MATLAB中Simulink的基础知识
Simulink是MATLAB中的一种可视化仿真工具, 是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。
Simulink提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。
Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。
1.Simulink的功能
Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。
Simulink是用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具。对各种时变系统,包括通讯、控制、信号处理、视频处理和图像处理系统,Simulink提供了交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。
构架在Simulink基础之上的其他产品扩展了Simulink多领域建模功能,也提供了用于设计、执行、验证和确认任务的相应工具。Simulink与MATLAB紧密集成,可以直接访问MATLAB大量的工具来进行算法研发、仿真的分析和可视化、批处理脚本的创建、建模环境的定制以及信号参数和测试数据的定义。
通过Simulink,用户可以快速构建模型,进行仿真分析,并实现从模型到部署的全过程。以下是Simulink的一些主要特点:
-
丰富的可扩充的预定义模块库,交互式的图形编辑器来组合和管理直观的模块图,以设计功能的层次性来分割模型,实现对复杂设计的管理。
-
通过Model Explorer 导航、创建、配置、搜索模型中的任意信号、参数、属性,生成模型代码,提供API用于与其他仿真程序的连接或与手写代码集成,使用Embedded MATLAB模块在Simulink和嵌入式系统执行中调用MATLAB算法。
-
使用定步长或变步长运行仿真,根据仿真模式(Normal,Accelerator,Rapid Accelerator)来决定以解释性的方式运行或以编译C代码的形式来运行模型。
-
图形化的调试器和剖析器来检查仿真结果,诊断设计的性能和异常行为,可访问MATLAB从而对结果进行分析与可视化,定制建模环境,定义信号参数和测试数据。
-
模型分析和诊断工具来保证模型的一致性,确定模型中的错误。
2.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 生成的代码进行优化和定制,从而生成可以应用到嵌入式产品中去的产品级代码。
3. slx文件与mdl文件的差别
Matlab 2012b以前的版本中,Simulink模型文件格式为.mdl;Matlab 2012b及以后的版本中,Simulink模型默认文件格式为.slx。
slx文件是二进制格式文件,mdl文件是文本格式文件,由于slx文件相对于mdl文件被压缩,通常slx文件大小会比相同的mdl文件小。
类型 | 文件格式 | 文件大小 | 打开速度 | 运行速度 |
.slx文件 | 二进制文件 | 较小 | 相当 | 相当 |
.mdl文件 | 文本文件 | 较大 | 相当 | 相当 |
4.Simulink的启动
方式一:菜单栏启动
方式二:命令行窗口启动
输入simulink,按下回车,如图所示:
5.MATLAB运行simulink命令
Simulink允许用户创建、模拟和分析动态系统模型,以下是一些常用的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'