《自动控制原理 第3版 教学课件 ppt 作者 孙炳达 第9章》由会员分享,可在线阅读,更多相关《自动控制原理 第3版 教学课件 ppt 作者 孙炳达 第9章(75页珍藏版)》请在金锄头文库上搜索。
1、第九章 MATLAB在控制原理中 的应用,9.1 MATLAB软件界面 9.2 MATLAB程序基础 9.3 Simulink操作简介 9.4 线性控制系统仿真 9.5非线性控制系统仿真 9.6离散控制系统仿真,MATLAB简介: MATLAB是矩阵实验室(Matrix Laboratory)的简称,美国MathWorks公司出品的数学软件。 MATLAB软件主要包括MATLAB和Simulink两大部分:MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境;Simulink 是一个用于对动态系统进行多域建模和模型设计的平台,它提供了一个交互式图形环境
2、,以及丰富的模块库,并可针对特定应用加以扩展。 经典控制理论中,可利用MATLAB提供的资源来构建各类系统的数学模型,进行系统的设计、系统的性能分析和仿真实验研究。,9.1 MATLAB软件界面 一、 MATLAB主操作界面,二、常用的工具栏图标和菜单 工具栏中Simulink启动图标可启动Simulink,当前目录指示器显示当前的工作目录,目录设置按钮可以设置当前工作目录.,三、界面窗口 1、当前目录浏览器窗口(Current Directory) 浏览MATLAB软件当前工作目录的文件。 2、工作空间窗口(Work space) 显示当前工作空间中的变量,可以显示每个变量的名称(Name)
3、、值(value)、数组大小(size)、字节大小(bytes)和类型(class)。 双击变量将在界面右上方弹出矩阵编辑器(Array editor) 。 3、历史命令窗口(Command History) 历史命令窗口显示记录的MATLAB软件启动时间,和启动后命令窗口(Command Window)输入的所有MATLAB命令/函数。 4、命令窗口(Command Window) MATLAB软件操作最主要的窗口,用于输入命令和数据、运行MATLAB函数和程序并显示结果; 命令窗口的提示符为“” ; 命令窗口显示的数值格式默认为短格式(format short) 。,9.2 MATLAB程
4、序基础 一、MATLAB的变量 赋值语句格式: 变量名=值或表达式 变量被赋值后在工作空间 (Work space) 显示。赋值语句后可以不带 “;”或带“;”,不带“;”的含义是在命令窗口显示赋值的结果,带“;”则不显示。 例9-1:为变量 a 赋值行向量 1 2 ,分别不带 “;”或带“;”。 解: a= 1 2 %显示赋值结果 a = 1 2 a= 1 2 ; %不显示结果 ,ans是MATLAB的默认变量,为answer的缩写。当某个表达式或函数没有指定赋值变量时,MATLAB把结果赋值给ans。 MATLAB的保留变量应尽量避免重新赋值。 MATLAB常用的保留变量: i, j 虚部
5、单位,即i=sqrt(-1); pi 圆周率(浮点); eps 浮点运算误差限 2.220410-16,当计算结果小于eps时,作为0处理; inf/Inf 无穷大; NaN不定式,表示0/0, /等无法确定的值。,二、MATLAB命令/函数的基本语法 命令/函数调用格式: 返回参数列表命令/函数名(输入参数列表) 命令/函数的用法、输入参数和返回参数,均能通过帮助菜单HELP查询,也可以直接在命令窗口输入“help 命令/函数名”进行查询。 多个命令/函数输入时,相互间可以用“,”或“;”隔开。 例9-3: 用多项式相乘函数conv()计算多项式s+1和s+2之积,并把结果赋值变量a。 解:
6、 a=conv(1 1,1 2) a = 1 3 2,三、常用的基本命令/函数 format short 设置数值显示格式为短格式,显示小数点后4位有效数字; format long 设置数值显示格式为长格式,双精度数显示小数点后15位有效数字,单精度显示小数点后7位有效数字; clear 清除工作空间中的变量; clr 清屏命令; who 查看工作空间中的变量名; plot(x,y) 打开一个绘图窗口绘制2维曲线,并以x为横坐标,y为纵坐标。x,y应该为维数相同的向量。,四、常用的运算符和数学函数,冒号“:”是MATLAB中比较特殊的一个运算符,表示循环。可以用“:”产生行向量。 调用格式:
7、行向量=s1:s3:s2。 s1为起始值,s2为终止值,循环步距值为s3。当s3为1时可省略,写成“行向量=s1:s2”。 例如, B=1:1:4,运算后B=1 2 3 4。 冒号运算符在矩阵运算时还可以用于矩阵剪裁。 例如,A=1 2 3,4;5,6 7 8 A(1:2,3:4)表示A矩阵第1、2行中的第3、4列元素所构成的矩阵。,常用的数学函数,五、MATLAB语言流程控制语句 1、循环语句 for . end 语句通常的调用格式为: for 循环变量=s1:s3:s2 循环体语句组 end 例9-4: 用for . end 语句计算 解:x_sum=0; for x=1:1:100 ,
8、x_sum= x_sum+x; end; x_sum x_sum = 5050 while . end 语句通常的调用格式为: while 逻辑表达式 循环体语句组 end,2、条件转移语句 if 条件式1 条件块语句组1 elseif 条件式2 条件块语句组2 . else 条件块语句组n+1 end 3、开关结构语句: switch 开关表达式 case 表达式1 语句段1 case 表达式2,表达式3,., 表达式m 语句段2 . otherwise 语句段n end,0,六、MATLAB程序的格式 MATLAB编程语言是一种解释型的程序语言,分为两种格式:(1)M脚本文件;(2)M函数
9、(Function)。 1、M脚本文件 M脚本文件没有输入和返回参数,其内容是MATLAB命令/函数的集合。 例9-6:用多项式相乘函数conv()计算多项式(s+1)4 解:Example9_6.m result=1; for x=1:4 result=conv(result,1 1); end result,2、 M函数文件(Function) M函数文件具有输入和返回参数,且其编写格式必须符合规则。M函数文件的文件名应与其函数名相同。 M函数文件格式: 函数名.m function 输出变量列表=函数名(输入变量列表) 函数体语句; 例9-7:编写多项式求正整数幂的M函数文件conv_p
10、ower.m 解:function result=conv_power(poly,pow) result=1; for (x=1:pow) result=conv(result, poly); end poly为多项式系数向量,pow为幂次数。,七、MATLAB程序的操作 1、 新建M程序 点击菜单File:New:M-file,将弹出编辑器(Editor),在编辑器中可以输入程序。在编辑器点击菜单File:Save或File:Save as,保存M文件。,2、M程序编辑、运行和调试,程序的运行方法可采用下列三种方法中的任意一种: 第一种方法,点击编辑器的菜单Debug:Run; 第二种方法,
11、在命令窗口输入该程序的文件名(后缀.m不用输入),对于M函数文件,须指定输入参数; 第三种方法,通过其他程序调用本程序。 注意:对于M函数文件,由于存在输入参数,只能通过后面两种方法运行。,9.3 Simulink操作简介 一、Simulink的启动 点击Simulink启动图标可启动Simulink;或者在命令窗口输入命令:Simulink。,Simulink启动后出现的Simulink模块库浏览器:,二、Simulink的模块库 1、信号源模块(Sources) 2、连续模块(Continuous),3、非线性模块(Discontinuous) 4、离散模块(Discrete),5、数学运
12、算模块(Math Operations)和信号连接模块(Signal Routing) 6、输出模块(Sinks),三、仿真框图绘制 例9-8:用Simulink对图9-12所示的一阶控制系统进行仿真。 解: 步骤1、建立新的空白框图 点击模块库浏览器的菜单File:New:Model,或工具栏的第1个空白文档图标“Create a new model”,将弹出1个新建模型窗口,点击模型窗口菜单File:Save或File:Save as,命名并保存模型为后缀.mdl的文件。,步骤2、放置模块,步骤3、修改模块属性,步骤3、修改模块属性,步骤4、连接模块,四、启动仿真 1、仿真参数设置 (1)
13、仿真起始、终止时间:Start time栏,Stop time栏 (2)仿真算法参数:Solver options框,(3)仿真输出数据 在仿真参数设置对话框左边的树形目录中选择Data Import/Export。,2、仿真启动、停止和错误处理 仿真的启动方法:(1)点击模型窗口菜单Simulation: Start;或(2)点击工具栏的仿真启动按钮。 仿真的停止方法:(1)点击模型窗口菜单Simulation: Stop;或(2)点击工具栏的仿真终止按钮。 仿真的错误处理方法:如果模块的设置参数、连接出现错误, 启动仿真后出现出错提示,并把出错的增益模块以黄色标识。若仿真框图中有多处错误,
14、错误提示框内将出现多行错误信息;选择了某行错误信息后,其对应的出错模块将以黄色标识。 例如,把例9-8中增益模块的增益设置为未定义的变量k,启动仿真后出现“Undefined function or variable k(函数或变量k未定义)”的出错提示。,3、查看仿真结果 例9-8的仿真框图中设置了2个输出模块。一个是输出端口模块,它把仿真结果输出到工作空间中;另一个是示波器模块。 (1)查看工作空间的输出,绘制阶跃响应曲线: plot(tout,yout) (2)查看示波器的输出,9.4 线性控制系统仿真 一、 MATLAB的线性系统数学模型 1、传递函数模型函数tf() 调用格式: sy
15、s=tf(num, den) num与den分别为传输函数分子、分母多项式的系数向量,从左至右与s值降幂对应。 例9-9:系统闭环传递函数为 ,请用tf()函数建模。 解: num=1 3 1;den=1 2 7 6;sys1=tf(num,den) 2、零极点增益模型函数zpk() 调用格式:sys = zpk ( z,p,k ) z为零点组成的向量,p为极点组成的向量,k为增益。建模时要把系统转换为博德型。 例9-10:系统的零点为 -1+i, -1-i, 极点为 -2, -3 , 0,增益为20, 请用zpk ()函数建模。 解: z=-1+i, -1-i;p=-2 -3, 0;k=20; Sys2=zpk(z,p,k),3、状态方程模型函数ss() 调用格式:sys = ss ( A,B,C,D ) A,B,C,D为状态方程 的矩阵。 4、模型间的转换 直接利用上述函数可以实现模型间的转换。 例9-11:把例9-9中模型转换为零极点增益模型,把例9-10中模型转换为传递函数模型。 解: sys3=zpk(sys1) Zero/pole/gain: (s+2.618) (s+0.382) - (s+1) (s2 + s + 6) sys