SMULINK实验课程设计.docx
《SMULINK实验课程设计.docx》由会员分享,可在线阅读,更多相关《SMULINK实验课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
![SMULINK实验课程设计.docx](https://file1.bdocx.com/fileroot1/2022-12/31/87ddbca2-4c45-43f7-b252-89e2afee1e67/87ddbca2-4c45-43f7-b252-89e2afee1e671.gif)
SMULINK实验课程设计
引言
“仿真”对应的英文单词是“Simulation”,仿真已成功应用于工业,农业,商业等众多领域,随之,经过一个世纪的发展历程,仿真科学与技术已形成独立的知识体系,随着科学技术的发展,工程系统正朝着更加复杂的方向发展,这主要是由于复杂的任务和高精度的要求所引起的。
一个复杂系统可能有多个输入和多个输出,并且以某种方式相互关联或耦合,可能是时变的。
由于需要满足控制系统性能提出的日益严格的要求,系统的复杂程度越来越大,为了分析这样的系统,必须简化其数学表达式,转而借助于计算机来进行各种大量而乏味的分析与计算,并且要求能够方便地用大型计算机对系统进行处理。
从这个观点来看,状态空间法对于系统分析是最适宜的。
大约从1960年升始发展起来。
这种新方法是建立在状态概念之上的。
状态本身并不是一个新概念,在很长一段时间内,它已经存在于古典动力学和其他一些领域中。
经典控制理论是建立在系统的输入-输出关系或传递函数的基础之上的,而现代控制理论以n个一阶微方程来描述系统,这些微分方程又组合成一个一阶向量-矩阵微分方程。
应用向量-矩阵表示方法,可极大地简化系统的数学表达式。
状态变量、输入或输出数目的增多并不增加方程的复杂性。
事实上,分析复杂的多输入-多输出系统,仅比分析用一阶纯量微分方程描述的系统在方法上稍复杂一些。
本课程将主要涉及控制系统的基于状态空间的确定、然后将其进行仿真,再对仿真做分析与设计。
1.设计概述
1.1设计目的
学习4阶龙格-库塔法的基本思路和计算公式,加深理解4阶龙格-库塔法的原理和稳定域。
加深理解仿真的稳定性,仿真步长对仿真精度的影响。
1.2设计内容
1、线性定常系统
2、非线性系统
其中:
r=0.001,a=210-6,s=0.01,b=110-6,x(0)=12000,y(0)=600。
1.3设计任务
(1)查阅资料,确定系统设计方案
(2)说明设计原理,构建系统,SIMULINK仿真
(3)撰写课程设计说明书.
1.4设计基本要求与要点
1、所采用方法的基本思路和计算公式。
2、仿真步骤及说明。
3、仿真过程及仿真结果分析
要点:
(1)学习4阶龙格-库塔法的基本思路和计算公式;
(2)为了保证仿真的稳定,分析线性定常系统,其最大仿真步长为多少?
2状态空间模型仿真方案设计
2.1确定设计过程
在熟悉课题,明确任务的基础上,查阅相关资料,理清设计思路,综合考虑总的设计时间和各部分设计所需时间,最终决定将本次设计分四步进行。
1.熟悉课题,明确任务,查阅相关资料,确定总体设计方案;
2.构建系统,同时了解设计原理及基本原理;
3.对所构建的系统进行仿真,选择合适的步长;
4.观察仿真结果,进行仿真分析。
2.2设计基本原理
4阶龙格-库塔法是一种递推的方法,其基本公式为:
y(tk+1)
yk+1=yk+
(K1+2K2+2K3+K4)其中:
K1=f(tk,yk),K2=f(tk+h/2,yk+(h/2)*K1),K3=f(tk+h/2,yk+(h/2)*K2),K4=f(tk+h,yk+hK3)
2.3设计基本思想
由微分方程确定状态方程,选择合适的状态空间,运用SIMULINK仿真工具进行实验微型计算机、MATLAB软件。
Sources(信号源),Sink(显示输出),Continuous(线性连续系统),Discrete(线性离散系统),Function&Table(函数与表格),Math(数学运算),Discontinuities(非线性),Demo(演示)
2.4状态空间方程的确定
1.状态:
动态系统的状态是系统的最小一组变量(称为状态变量),只要知道了在
时的一组变量和
时的输入量,就能够完全确定系统在任何时间
时的行为。
状态这个概念决不限于在物理系统中应用。
它还适用于生物学系统、经济学系统、社会学系统和其他一些系统。
2.状态变量:
动态系统的状态变量是确定动态系统状态的最小一组变量。
如果至少需要n个变量才能完全描述动态系统的行为(即一旦给出
时的输入量,并且给定
时的初始状态,就可以完全确定系统的未来状态),则这n个变量就是一组状态变量。
状态变量未必是物理上可测量的或可观察的量。
某些不代表物理量的变量,它们既不能测量,又不能观察,但是却可以被选为状态变量。
这种在选择状态变量方面的自由性,是状态空间法的一个优点。
3.状态空间:
由n个状态变量
所张成的n维欧氏空间,称为状态空间。
任何状态都可以用状态空间中的一点来表示。
5.状态空间方程
在状态空间分析中,涉及到三种类型的变量,它们包含在动态系统的模型中。
这三种变量是输入变量、输出变量和状态变量。
在后面的分析中我们将会看到,对于一个给定的系统,其状态空间表达式不是唯一的。
但是,对于同一系统的任何一种不同的状态空间表达式而言,其状态变量的数量是相同的。
假设多输入、多输出n阶系统中,r个输入量为
和m个输出量
。
n个状态变量为
于是可以用下列方程描述系统:
(1.2.1)
输出方程为:
(1.2.2)
用向量形式描述,可写为:
状态方程:
(1.2.3)
输出方程:
(1.2.4)
其中
2.5由状态空间方程确定系统模型
系统模型为:
1.线性定常系统
得到模型如下图所示:
2、非线性系统
其中:
r=0.001,a=210-6,s=0.01,b=110-6,x(0)=12000,y(0)=600。
得到模型如下图所示:
3系统仿真
3.1仿真方法
利用MATLAB中的Simulink模块进行线性定常和非线性系统的仿真。
3.2Simulink简介
Simulink是MATLAB软件包之一,用于可视化的动态系统仿真,它适用于连续系统和离散系统,也适用线性系统和非线性系统。
它采用系统模块直观地描述系统典型环节。
因此可十分方便地建立系统模型而不需要花较多时间编程。
正由于这些特点,Simulink广泛流行,被认为是最受欢迎的仿真软件。
3.3Simulink仿真步骤
Simulink实际上是面向结构的系统仿真软件。
利用Simulink进行系统仿真的步骤是:
(1)启动Simulink,进人Simulink窗口;
(2)在Simulink窗口下,借助Simulink模块库,创建系统框图模样并调整模块参数;
(3)设置仿真参数后,启动仿真;
(4)输出仿真结果。
3.4启动Simulink窗口及模型库
用户首先进入MATLABCOMMAND窗口,键人Simulink,立即弹出Simulink模块库窗口,如图3-1所示。
图3-1Simulink模块库
3.5系统框图模型的建立
系统框阁模型建立的过程如下:
1、建立模型窗口
建立新的模型窗口常有四种方法:
(1)在MATLABCOMMAND窗口下,键人Simulink,弹出Simulink模块库窗口同时,也弹出一个Untitled窗口,该窗口为未取名的模拟窗口,用户可在该窗口下建立新的系统框图模型。
(2)在Simulink窗口下,用鼠标选取菜单[File]中[New]子菜单的[Model]后,会弹出一个Untitled窗口,如图3-2所示,该窗口供用户建立系统框图模型。
图3-2Untitled模型窗口
3)若模型文件已存在,Simulink窗口下,选择菜单[File]中[Open]命令,输入文件名,即打开一个已存在的方框图模型。
2、选取模块或模块组
在建立框图模型过程中,需进行如拷贝、删除模块等操作,必须首先选择模块或模块组,具体操作如下:
(1)在模型或模块库的窗口内,找出所需模块图标,用鼠标左键单击。
图标四角出现黑圆点,表示该模块已被选中。
(2)在模型或模块库窗口内,用鼠标左键在窗口矩形边界两个对角单击一下,即生成一个边界框将所需几个模块图标包围,松开鼠标,则边界框内模型和连接线出现黑圆点,表示这些模型(包括在连接线)均被选中。
用同样方法可以选取一个系统框图模块的全部模块。
3、模块拷贝及删除
用户在建立自己模型时候,常常需要从Simulink模块库,其他模块库或其他模型窗口复制所需的模块并移动至自己的模型窗口内。
有两种操作方法;鼠标拖动方法和菜单命令法。
介绍一种如下。
鼠标拖动法如下:
(1)打开模块库窗口或模型窗口。
(2)将鼠标移至要拷贝的模块图标上,按下鼠标左键并保持。
(3)移动鼠标将模块图标拖至目标模型窗口一定位置。
(4)松开鼠标左键,模块图标保留在目标模拟窗口内,模块拷贝完成。
模块的删除有两种方法:
(1)选取要删除的模型,从[Edit]菜单中选取[Clear]或[Cut]令,用[Cut]命令删除的模块允许使用[Paste]粘贴在另一个地方。
(2)选取要删除的模块,并按[Del]键。
Simulink允许模块更名,图标大小改变、模块图标移动、模块图标旋转等操作。
模块图标旋转快捷键是CTRL+R。
4、模块参数设置
用鼠标双击待设置参数的模块图标,打开模块对话框,按对话框栏目中提供的信息,输入或改变模块参数。
按[Close],模块参数设置或修改完成。
5、模块连接线
模块之间的连接线是信号线,每根连接线都表示标量或向量信号的传输,连接线的箭头表示信号流向。
连接线把一个模块的输出端口和另一个模块的输入端口连接起来,也可以利用分支线把一个模块的输出端口和几个模块的输人端口连接起来。
6、模型文件取名及保存
一旦把模型窗口上各模型连接起来,一个系统方框图模型建立工作就已完成。
选择模型窗口[File]菜单中[Saveas]命令,弹出对话框,填人模型文件名。
3.6系统仿真运行
系统仿真运行常有两种方法进行:
1、Simulink模型窗口下的仿真运行
在Simulink模型窗口下进行仿真操作简单、直观,不必记忆命令的语法规则,人机交互方式选择或修改仿真参数,模型参数等。
具体操作如下:
(1)打开系统模型窗口。
(2)从菜单[Simulation]中选取[Parameters],弹出仿真参数对话框。
如图3-3所示。
图3.3
(3)应用仿真参数
在通过SimulationPrameters对话框设置或修改好仿真参数后,准备应用到用户模型仿真中,按对话框中[Apply]键,再按对话框中[Close]键,关闭对话框。
(4)仿真开始和停止
从[Simulation]菜单中选取[Start]命令,仿真立即开始运行,这时[Start]变为[Stop]。
若要停止仿真,从[Simulation]菜单中选择[Stop],仿真运行立即停止。
若要使仿真运行暂停,可从[Simulation]菜单中选择[Pause],这时[Pause]变为[Continue]。
若要使仿真继续运行,选择[Continue]。
3.7仿真结果输出
利用Scope模块
在仿真期间,Scope模块还具有放大、缩小功能以便更清晰显示感兴趣的区域,Scope模块还可将数据存储在丁作空间(Workspace)内。
3.8龙格-库塔法简介及步长的选择
龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。
由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。
该算法是构建在数学支持的基础之上的。
龙格库塔方法的理论基础来源于泰勒公式和使用斜率近似表达微分,它在积分区间多预计算出几个点的斜率,然后进行加权平均,用做下一点的依据,从而构造出了精度更高的数值积分计算方法。
如果预先求两个点的斜率就是二阶龙格库塔法,如果预先取四个点就是四阶龙格库塔法。
一阶常微分方程可以写作:
y'=f(x,y),使用差分概念。
(Yn+1-Yn)/h=f(Xn,Yn)推出(近似等于,极限为Yn')
Yn+1=Yn+h*f(Xn,Yn)
另外根据微分中值定理,存在0Yn+1=Yn+h*f(Xn+th,Y(Xn+th))
这里K=f(Xn+th,Y(Xn+th))称为平均斜率,龙格库塔方法就是求得K的一种算法。
利用这样的原理,经过复杂的数学推导(过于繁琐省略),可以得出截断误差为O(h^5)的四阶龙格库塔公式:
K1=f(Xn,Yn);
K2=f(Xn+h/2,Yn+(h/2)*K1);
K3=f(Xn+h/2,Yn+(h/2)*K2);
K4=f(Xn+h,Yn+h*K3);
Yn+1=Yn+h*(K1+2K2+2K3+K4)*(1/6);
所以,为了更好更准确地把握时间关系,应自己在理解龙格库塔原理的基础上,编写定步长的龙格库塔函数,经过学习其原理,已经完成了一维的龙格库塔函数。
仔细思考之后,发现其实如果是需要解多个微分方程组,可以想象成多个微分方程并行进行求解,时间,步长都是共同的,首先把预定的初始值给每个微分方程的第一步,然后每走一步,对多个微分方程共同求解。
想通之后发现,整个过程其实很直观,只是不停的逼近计算罢了。
编写的定步长的龙格库塔计算函数:
4阶龙格-库塔方法(RK4)可模拟N=4的泰勒方法的精度。
这种算法可以描述为,自初始点
开始,利用
生成的近似序列,其中
4仿真结果
根据以上的仿真步骤得到仿真结果;
(1)线性定常系统(仿真结果图如下)
(2)非线性系统
仿真结果如下:
5课程设计的心得体会
通过这几天的课程设计,我学习到了很多知识,这次的课程设计,加深了我对龙格库塔法的了解,对由微分方程确定状态空间的方法有了更好的掌握,在这次设计中遇到的问题,不懂的知识点我积极查阅资料,上网搜索,与同学探讨,增强了我遇到问题解决问题的能力,其次,通过仿真,我已经可以熟练的使用MATLAB中的SIMULINK模块,综上所诉,这次的课程设计我受益匪浅,学到了很多实践知识。