第五节 应用 MATLAB控制糸统仿真
第五节 应用MATLAB控制系统仿真
提纲 冷一、弹簧-重物-阻尼器系统 冷二、传递函数 冷三、结构图模型
提纲 ❖一、弹簧-重物-阻尼器系统 ❖二、传递函数 ❖三、结构图模型
引言 MATLAB是一套高性能的数值计算和可视化软件, 它集数值分析、矩阵运算和图形显示于一体,构成了 个方便的界面友好的用户环境。 控制系统的分析与设计方法,都是以数学模型为基 础进行的。 MATLAB可以用于以传递函数形式描述的 控制系统 在本节中,首先举例说明如何使用 MATLAB进行辅助 分析。然后讨论传递函数和结构图
引言 MATLAB是一套高性能的数值计算和可视化软件, 它集数值分析、矩阵运算和图形显示于一体,构成了 一个方便的界面友好的用户环境。 控制系统的分析与设计方法,都是以数学模型为基 础进行的。MATLAB可以用于以传递函数形式描述的 控制系统。 在本节中,首先举例说明如何使用MATLAB进行辅助 分析。然后讨论传递函数和结构图
、弹簧-重物咀阻尼器系统 弹簧一重物阻尼器动力学系统如图2-所示。重物M的位 移由v(1)表示,用微分方程描述如下 d y(t),n dy(t dt 2 +ky(t=f( dt 该系统在初始位移作用下的瞬态响应为: yo i-s- e a sino, i-s i+0) 其中θ=cosl,初始位移是υ(0) 系统的瞬态响应当<1时为欠阻尼,当21时为过阻尼, 当2=1时为临界阻尼
一、弹簧-重物-阻尼器系统 弹簧—重物—阻尼器动力学系统如图2-1所示。重物M的位 移由y(t)表示,用微分方程描述如下: 2 2 d ( ) d ( ) ( ) ( ) d d y t y t M B Ky t f t t t + + = 该系统在初始位移作用下的瞬态响应为: 2 2 (0) ( ) sin( 1 ) 1 n t n y y t e t − = − + − 其中 =cos-1 ,初始位移是y(0)。 系统的瞬态响应当<1时为欠阻尼,当>1时为过阻尼, 当=1时为临界阻尼
过阻尼情况:y(0)=0.15m,=2(弧度秒) B 2 欠阻尼情况:y0)=0.15mO,=√2(弧度/秒 K √2 M 利用 MATLAB程序— -unforced m,可以显示初始位移为y(0) 的物体自由运动曲线,如图2-63所示。 在 unforced. m程序中,变量y(0),on,t,51和2的值由指令 直接输入工作区,然后运行 unforced n程序就可以产生响应曲 线
过阻尼情况:y(0)=0.15 m n = (弧度/秒) ( ) 欠阻尼情况:y(0)=0.15 m n = (弧度/秒) ( ) 2 1 3 2 2 = 2 , 3 K B M M = = 2 2 1 2 2 = 2 , 1 K B M M = = 利用MATLAB程序—unforced.m,可以显示初始位移为y(0) 的物体自由运动曲线,如图2-63所示。 在unforced.m程序中,变量y(0),n,t, 1和 2的值由指令 直接输入工作区,然后运行unforced.m程序就可以产生响应曲 线
0=0.15;wn=sqrt(2); zeta=3/(2*sqrt(2)); zeta2=1/(2*sqrt(2)) >t[0:0.1:10] >>unforced (a) MATLAB指令窗口
>>y0=0.15;wn=sqrt(2); >>zeta1=3/(2*sqrt(2)); zeta2=1/(2*sqrt(2)); >>t=[0:0.1:10]; >>unforced (a)MATLAB指令窗口
*计算系统在给定初始条件下的自由运动 tI=acos(zetal)*ones(1, length(t) t2=acos(zeta2)*ones(1, length(t) c1=(y0/sqrt(1-zeta1 2)); c2=(yO/sqrt(1-zeta2/ 2) y1=cl*exp(-zetalwn*tsin(wnsqrt(l-zeta1n2)*t+tD: y2=C2* exp(-zeta2 wn*t)sin(wn*sqrt(l-zeta2 2)*t+t2) *计算运动曲线的包络线 buF=c2*exp(-zeta2*wnt); bl=-bu *画图 plot(t,yl 12,-,t,bu,-3.bl,-)2grid xlabel( Time[sec]), ylabel(y(t)Displacement[m] text(0. 2, 0.85,overdamped zetal=,, num2str(zetal),) text(0. 2,0.80,underdamped zeta=,,num2str(zeta2),) (b)分析弹簧一重物阻尼器的 MATLAB程序 unforced n 图2-63分析弹簧一重物一阻尼器的 MATLAB指令
* 计算系统在给定初始条件下的自由运动 t1=acos(zeta1)*ones(1,length(t)); t2=acos(zeta2)*ones(1,length(t)); c1=(y0/sqrt(1-zeta1^2)); c2=(y0/sqrt(1-zeta2^2)); y1=c1*exp(-zeta1*wn*t)sin(wn*sqrt(1-zeta1^2)*t+t1); y2=c2*exp(-zeta2*wn*t)sin(wn*sqrt(1-zeta2^2)*t+t2); * 计算运动曲线的包络线 bu=c2*exp(-zeta2*wn*t);bl=-bu; * 画图 plot(t,y1, ‘-’,t,y2,‘-’,t,bu, ‘--’,bl, ‘--’),grid xlabel(‘Time[sec]’), ylabel(‘y(t) Displacement[m]’) text(0.2,0.85,[‘oeverdamped zeta1=’,num2str(zeta1),] ) text(0.2,0.80,[‘underdamped zeta2=’,num2str(zeta2),] ) (b)分析弹簧—重物—阻尼器的MATLAB程序unforced.m 图2-63 分析弹簧—重物—阻尼器的MATLAB指令
在欠阻尼和过阻尼情况下的响应曲线如图2-64所示: y(o)eyx--oeverdamped metal=1.0610 复0.1 fl-s. -underdamped zeta2=0.3536 白-0.1 10 T orelse 图2-64弹簧重物一阻尼器的自由运动曲线 MATLAB可分析以传递函数形式描述的系统。分子多项式和 分母多项式都必须在 MATLAB指令中指定
图2-64 弹簧—重物—阻尼器的自由运动曲线 在欠阻尼和过阻尼情况下的响应曲线如图2-64所示 : MATLAB可分析以传递函数形式描述的系统。分子多项式和 分母多项式都必须在MATLAB指令中指定
在 MATLAB中多项式由行向量组成,这些行向量包含了降次 排列的多项式系数。例如多项式p(s)=1s3+32+0s1+4sy,按图265 的格式输入p=[1304], >p=[1304] ots(p) -3.3553e+00 7765e-01+1.0773e+00i 1.7765-01-1.0773e+00j p-poly(r) 1.0003.0000.000-0.000j4.000+0.0001 图265输入多项式并求根
在MATLAB中多项式由行向量组成,这些行向量包含了降次 排列的多项式系数。例如多项式p(s)=1s 3+3s 2+0s 1+4s 0,按图2-65 的格式输入p=[1 3 0 4], >>p=[1 3 0 4]; >>r=roots(p) r= -3.3553e+00 1.7765e-01+1.0773e+00j 1.7765e-01-1.0773e+00j >>p=poly(r) p= 1.000 3.000 0.000-0.000j 4.000+0.000j 图2-65 输入多项式并求根
矩阵乘法由 MATLAB的conO函数完成。把两个多项式相乘 合并成一个多项式m(s),即: ()=(32+2s+1)(s+4)=3s3+142+9s+4 与此运算相关的 MATLAB函数就是 convO。函数 polyvalo用来计 算多项式的值。多项式n()在s=-5处值为n(-5)=66,见图266 >>p=[321];q=[14] >n=conv(p, q 31494 value=polyval(n-5) value- 66 图266 MATLABI的 convo函数和 polygala函数
矩阵乘法由MATLAB的conv()函数完成。把两个多项式相乘 合并成一个多项式n(s),即: n(s)= (3s 2 +2s +1) (s +4) = 3s 3 +14s 2 +9s +4 与此运算相关的MATLAB函数就是conv()。函数polyval()用来计 算多项式的值。多项式n(s)在s = -5处值为n (-5) = -66,见图2-66。 >>p=[3 2 1];q=[1 4]; >>n=conv(p,q) n= 3 14 9 4 >>value=polyval(n,-5) value= -66 图2-66 MATLAB的conv()函数和polyval()函数