Matlab控制系统仿真(1)
控制系统MATLAB仿真基础

系统仿真§ 4.1控制系统的数学模型1、传递函数模型(tranfer function)2、零极点增益模型(zero-pole-gain)3、状态空间模型(state-space)4、动态结构图(Simulink结构图)一、传递函数模型(transfer fcn-----tf)1、传递函数模型的形式传函定义:在零初始条件下,系统输出量的拉氏变换C(S)与输入量的拉氏变换R(S)之比。
C(S) b1S m+b2S m-1+…+b mG(S)=----------- =- --------------------------------R(S) a1S n + a2S n-1 +…+ a nnum(S)= ------------den(S)2、在MATLAB命令中的输入形式在MATLAB环境中,可直接用分子分母多项式系数构成的两个向量num、den表示系统: num = [b1, b2, ..., b m];den = [a1, a2, ..., a n];注:1)将系统的分子分母多项式的系数按降幂的方式以向量的形式输入两个变量,中间缺项的用0补齐,不能遗漏。
2)num、den是任意两个变量名,用户可以用其他任意的变量名来输入系数向量。
3)当系统种含有几个传函时,输入MATLAB命令状态下可用n1,d1;n2,d2…….。
4)给变量num,den赋值时用的是方括号;方括号内每个系数分隔开用空格或逗号;num,den方括号间用的是分号。
3、函数命令tf( )在MATLAB中,用函数命令tf( )来建立控制系统的传函模型,或者将零极点增益模型、状态空间模型转换为传函模型。
tf( )函数命令的调用格式为:圆括号中的逗号不能用空格来代替sys = tf ( num, den ) [G= tf ( num, den )]其中,函数的返回变量sys或G 为连续系统的传函模型;函数输入参量num和den分别为系统的分子分母多项式的系数向量。
MATLAB自动控制系统仿真simulink

目录1 绪论 (1)1.1 题目背景、研究意义 (1)1.2 国内外相关研究情况 (1)2 自动控制概述 (3)2.1 自动控制概念 (3)2.2 自动控制系统的分类 (4)2.3 对控制系统的性能要求 (5)2.4 典型环节 (6)3 MATLAB仿真软件的应用 (10)3.1 MATLAB的基本介绍 (10)3.2 MATLAB的仿真 (10)3.3 控制系统的动态仿真 (11)4 自动控制系统仿真 (14)4.1 直线一级倒立摆系统的建模及仿真 (14)4.1.1 系统组成 (14)4.1.2 模型的建立 (14)4.1.3 PID控制器的设计 (20)4.1.4 PID控制器MATLAB仿真 (22)4.2 三容水箱的建模及仿真 (24)4.2.1 建立三容水箱的数学模型 (24)4.2.2 系统校正 (25)总结 (28)致谢 (29)参考文献 (30)1 绪论1.1 题目背景、研究意义MATLAB语言是当今国际控制界最为流行的控制系统计算机辅助设计语言,它的出现为控制系统的计算机辅助分析和设计带来了全新的手段。
其中图形交互式的模型输入计算机仿真环境SIMULINK,为MATLAB应用的进一步推广起到了积极的推动作用。
现在,MATLAB语言已经风靡全世界,成为控制系统CAD领域最普及、也是最受欢迎的软件环境。
随着计算机技术的发展和应用,自动控制理论和技术在宇航、机器人控制、导弹制导及核动力等高新技术领域中的应用也愈来愈深入广泛。
不仅如此,自动控制技术的应用范围现在已扩展到生物、医学、环境、经济管理和其它许多社会生活领域中,成为现代社会生活中不可缺少的一部分。
随着时代进步和人们生活水平的提高,在人类探知未来,认识和改造自然,建设高度文明和发达社会的活动中,自动控制理论和技术必将进一步发挥更加重要的作用。
作为一个工程技术人员,了解和掌握自动控制的有关知识是十分必要的。
自动控制技术的应用不仅使生产过程实现了自动化,极大地提高了劳动生产率,而且减轻了人的劳动强度。
自动控制原理MATLAB仿真实验报告

实验一 MATLAB 及仿真实验(控制系统的时域分析)一、实验目的学习利用MATLAB 进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、预习要点1、 系统的典型响应有哪些2、 如何判断系统稳定性3、 系统的动态性能指标有哪些 三、实验方法(一) 四种典型响应1、 阶跃响应:阶跃响应常用格式:1、)(sys step ;其中sys 可以为连续系统,也可为离散系统。
2、),(Tn sys step ;表示时间范围0---Tn 。
3、),(T sys step ;表示时间范围向量T 指定。
4、),(T sys step Y =;可详细了解某段时间的输入、输出情况。
2、 脉冲响应:脉冲函数在数学上的精确定义:0,0)(1)(0〉==⎰∞t x f dx x f其拉氏变换为:)()()()(1)(s G s f s G s Y s f ===所以脉冲响应即为传函的反拉氏变换。
脉冲响应函数常用格式: ① )(sys impulse ; ②);,();,(T sys impulse Tn sys impulse③ ),(T sys impulse Y =(二) 分析系统稳定性 有以下三种方法:1、 利用pzmap 绘制连续系统的零极点图;2、 利用tf2zp 求出系统零极点;3、 利用roots 求分母多项式的根来确定系统的极点 (三) 系统的动态特性分析Matlab 提供了求取连续系统的单位阶跃响应函数step 、单位脉冲响应函数impulse 、零输入响应函数initial 以及任意输入下的仿真函数lsim.四、实验内容 (一) 稳定性1. 系统传函为()27243645232345234+++++++++=s s s s s s s s s s G ,试判断其稳定性2. 用Matlab 求出253722)(2342++++++=s s s s s s s G 的极点。
%Matlab 计算程序num=[3 2 5 4 6];den=[1 3 4 2 7 2];G=tf(num,den);pzmap(G);p=roots(den)运行结果: p =+ - + -P ole-Zero MapReal AxisI m a g i n a r y A x i s-2-1.5-1-0.500.5-1.5-1-0.50.511.5图1-1 零极点分布图由计算结果可知,该系统的2个极点具有正实部,故系统不稳定。
基于MATLAB控制系统仿真实验报告

tf 4
y0
0 1
6、求出 G1(s)
2 (s2 2s 1) 与 G2 (s)
1 (2s3
3s2
1)
的单位阶跃响应,并分别
求出状态空间模型。
解:(1) G1(s) 2 (s2 2s 1) 的状态空间模型求解如下:
function shiyan2 b1=[2];
D(z)
0.62(1 0.136z 1)(1 0.183z (1 0.045z 1)(1 0.53z 1)
1 )
分别用仿真算法得到系统在单位阶跃输入作用下的响应,系统在单位速度输
入是的输出响应。
解:(1)首先将 W1(s)转换为 W1(z),采样周期 T=0.2s,程序清单如下: function shiyan42 num=[10];den=[0.005 0.15 1 0]; ts=0.2;[nc,dc]=c2dm(num,den,ts)
INTRO(注意:intro 为一个用 MATLAB 语言编写的幻灯片程序,主要演示
常用的 MATLAB 语句运行结果。)
然后,根据现实出来的幻灯片右面按钮进行操作,可按 START——NEXT—
—NEXT 按钮一步步运行,观察。
3、自编程序并完成上机编辑,调试,运行,存盘:
(1)用 MATLAB 命令完成矩阵的各种运算,例如:
5、利用 ode23 或 ode45 求解线性时不变系统微分方程 y(t) Ay(t) ,并绘制出 y(t)
曲线,式中
A
0.5
1
1 0.5
t t0 t 如下: function xdot=fun21(t,x) A=[-0.5 1;-1 -0.5]; xdot=A*x; function fzsy22 t0=0;tf=4;tol=1e-6; x0=[0;1];trace=1; [t,x]=ode23('fun21',t0,tf,x0,tol,trace); plot(t,x) 得到的实验结果如下图所示:
基于MATLAB控制系统的仿真与应用毕业设计论文

基于MATLAB控制系统的仿真与应用毕业设计论文目录一、内容概括 (2)1. 研究背景和意义 (3)2. 国内外研究现状 (4)3. 研究目的和内容 (5)二、MATLAB控制系统仿真基础 (7)三、控制系统建模 (8)1. 控制系统模型概述 (10)2. MATLAB建模方法 (11)3. 系统模型的验证与校正 (12)四、控制系统性能分析 (14)1. 稳定性分析 (14)2. 响应性能分析 (16)3. 误差性能分析 (17)五、基于MATLAB控制系统的设计与应用实例分析 (19)1. 控制系统设计要求与方案选择 (20)2. 基于MATLAB的控制系统设计流程 (22)3. 实例一 (23)4. 实例二 (25)六、优化算法在控制系统中的应用及MATLAB实现 (26)1. 优化算法概述及其在控制系统中的应用价值 (28)2. 优化算法介绍及MATLAB实现方法 (29)3. 基于MATLAB的优化算法在控制系统中的实践应用案例及分析对比研究31一、内容概括本论文旨在探讨基于MATLAB控制系统的仿真与应用,通过对控制系统进行深入的理论分析和实际应用研究,提出一种有效的控制系统设计方案,并通过实验验证其正确性和有效性。
本文对控制系统的基本理论进行了详细的阐述,包括控制系统的定义、分类、性能指标以及设计方法。
我们以一个具体的控制系统为例,对其进行分析和设计。
在这个过程中,我们运用MATLAB软件作为主要的仿真工具,对控制系统的稳定性、动态响应、鲁棒性等方面进行了全面的仿真分析。
在完成理论分析和实际设计之后,我们进一步研究了基于MATLAB 的控制系统仿真方法。
通过对仿真模型的建立、仿真参数的选择以及仿真结果的分析,我们提出了一种高效的仿真策略。
我们将所设计的控制系统应用于实际场景中,通过实验数据验证了所提出方案的有效性和可行性。
本论文通过理论与实践相结合的方法,深入探讨了基于MATLAB 控制系统的仿真与应用。
控制系统Matlab仿真 (传递函数)

控制系统仿真[教学目的]掌握数字仿真基本原理控制系统的数学模型建立掌握控制系统分析[教学内容]一、控制系统的数学模型sys=tf(num,den) %多项式模型,num为分子多项式的系数向量,den为分母多项式的系%数向量,函数tf()创建一个TF模型对象。
sys=zpk(z,p,k) %z为系统的零点向量,p为系统的极点向量,k为增益值,函数zpk()创建一个ZPK模型对象。
(一)控制系统的参数模型1、TF模型传递函数num=[b m b m-1 b m-2…b1 b0]den=[a m a m-1 a m-2…a1 a0]sys=tf(num,den)【例1】系统的传递函数为。
>>num=[0 1 12 44 48];>>den=[1 16 86 176 105];>>sys=tf(num,den);>>sysTransfer function:s^3 + 12 s^2 + 44 s + 48-------------------------------------s^4 + 16 s^3 + 86 s^2 + 176 s + 105>>get(sys)>>set(sys)>>set(sys,'num',[2 1 2])>> sysTransfer function:2 s^2 + s + 2-------------------------------------s^4 + 16 s^3 + 86 s^2 + 176 s + 105【例2】系统的传递函数为。
>>num=conv([20],[1 1]);>>numnum =20 20>>den=conv([1 0 0],conv([1 2],[1 6 10]));>>sys=tf(num,den)Transfer function:20 s + 20-------------------------------s^5 + 8 s^4 + 22 s^3 + 20 s^2【例3】系统的开环传递函数为,写出单位负反馈时闭环传递函数的TF模型。
MATLAB控制系统各种仿真例题(包括simulink解法)

一、 控制系统的模型与转换1. 请将下面的传递函数模型输入到matlab 环境。
]52)1)[(2(24)(32233++++++=s s s s s s s G )99.02.0)(1(568.0)(22+--+=z z z z z H ,T=0.1s >> s=tf('s');G=(s^3+4*s+2)/(s^3*(s^2+2)*((s^2+1)^3+2*s+5));GTransfer function:s^3 + 4 s + 2------------------------------------------------------s^11 + 5 s^9 + 9 s^7 + 2 s^6 + 12 s^5 + 4 s^4 + 12 s^3>> num=[1 0 0.56];den=conv([1 -1],[1 -0.2 0.99]);H=tf(num,den,'Ts',0.1)Transfer function:z^2 + 0.56-----------------------------z^3 - 1.2 z^2 + 1.19 z - 0.992. 请将下面的零极点模型输入到matlab 环境。
请求出上述模型的零极点,并绘制其位置。
)1)(6)(5()1)(1(8)(22+++-+++=s s s s j s j s s G )2.8()6.2)(2.3()(1511-++=----z z z z z H ,T=0.05s>>z=[-1-j -1+j];p=[0 0 -5 -6 -j j];G=zpk(z,p,8)Zero/pole/gain:8 (s^2 + 2s + 2)--------------------------s^2 (s+5) (s+6) (s^2 + 1)>>pzmap(G)>> z=[0 0 0 0 0 -1/3.2 -1/2.6];p=[1/8.2];H=zpk(z,p,1,'Ts',0.05)Zero/pole/gain:z^5 (z+0.3125) (z+0.3846)-------------------------(z-0.122)Sampling time: 0.05>>pzmap (H )num=[0,7.1570,-6.4875 ];den=[1,-2.2326,1.7641,-0.4966];sysd=tf(num,den,0.05,'variable','z^-1')Transfer function:7.157 z^-1 - 6.487 z^-2-----------------------------------------1 - 2.233 z^-1 + 1.764 z^-2 - 0.4966 z^-3Sampling time: 0.05二、 线性系统分析1. 请分析下面传递函数模型的稳定性。
基于MATLAB的控制系统仿真及应用 (1)

基于MATLAB的控制系统仿真及应用
Matlab Based Control System Simulation and its Applications
张聚 王万良
编著 主审
1
第一章 MATLAB应用基础
1.1 matlab简介 1.2 matlab基本使用方法
2
1.1 Matlab基本简介
9
【例1.2.3】:用冒号产生增量为1和2的行向量。
解:在命令窗口中输入:
>> a=2:8
%默认增量为1
运行结果为:
a=
2345678
在命令窗口中输入: >> a=2:2:8 %产生增量为2的行向量
运行结果为: a= 2468
10
矩阵
1 0 0 【例1.2.5】输入矩阵 A 0 1 0
0 0 1
Matlab,全称Matrix Laboratory(矩阵实验室), 是由美国The MathWorks公司于1984年推出的一种科 学与工程计算语言:
简单易用的程序语言
代码短小高效
特点和优势
功能丰富,可扩展性强
出色的图形处理能力
强大的系统仿真功能
3
matlab操作界面: 命令窗口(Command Window)
小于等于
非
表1.2.1 MATLAB运算符
8
标点符
标点符
功能
标点符
功能
:
冒号
.
小数点
;
分号,区分行及取
消运算显示
,
逗号,区分列及函
数参数分隔符()ຫໍສະໝຸດ 括号,指定运算优先级
[]
方括号,矩阵定义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一. 控制系统的模型与转换目前大多数控制系统的分析设计方法都要求系统的模型已知。
所以,控制系统的数学模型是控制系统分析和设计的基础。
获得数学模型的方法有两种:一种是从已知的物理规律出发,用数学推导的方法建立系统的数学模型,另外一种就是利用试验数据拟合。
前一种方法称为系统的物理建模方法,而后者称为系统辨识,两者各有优势和适用场合。
一般的分析研究中将控制系统分为连续系统和离散系统,描述连线性连续系统常用的方式是传递函数(传递函数矩阵)和状态空间模型,相应的离散系统可以用离散传递函数和离散状态方程表示。
各种模型之间还可以进行相互转换。
1.1连续线性系统的数学模型连续线性系统一般可以用传递函数描述,也可以用状态方程描述。
前者是经典控制的常用模型,而后者是现代控制理论的基础。
它们是描述同一个系统的不同描述方式。
除此之外,还可以用零极点的形式表示连续线性系统模型。
本章着重介绍这些数学模型,并侧重介绍这些模型在控制系统的Matlab 环境下的表示方法。
高阶线性常微分方程通常是描述线性连续系统的最传统的方法,其基本表达式为: )()()()()()()()(11111111t u b dtt du b dtt u db dtt u d b t y a dtt dy a dtt y da dtt y d m m m m mmn n n n n n++++=++++------ 其中)(t u ,)(t y 分别是控制系统的输入和输出信号,他们均是时间t 的函数,n 是系统的阶次。
利用Laplace 引入的积分变换(拉氏变换),可以在另初始条件下对该微分方程进行变换,得到控制系统的传递函数: nn n n mm m ma s a sa sb s b s b s b s G ++++++++=----1111110)( (n m ≤)传递函数的引入使得控制系统的研究变得简单,它是控制理论中线性系统模型的一种主要描述方式。
从上面的传递函数的表达式可以看出,传递函数是两个多项式的比值,在Matlab 环境下,多项式可以用向量表示。
依照Matlab 惯例,将多项式的系数按照s 的降幂次序排列,利用控制系统工具箱的tf ( )函数就可以用一个变量表示传递函数的模型:其中:前两个语句用于描述系统的分子和分母多项式,后一个语句直接产生变量G ,在Matlab 工作空间直接生成描述系统的传递函数模型。
eg1.设控制系统的传递函数为2450351024247)(23234+++++++=s s s s s s s s G ,利用下面的语句就可以轻易的将该系统的模型输入Matlab 环境:(在命令窗口执行)>> num=[1 7 24 24];den=[1 10 35 50 24];%分子多项式和分母多项式>> G=tf(num,den);%传递函数G 的获得在Matlab 提示符下键入G 或者省略最后命令中的分号,就可以显示出该数学模型 >> G结果为:Transfer function:s^3 + 7 s^2 + 24 s + 24---------------------------------s^4 + 10 s^3 + 35 s^2 + 50 s + 24也可以采用这种方法,在命令窗口键入如下命令:>> s=tf('s');%定义一个传递函数的算子,G=(s^3+7*s^2+24*s+24)/(s^4+10*s^3+35*s^2+50*s+24);%用数学表达形式直接输入系统的传递函数或者传递函数的矩阵模型>> G结果为:Transfer function:s^3 + 7 s^2 + 24 s + 24---------------------------------s^4 + 10 s^3 + 35 s^2 + 50 s + 24如果分子或者分母多项式给出的不是完全展开的形式,而是若干个因式相乘的形式,则需要将其变换为完全展开的形式,两个多项式的乘积在Matlab 环境下可以借用卷积求取函数()conv 得到:eg2. 设控制系统的传递函数为)1)(43()1()4.2(5)(222+++++=s s s s s s G ,利用下面的语句就可以轻易的将该系统的模型输入Matlab 环境:(在命令窗口执行)>> num=5*[1,2.4];%分子den=conv([1,1],conv([1,1],conv([1 3 4],[1 0 1])));%分母描述 G=tf(num,den) %显示传递函数结果为: Transfer function:5 s + 12-------------------------------------------------s^6 + 5 s^5 + 12 s^4 + 16 s^3 + 15 s^2 + 11 s + 4也可以采用这种方法,在命令窗口键入如下命令: >> s=tf('s');%定义一个传递函数的算子,G=5*(s+2.4)/((s+1)^2*(s^2+3*s+4)*(s^2+1));%用数学表达形式直接输入系统的传递函数或者传递函数的矩阵模型 >> G 结果为:Transfer function:5 s + 12-------------------------------------------------s^6 + 5 s^5 + 12 s^4 + 16 s^3 + 15 s^2 + 11 s + 4对于eg2给出的传递函数形式,可以称之为系统的零极点模型,其通式如下: )())(()())(()(2121n m p s p s p s z s z s z s Ks G ------= ,其中,K 是系统的增益,i z ,i p 分别是系统的零极点。
在Matlab 下表示系统的零极点模型的方法可以,将系统的零极点作为列向量输入到Matlab 工作空间,采用zpk ( )函数调用的形式实现:其中,前两个语句分别输入系统的零点和极点列向量,后面的语句有这些信息和系统增益构造系统的零极点模型对象G .。
对eg2给出的传递函数)1)(43()1()4.2(5)(222+++++=s s s s s s G ,建立其零极点模型如下:建立模型可以采用这种方法在命令窗口键入如下命令:>> P=[-1;-1;-1.5+1.3229i;-1.5-1.3229i;-i;i];Z=[-2.4];%零极点向量形式 >> G=zpk(Z,P ,5) %零极点模型输入结果为: Zero/pole/gain:5 (s+2.4) ----------------------------------(s+1)^2 (s^2 + 1) (s^2 + 3s + 4)还可以用pzmap(G)在复平面上显示该系统的零极点位置,如下图所示: 在命令窗口键入:>> pzmap(G)得到的结果为:其中的x 表示极点位置,o 表示零点位置。
状态空间模型是描述控制系统的另外一种重要的方式,和传递函数不同,状态空间模型可以描述更广的一类系统模型,包括非线性模型。
一般状态空间模型的形式为⎩⎨⎧+=+=)()()()()()(t Du t Cx t y t Bu t Ax t x在Matlab 下表示系统的状态模型相当直观,只需要将各个系数矩阵按照常规矩阵的方式输入到工作空间就可以了,这样系统的状态空间模型可以用下面的语句直接建立如果在构造状态模型时给出的维数不兼容,则执行ss ( )对象时给出明确的错误信息,中断程序运行。
Eg3.设某控制系统的A,B,C,D 阵分别为 ⎥⎥⎦⎤⎢⎢⎢⎣⎡---=6116100010A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=201201B ,⎥⎦⎤⎢⎣⎡--=101121C ,⎥⎦⎤⎢⎣⎡=0000D 在命令窗口输入下列命令,可以得到该双输入双输出系统的状态空间模型: >> A=[0 1 0;0 0 1; -6 -11 -6];B=[1 0;2 -1;0 2];C=[1 -1 0;2 1 -1];D=[0 0;0 0]; >> G=ss(A,B,C,D)%输入并显示系统的状态空间模型 a =x1 x2 x3 x1 0 1 0 x2 0 0 1 x3 -6 -11 -6 b =u1 u2x1 1 0x2 2 -1x3 0 2c =x1 x2 x3y1 1 -1 0y2 2 1 -1d =u1 u2y1 0 0y2 0 0Continuous-time model. >>1.2 离散系统模型离散系统通常可以用差分方程和离散传递函数描述(Z 传递函数),其通式如下:nn n n mm m ma z a za zb z b z b z b z H ++++++++=----1111110)( (n m ≤)在Matlab 语言中,输入离散系统的传递函数模型和连续系统的传递函数模型一样,需要分别按照要求输入系统的分子和分母多项式,就可以利用tf ( ) 函数将其输入到Matlab 环境中。
与连续系统的不同之处在于,离散系统的模型同时还要输入输入系统的采样周期T ,具体语句如下:H 为离散系统传递函数模型,此外,还可以仿照连续系统传递函数的算子输入方法,定义算子z=tf(‘z ’,T),则可以用数学表达式的形式输入系统的离散传递函数模型。
Eg4. 设离散系统的传递函数模型由下式表示 4723.02209.29869.3233.30889.03879.05743.03124.0)(23423+-+++++=z z z z z z z z H ,且已知系统的采样周期T=0.1s ,则将其模型输入Matlab 键入如下命令即可:>> num=[0.3124 0.5743 0.3879 0.0889];den=[1 3.223 3.9869 -2.2209 0.4723];%分子分母多项式描述 >> H=tf(num,den,'Ts',0.1) 结果为: Transfer function:0.3124 z^3 + 0.5743 z^2 + 0.3879 z + 0.0889 ----------------------------------------------z^4 + 3.223 z^3 + 3.987 z^2 - 2.221 z + 0.4723 Sampling time: 0.1离散系统的零极点位置同样可以由pzmap( ) 函数直接绘制,该函数的调用格式和连续系统一致。