第2章 应用MATLAB建立控制系统模型

上传人:re****.1 文档编号:507601711 上传时间:2022-09-10 格式:DOCX 页数:16 大小:254.73KB
返回 下载 相关 举报
第2章 应用MATLAB建立控制系统模型_第1页
第1页 / 共16页
第2章 应用MATLAB建立控制系统模型_第2页
第2页 / 共16页
第2章 应用MATLAB建立控制系统模型_第3页
第3页 / 共16页
第2章 应用MATLAB建立控制系统模型_第4页
第4页 / 共16页
第2章 应用MATLAB建立控制系统模型_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《第2章 应用MATLAB建立控制系统模型》由会员分享,可在线阅读,更多相关《第2章 应用MATLAB建立控制系统模型(16页珍藏版)》请在金锄头文库上搜索。

1、第2章应用MATLAB建立控制系统模型MATLAB是国际控制界目前使用最广的工具软件,几乎所有的控制理论与应用分支中都 有MATLAB工具箱。本节结合前面所学自控理论的基本内容,采用控制系统工具箱(Control Systems Toolbox)和仿真环境(Simulink),学习 MATLAB 的应用。一、MATLAB在控制系统微分方程中的应用111物理系统的微分方程利用机械学、电学、流体力学和热力学等的物理规律,我们可以得到物理系统的动态 方程。它们通常用常系数线性微分方程来描述。1.1.2数值解通过拉普拉斯变换和反变换,可得到线性时不变方程的解析解,也可用状态转移矩阵 (t)求解。这些分

2、析方法通常只限于常系数的线性微分方程。解析解是精确的,然而通常寻 找解析解是困难的,甚至是不可能的。而数值分析方法直接在时域里求解微分方程,不仅适 用于线性时不变方程,也适用于非线性以及时变微分方程。MATLAB提供了两个求微分方程数值解的函数,它们采用龙格-库塔(Runge-kutta)法。 Ode23和ode45分别表示采用2阶和4阶龙格-库塔公式,后者具有更高的精度。n阶微分方程必须化为n个首1的一阶微分方程组,且放入M-文件中,以便返回方程 状态变量的导数,下面的例子介绍这些函数的用法。例1.1对图1-1的机械系统,已知三个量一一拉力、摩擦力、以及弹簧力都影响质量 M的加速度。型-1利

3、用牛顿运动定理,建立系统的力平衡方程式d2xdxM + B + Kx 二 f(t)d t dt2人dx令 x 二 x,x 二 ,有12 dtdx1 = xdt 2设质量M=1kg,摩擦系数B=5N/m/sec,弹簧常数K=25N/m。在t=0时刻,施加25N的 拉力。上述方程及已知量在M-文件mechsys.m中定义如下:function xdot=mechsys(t, x);F=25;M=1;B=5;K=25;xdot=x(2);1/M*(F-B*x(2)-K*x(1);F面的M-文件使用ode23对系统在零初始条件下进行仿真:t0=0;tfinal=3;x0=0,0; tol=0.001;

4、trace=0;%时间间隔03秒%零初始条件%精度%如果非零,则打印出每一步的计算值t, x=ode23(mechsys,t0,tfinal,x0,tol,trace) subplot(211),plot(t, x);title (Time response of mechanical translational system5)xlabel (Time-sec)text (2,1.2, displacement)text (2,.2,veloclty)d=x(:,1);v=x(:,2); subplot(212),plot(d,v);title (velocity versus displa

5、cement)xlabel (displacement)ylabel (velocity)00.511.522.53Time-sec3210-1图1-2例1.2 电路图见图1-3。R=1.4Q, L=2H, C=0.32F。初始状态:电感电流为零,电容 电压为0.5Vt = 0时刻接入1伏的电压。求0vtv15秒时i(t)和v(t)的值,并且画出电流与 电容电压的关系曲线。根据基尔霍夫定律RLC 有:subplot(111) 仿真结果如图Ve=1vVo (t)Ri + Ldi + v 二 v dt 0x 二 v ,x 二 i1 0 2X 二 (v - x - Rx )2 L s 12以上方程式

6、在M-文件electsys.m中定义如下: function xdot=electsys(t, x); %状态导数V=1;%阶跃输入R=1.4; L=2; C=0.32;xdot=x(2)/C;1/L*(V-x(1)-R*x(2);下面的M-文件使用函数ode23对系统进行仿真。 t0=0;tfinal=15;* 时间间隔 015 秒x0=0.5,0;%初值条件 x1=0.5,x2=0tol=0.001;%精度trace=0;%若非零值则打印出每一步的计算值t, x=ode23(electsys,t0,tfinal,x0,tol,trace); subplot(211), plot(t, x)

7、;title(Time response of a RLC series circuit) xlabel(Time-sec)text(8,1.05,Capacitor voltage),text(8,0.05,current) vc=x(:,1),i=x(:,2);subplot(212),plot(vc, i);title(current versus capacitor voltage) xlabel(Capacitor Voltage) ylabel(current)subplot(111)仿真结果见图1-4。Time-secCapacitor Voltage 图1-4113非线性系统在

8、变量的一定范围内大多数物理系统是线性的。然而,随着变量范围的延伸,所有的系统最终都是非线性的。对于非线性系统,叠加原理不再成立Ode23和ode45可以求解非线 性微分方程,见例1-3。mg图1-5例1.3图1-5的单摆,一长L米的无重量绳悬挂重为W=mg千克 的物体,阻尼系数为B千克/米/秒。通常,该系统用线性微分方程近似描 述,实际上它是非线性的。如果8为绳的倾角,物体的速度将为L0,那么离心力为F 二一Wsin 0 BL0根据牛顿定理有F 二 mL 0联结上两式,得mL 0 + BL 0 + Wsin 0 二 0令 x =0,x =0 得1 2. B W .x =x 一 sinx2 m

9、2 mL 1%状态导数上面方程式在M-文件pendulum.m中定义如下: function xdot=pendulum(t, x);W=2; L=.6; B=0.02; g=9.81; m=W/g; xdot=x(2); -B/m*x(2)-W/(m*L)*sin(x(1);%时间间隔05秒%初始条件X=1,x2=0%精度,不打印每一步的计算值下面的M-文件对系统进行仿真。t0=0; tfinal=5;x0=1,0;tol=0.0001; trace=0;t, x=ode23(pendulum,t0,tfinal,x0,tol,trace);subplot(211),plot(t, x)ti

10、tle(Time response of a rigid pendulum),xlabel(Time-sec)text(3.2,3.5,Velocity),text(3.2,1.2,Angle-Rad) th=x(:,1);w=x(:,2);subplot(212),plot(th, w)title(Phase plane plot of pendulum) xlabel(Position-Rad),ylabel(Angular velocity) subplot(111)仿真结果见图1-6。-44-1-0.8-0.6-0.4-0.200.20.40.60.81Position-Rad00.5

11、11.522.533.544.55Time-secPhase plane plot of pendulum2 0 2-y m fie LrKuan-4图1-6二、用MATLAB建立控制系统模型MATLAB是基于数学模型分析控制系统性能的功能强大的软件工具。由于微分方程与传 递函数的模型参数完全一致,在MATLAB中只需要用传递函数描述,这里介绍用MATLAB及 Simulink建立不同形式的传递函数模型,进行不同形式传递函数之间的转换。1 有理函数模型线性系统的传递函数模型可一般地表示为:b sm + b sm-1 hf b s + b(1)G (s)二 T2mm+1sn + a sn-i f

12、f a s + a1n-1n将系统的分子和分母多项式的系数按降幕的方式以向量的形式输入给两个变量num和 den,就可以轻易地将传递函数模型输入到MATLAB环境中。命令格式为:(2)num = b , b,,b , b ;12m m+1den = 1, a , a,,a , a ;1 2n-1n在MATLAB控制系统工具箱中,定义了 tf()函数,它可由传递函数分子分母给出的变 量构造出单个的传递函数对象。从而使得系统模型的输入和处理更加方便。该函数的调用格式为:例2.1G=tf(num, den);(4)一个简单的传递函数模型:s + 5G (s)二s 4 + 2 s 3 + 3s 2 +

13、 4s + 5可以由下面的命令输入到MATLAB工作空间中去。 num=1, 5;den=1, 2, 3, 4, 5;G二tf(num, den)运行结果:Transfer function:s 4 + 2s 3 + 3s 2 + 4s + 5这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。 例2.2 一个稍微复杂一些的传递函数模型:G (s) =6( s + 5)(s 2 + 3s + 1)2( s + 6)该传递函数模型可以通过下面的语句输入到MATLAB工作空间。 num=6*1, 5;den=conv(conv(1, 3, 1, 1, 3, 1), 1, 6); tf

14、( num,den)运行结果Transfer function:6 s + 30s 5 + 12 s 4 + 47 s 3 + 72 s 2 + 37 s + 6其中conv ()函数(标准的MATLAB函数)用来计算两个向量的卷积,多项式乘法当然也 可以用这个函数来计算。该函数允许任意地多层嵌套,从而表示复杂的计算。2. 零极点模型线性系统的传递函数还可以写成极点的形式:(s + z )(s + z )(s + z )12m(s + p )(s + p )(s + p )12n将系统增益、零点和极点以向量的形式输入给三个变量KGain、Z和P,就可以将系统的零 极点模型输入到MATLAB工作空间中,命令格式为:KGain = K;Z = z ; Z Z ;(7)12mP 二P ; P ; ; P ;(8)12n在MATLAB控制工具箱中,定义了 zpk()函数,由它可通过以上三个MATLAB变量构造出 零极点对象,用于简单地表述零极点模型。该函数的调用格式为:G=zpk(Z,P,KGain)(9)例2.3某系统的零极点模型为:G( _ 6(s +1.9294)(s + 0.0353 土 0.9287 j)s _ (s + 0.9567 1.2272

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号