资源描述
控制系统的MATLAB计算及仿真哈尔滨工业大学(威海) 信息科学与工程学院 内容提要:n 1、MATLAB的基础知识n 2、MATLAB的控制工具箱n 3、Simulink与控制系统仿真 MATLAB的基础知识n MATLAB概述n MATLAB的主要功能n MATLAB的语言规则n MATLAB的变量n MATLAB数据的输入n MATLAB的基本语句结构 n MATLAB的M-文件n MATLAB的图形可视化 MATLAB概述n Matlab=Matrix Laboratory:矩阵实验室n Matlab 语言的首创人是 C. Molern到九十年代初期,在国际上 30 几个数学类科技应用软件中, Matlab 在数值计算方面独占鳌头,而 Mathematica 和 Maple 则分居符号计算软件的前两名。 MATLAB的主要功能n数值计算功能n符号运算功能n绘图功能n编程功能n丰富的工具箱(ToolBox)n Simulink动态仿真集成环境 命令窗口当前工作目录当前工作空间输入命令的历史记录命令提示符 MATLAB的语言规则n Matlab 区分大小写,它的命令和函数全是小写的n一行可以输入几个命令,用分号“;” 或逗号“,”隔开 n续行符: “”(三个点),如果语句很长,可用续行符将一个语句写成多行。续行符的前最好留一个空格。 n注释符: “%”,其后面的内容为注释,对 Matlab 的计算不产生任何影响 MATLAB的变量n Matlab中变量名是以字母开头,可以由字母、数字或下划线组成n who,whos,clc,clearn系统预定义变量:eps, pi, Inf, NaN, i, j MATLAB数据的输入n直接输入:同一行中各元素之间用“空格”或“,” (英文状态下) 分开;行与行之间用 “;” 或“回车”分开 a=1 2 ; 3, 4 n冒号 “:” 运算符:初值 : 步长 : 终值 a=1:5, b=0:pi/4:pi n由向量或小矩阵生成:X=a ; bn交互式输入:input n=input(Please input n: ) MATLAB的基本语句结构n赋值语句q直接赋值语句:赋值变量=赋值表达式(赋值表达式后无分号“;”: 命令窗直接显示赋值结果 赋值表达式后加分号“;”:命令窗不显示结果,变量保留在workspace) q函数调用语句:返回变量列表=函数名(输入变量列表) MATLAB的基本语句结构n循环语句q for语句:for 变量=向量,循环体,end; s=0; for i=1:2:100s=s+i; end q while语句:while (条件式),循环体,end; s=0;i=1; while(i=100) s=s+i; end MATLAB的基本语句结构n跳转语句q if语句: if (条件1) 语句组1; elseif(条件2) 语句组2; else 语句组2; end MATLAB的基本语句结构n跳转语句q switch语句: case (表达式1) 语句组1; case (表达式2) 语句组2; , otherwise 语句组n; end MATLAB的M-文件n M-脚本文件n M-函数 function 返回变量列表=函数名 (输入变量列表) function a=dbness(n)a=2*n; end MATLAB的图形可视化n plot函数:1.1, 1.1, 1.1 1.11.1, 1.1xy x xx clc;x=-5:0.02:5;m,n=size(x); %返回矩阵x的维数for a=1:1:nif x(a)-1.1 y(a)=-1.1; elseif x(a)=-1.1 y(a)=x(a); else y(a)=1.1; end endplot(x,y); 内容提要:n 1、MATLAB的基础知识n 2、MATLAB的控制工具箱n 3、Simulink与控制系统仿真 内容提要:n 1、MATLAB的基础知识n 2、MATLAB的控制工具箱n 3、Simulink与控制系统仿真 MATLAB的控制工具箱n连续线性系统的数学模型n离散线性系统的数学模型n系统模型的相互转换n离散线性系统的性能分析 连续线性系统的数学模型n传递函数模型设单变量连续线性系统的传递函数为:1 1 2 11 21 2 1.( ) .m m m mn n n n nbs b s b s bG s s a s a s a s a 1 2 , 1 1 2 1num , ,., ;den 1, , ,., , ;(num,den);m mn nb b b ba a a aG tf 传递函数表示为:例:22 31sG s s num=2,3;den=1 1 1;G=tf(num,den); 连续线性系统的数学模型n传递函数模型MATLAB还支持一种特殊的传递函数的输入格式,在这样的输入方式下,应该先用s=tf(s),定义传递函数的算子,然后直接输入系统的传递函数。例: 22 31sG s s s=tf(s);G=(2*s+3)/(s2+s+1);延迟环节 :se G.ioDelay 连续线性系统的数学模型n零极点模型设单变量连续线性系统的传递函数为:例:2( 1)( 2)( 3)( 4)s sG s s s Z=-1;-2;P=0;-3;-4;G=zpk(Z,P,2)1 2 1 2( )( ).( )( ) ( )( ).( )mns z s z s zG s K s p s p s p 传递函数表示为:1 21 2 . ; . ; ; ;( , , ); ; mnZ z z zP p p pG zpk Z P Kpzmap(G):可以直接绘制传递函数的零极点分布图 连续线性系统的数学模型n状态方程模型设线性系统的状态方程为:状态方程表示为:( , , , )G ss A B C Dx(t)=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t) 离散线性系统的数学模型n传递函数模型设单变量连续线性系统的传递函数为:1 0 1 11 21 2 1.( ) .n n n nn n n n nb z b z b z bH z z a z a z a z a 0 1 1, 1 2 1num , ,., ;den 1, , ,., , ;(num,den,Ts,T);n nn nb b b ba a a aH tf 传递函数表示为:例:22 31zH z z num=2,3;den=1 1 1;H=tf(num,den,Ts,1); 离散线性系统的数学模型n传递函数模型MATLAB还支持一种特殊的传递函数的输入格式,在这样的输入方式下,应该先用z=tf(z,T),定义传递函数的算子,然后直接输入系统的传递函数。例: 22 31zH z z z=tf(z,1);H=(2*z+3)/(z2+z+1);延迟环节 :nz H.ioDelay n 离散线性系统的数学模型n零极点模型设单变量连续线性系统的传递函数为:例:2( 1)( 2)( 3)( 4)z zH z z z Z=-1;-2;P=0;-3;-4;H=zpk(Z,P,2,Ts,1)1 2 1 2( )( ).( )( ) ( )( ).( )mnz z z z z zH z K z p z p z p 传递函数表示为:1 21 2 . ; . ; ; ; ;( , , , ,; ); mnZ z z zP p p pH zpk Z P K Ts Tpzmap(G):可以直接绘制传递函数的零极点分布图 离散线性系统的数学模型n状态方程模型设线性系统的状态方程为:状态方程表示为:( , , , , , )H ss F G C D Ts T( 1)k k kk k kx =Fx( )+Gu( )y( )=Cx( )+Du( ) 系统模型的相互转换n连续模型 离散模型函数:Gz=c2d(Gs,T,参数 ) 参数:zoh:零阶保持器法 foh: 一阶保持器法 imp: 脉冲响应不变法 tustin: 双线性变换法 prewarp: 改进的双线性变化法 matched: 零极点匹配法( ) ( ) ( )hH z Z G s G s( ) ( )H z Z G s 例:1( ) , 1G s Ts 采样周期Gs=tf(1,1 0)Gz=c2d(Gs,1,zoh) 系统模型的相互转换n离散模型 连续模型函数:Gs=d2c(Gz,参数 ) 参数:zoh:零阶保持器法 tustin: 双线性变换法 prewarp: 改进的双线性变化法 matched: 零极点匹配法例:( ) , 11zG z Tz 采样周期 Gz=tf(1 0,1 -1,Ts,1);Gs=d2c(Gz,zoh); 离散线性系统的性能分析设:计算机控制系统如图所示: 0 0.1 9.1544( 0.98)( ) , ( ) , 0.2( 0.1) 0.8187zG s D z Ts s z 离散线性系统的性能分析n求系统的闭环脉冲传递函数:clear; % 清除变量num=0.1;den=1 0.1 0;G0s=tf(num,den) %G0(s)的脉冲传递函数Z=0.98;P=0.8187;K=9.1544;Dz=zpk(Z,P,K,Ts,0.2) %控制器D(z)G0z=c2d(G0s,0.2,zoh) %G0z=Z(Gh(s)*G0(s)Gz=Dz*G0z %开环脉冲传递函数 faiz=feedback(Gz,1); %闭环脉冲传递函数,1表示反馈,本题为单位负反馈 离散线性系统的性能分析n求系统的阶跃响应:step(faiz, t) %t表示仿真时间 离散线性系统的性能分析n求系统的根轨迹:rlocus(Gz) Gz表示开环脉冲传递函数 离散线性系统的性能分析n求系统的奈奎斯特图:nyquist(Gz) Gz表示开环脉冲传递函数n求系统的伯德图:bode(Gz) Gz表示开环脉冲传递函数 内容提要:n 1、MATLAB的基础知识n 2、MATLAB的控制工具箱n 3、Simulink与控制系统仿真 Simulink与控制系统仿真:n Simulink环境是系统建模、分析和仿真的理想工具,它提供的模块有一般线性、非线性系统所需的模块,也有更高级的模块,适合于系统的建模与仿真。 离散线性系统的性能分析设:计算机控制系统如图所示: 0 0.1 9.1544( 0.98)( ) , ( ) , 0.2( 0.1) 0.8187zG s D z Ts s z 脱离工具箱,直接利用差分方程编程( ) ( ) ( )e k r k y k 119.1544( 0.98) 9.1544(1 0.98 ) ( )( ) 0.8187 1 0.8187 ( )z z U zD z z z E z ( ) 0.8187 ( 1) 9.1544 ( ) 9.1544*0.98 ( 1)( ) 0.8187 ( 1) 9.1544 ( ) 9.1544*0.98 ( 1)u k u k e k e ku k u k e k e k 1 20 2 1 20.001987 0.001974 0.001987 0.001974 ( )( ) 1.98 0.9802 1 1.98 0.9802 ( )h z z z Y zG G z z z z z U z ( ) 1.98 ( 1) 0.9802 ( 2)0.001987 ( 1) 0.001974 ( 2)y k y k y ku k u k 脱离工具箱,直接利用差分方程编程clear;clc;error_1=0; %e(k-1)=0u_1=0; %u(k-1)=0u_2=0; %u(k-2)=0y_1=0; %y(k-1)=0for k=1:100 y(1)=0; r(k)=1; error(k)=r(k)-y(k); u(k)=0.8187*u_1+9.1544*error(k)-9.1544*0.98*error_1; y(k+1)=1.98*y(k)-0.9802*y_1+0.001987*u(k)+0.001974*u_1; y_1=y(k); error_1=error(k); u_2=u_1; u_1=u(k);endplot(y);
展开阅读全文