1、19 SIMULINK 交互式仿真集成环境9.1 引导SIMULINK 是一个进行动态系统建模、仿真和综合分析的集成软件包。它可以处理的系统包括:线性、非线性系统;离散、连续及混合系统;单任务、多任务离散事件系统。在 SIMULINK 提供的图形用户界面 GUI 上,只要进行鼠标的简单拖拉操作就可构造出复杂的仿真模型。它外表以方块图形式呈现,且采用分层结构。从建模角度讲,这既适于自上而下(Top-down)的设计流程(概念、功能、系统、子系统、直至器件),又适于自下而上(Bottum-up) 逆程设计。从分析研究角度讲,这种 SIMULINK 模型不仅能让用户知道具体环节的动态细节,而且能让用
2、户清晰地了解各器件、各子系统、各系统间的信息交换,掌握各部分之间的交互影响。在 SIMULINK 环境中,用户将摆脱理论演绎时需做理想化假设的无奈,观察到现实世界中摩擦、风阻、齿隙、饱和、死区等非线性因素和各种随机因素对系统行为的影响。在SIMULINK 环境中,用户可以在仿真进程中改变感兴趣的参数,实时地观察系统行为的变化。由于 SIMULINK 环境使用户摆脱了深奥数学推演的压力和烦琐编程的困扰,因此用户在此环境中会产生浓厚的探索兴趣,引发活跃的思维,感悟出新的真谛。在 MATLAB5.3 版中,可直接在 SIMULINK 环境中运作的工具包很多,已覆盖通信、控制、信号处理、DSP、电力系
3、统等诸多领域,所涉内容专业性极强。本书无意论述涉及工具包的专业内容,而只是集中阐述:SIMULINK 3.0 的基本使用技法和相关的数值考虑。节 9.1 虽是专为 SIMULINK 初学者写的,但即便是熟悉 SIMULINK 以前版本的读者也值得快速浏览这部分内容,因为新版的界面、菜单、工具条、模块库都有较大的变化。第9.2 节比较详细地阐述建模的基本操作:通用模块的具体化设置、信号线勾画、标识、模型窗参数设置。这部分内容是进一步深入的前提。从第 9.3 节起,由浅入深地讲述SIMULINK 对各种数学、工程问题的建模、仿真和分析的基本方法。本章采用“算例”作为主体,配以适量的归纳性表述。本章
4、包含了 31 个“尽量简单”又“独立完整”的“典型”算例,而这正是 SIMULINK 在线 PDF 文件之所缺。读者通过“手、眼、脑”并用地练习算例,掌握 SIMULINK 的一般使用规则和操作技法。鉴于 SIMULINK 的本质,本节算例必定涉及数学、物理、和若干工程考虑。本书已采取“无量纲记述”、“注释”等措施使算例尽可能易读易懂,读者只要稍微耐心,就可以从这些有背景的内容体验到 SIMULINK 仿真之细腻和切实,从这些带背景性的算例品出SIMULINK 的精妙之处。9.1.1 SIMULINK 的安装9.1.2 SIMULINK 入门9.1.3 SIMULINK 库浏览器界面9.2 模
5、型的创建9.2.1 模型概念和文件操作9.2.1.1 SIMULINK 模型是什么29.2.1.2 模型文件的操作9.2.2 模块操作9.2.2.1 模块的基本操作9.2.2.2 向量化模块和标量扩展【*例 9.2.2.2-1】演示“示波 ”模块的向量显示能力。图 9.2.2.2-1-1 示波器显示向量波形【*例 9.2.2.2-2】演示“求和 ”模块的向量处理能力:输入扩展。图 9.2.2.2-2-1 输入的标量扩展【*例 9.2.2.2-3】演示“增益 ”模块的向量处理能力:参数扩展。图 9.2.2.2-3-1 模块参数的标量扩展9.2.2.3 参数设置9.2.3 信号线操作39.2.3.
6、1 产生连线9.2.3.2 信号线的分支和折曲9.2.3.3 信号线宽度显示9.2.3.4 彩色显示信号线9.2.3.5 插入模块9.2.3.6 信号线标识(label)【例 9.2.3.6-1】演示:信号线标识的传播9.2.4 对模型的注释9.2.5 常用的 Sourse 库信源【*例 9.2.5-1】如何调用 MATLAB 工作空间中的信号矩阵作为模型输入。本例所需的输入为 。elsTttTtu20)2()(1)编写一个产生信号矩阵的 M 函数文件function TU=source925_1(T0,N0,K)t=linspace(0,K*T0,K*N0+1);N=length(t);u1
7、=t(1:(N0+1).2;u2=(t(N0+2):(2*N0+1)-2*T0).2;u3(1:(N-(2*N0+2)+1)=0;u=u1,u2,u3;TU=t,u;(2)构造简单的接受信号用的实验模型(如图 9.2.5-1 的左图)图 9.2.5-1 接受信号用的实验模型4(3)模块的参数设置(4)在指令窗中,运行以下指令,在 MATLAB 工作空间中产生 TU 信号矩阵。TU=source925_1(1,100,4); (5)选中 exm925_1 模型窗菜单【Simulation :Start】,示波器呈现图 9.2.5-1 右图信号。9.2.6 常用的 Sink 库信宿9.2.6.1
8、库信宿一览表9.2.6.2 示波器9.2.7 仿真的配置9.2.7.1 解算器参数的设置(Solver)9.2.7.2 仿真数据的输入输出设置(Workspace I/O)9.2.7.3 仿真中异常情况的诊断(Diagnostics)9.3 连续系统建模9.3.1 线性系统9.3.1.1 积分模块的功用【*例 9.3.1.1-1】复位积分器的功用示例。图 9.3.1.1-19.3.1.2 积分模块直接构造微分方程求解模型【*例 9.3.1.2-1】假设从实际自然界(力学、电学、生态等)或社会中,抽象出有初始状态5为 0 的二阶微分方程 , 是单位阶跃函数。本例演示如何用)(2.04.2.0tu
9、xx积分器直接构搭求解该微分方程的模型。(1)改写微分方程(2)利用 SIMULINK 库中的标准模块构作模型图 9.3.1.2-1-1 求解微分方程的 SIMULINK 模型 exm9312_1.mdl(3)仿真操作(4)保存在 MATLAB 工作空间中的数据clftt=ScopeData.time; %为书写简单,把构架域的时间数据另赋给 ttxx=ScopeData.signals.values;%目的同上。xm,km=max(xx);plot(tt,xx,r,LineWidth,4),hold onplot(tt(km),xm,b.,MarkerSize,36),hold offstr
10、max=char(最大值,t = ,num2str(tt(km),x = ,num2str(xm);text(6.5,xm,strmax),xlabel(t),ylabel(x) 4 6 7 / 2 tx图 9.3.1.2-1-2 利用存放在 MATLAB 工作空间中的仿真数据所绘制的曲线9.3.1.3 传递函数模块【例 9.3.1.3-1】直接利用传递函数模块求解方程 (9.3.1.3-1)。(1)根据式(9.3.1.3-3) 构造如图 9.3.1.3-1 所示的模型 exm9313_1.mdl图 9.3.1.3-1 由传递函数模块构成的仿真模型 exm9313_1.mdl6(2)仿真操作9
11、.3.1.4 状态方程模块和单位脉冲输入的生成【*例 9.3.1.4-1】假设式(9.3.1.4-1)中的输入函数 是单位脉冲函数 ,研究该系统的位u)(t移变化。本例演示:(A)状态方程模块的使用;( B)脉冲函数的生成方法。(1)单位脉冲函数的数学含义及近似实现(2)利用库模块构造如图 9.3.1.4-1-1 所示的仿真模型 exm9314_1.mdl图 9.3.1.4-1-1 带近似单位脉冲的状态方程模块构成的仿真模型 exm9314_1.mdl(3)仿真结果图 9.3.1.4-1-2 仿真结果9.3.2 非线性系统9.3.2.1 建立非线性仿真模型的基本考虑【*例 9.3.2.1-1】
12、物理背景:如图 9.3.2.1-1-1 所示喷射动力车的定位控制问题。图 9.3.2.1-1-1 装置左右喷射发动机的车辆示意图(1)根据车辆的动态方程,构作基本仿真模型7图 9.3.2.1-1-2 基本仿真模型(2)为观察仿真时间进程,引入仿真时钟显示。(3)为模仿“车辆速度与位移小于某阈值时被认为控制目标达到”,引入仿真终止环节。图 9.3.2.1-1-3 完整仿真模型 exm9321_1.mdl(4)为模仿“符号切换的非瞬时性”,本例采用“定步长”Solver 解算器(5)为便于分析接近原点时的颤振现象,通过模型窗 I/O 设置保存仿真数据(6)仿真操作和仿真结果观察(7)保存数据的利用
13、和分析subplot(1,2,1),plot(xout(:,2),xout(:,1)grid on,axis(-0.2,1,-1,0.2),axis squarexlabel(fontsize14位移),ylabel(fontsize14速度),subplot(1,2,2),plot(xout(:,2),xout(:,1)grid on,axis(-0.1,0.05,-0.05,0.1),axis square 02 0 图 9.3.2.1-1-4 完整相轨迹及局部放大图9.3.2.2 任意非线性函数模块及其应用8【例 9.3.2.2-1】轿车沿直线山坡路向前行驶。要求设计一个简单的比例放大器
14、,使轿车能以指定的速度运动。本例演示:(A )仿真系统的创建。(B)非线性模块的使用。(C)任意函数模块的应用。(D) 体现 “自下而上”的建模方式。(E)本例将作为下面章节多个算例的基础,读者切莫跳略此题。(1)轿车的运动方程(2)轿车动力学的仿真模型图 9.3.2.2-1-2 行驶轿车动力学仿真模型(2)比例控制及其仿真模型图 9.3.2.2-1-3 比例控制器仿真模型(3)构成完整的仿真模型图 9.3.2.2-1-4 受控轿车的完整仿真模型(4)仿真操作和说明99.4 子系统的创建、装帧及受控执行9.4.1 简装子系统及其应用9.4.1.1 创建简装子系统的“先有内容后套包装”法【例 9
15、.4.1.1-1】题目的背景和参数与例 9.3.2.2-1 完全相同,要求创建利用比例控制器使轿车的运动速度稳定在期望车速的分层仿真模型。本例演示:如何从非分层模型获得分层模型;创建简装子系统的“先有内容后套包装”法。(1)将待“包装”模型另存为一个新模型(2)生成第一个简装子系统(3)生成第二个简装子系统(4)更改子系统的标识名(5)重命名输入输出口的名称图 9.4.1.1-1 采用简装子系统的完整仿真模型9.4.1.2 创建简装子系统的“先有包装后置内容”法【例 9.4.1.2-1】本例演示:如何自上而下构造分层模型;产生简装子系统的“先有包装后置内容”法。(1)在新建模型窗中复制包括子系
16、统模块在内的所有标准模块(见图 9.4.1.2-1)图 9.4.1.2-1 带标准子系统模块的新建模型窗(2)在 Subsystem 标准模块中“装入”轿车动态模型(3)在 Subsystem 1 标准模块中“装入”比例控制器模型(4)对 Untitled 模型窗中滑键模块进行适当设置,进行各模块间的连接,就形成与图9.4.1.1-1 相同的完整仿真模型。(5)对完整仿真模型窗进行仿真参数设置,为进行仿真作最后准备9.4.2 精装子系统109.4.2.1 精装子系统的制作过程9.4.2.2 装帧示例【*例 9.4.2.2-1】目标:把图 9.4.1.1-1 所示轿车速度控制模型中的轿车动态模型简装子系统变成精装子系统。(2)打开装帧编辑器图 9.4.2.2-1-1 显示初始化页面的装帧编辑器(3)填写初始化页面中“块类别”(4)使用初始化页面中的“对话窗参数设置区”为未来对话框设计提示及设置变量(5)填写初始化页中“初始指令区”(6)利用 Icon 页为精装子系统模块制作图标图 9.4.2.2-1-2 装帧编辑器的图标制作页