《MATLAB控制系统仿真实验报告30700》由会员分享,可在线阅读,更多相关《MATLAB控制系统仿真实验报告30700(31页珍藏版)》请在金锄头文库上搜索。
1、清华大学自动化工程学院 实验报告 课程: 控制系统仿真 专业 自动化 班级 122 姓名 学号 指导教师: 时间: 2015 年 10 月 19 日 10 月 28 日 目 录 实验一 MATLAB 环境的熟悉与基本运算1 实验二 MATLAB 语言的程序设计6 实验三 MATLAB 的图形绘制9 实验四 采用 SIMULINK 的系统仿真 14 实验五 控制系统的频域与时域分析17 实验六 控制系统 PID 校正器设计法23 实验一 MATLAB 环境的熟悉与基本运算 一、实验时间及地点: 实验时间:2015.10.19 上午 8:309:30 实验地点:计算中心 二、实验目的: 1 熟悉
2、MATLAB 开发环境 2掌握矩阵、变量、表达式的各种基本运算 三、实验内容: 1、 新建一个文件夹(自己的名字命名,在机器的最后一个盘符) 2、 启动 MATLAB6.5,将该文件夹添加到 MATLAB 路径管理器中。 3、 保存,关闭对话框 4、 学习使用 help 命令,例如在命令窗口输入 help eye,然后根据帮助说明,学习使用指令 eye(其它不会用的指令,依照此方法类推) 5、 学习使用 clc、clear,观察 command window、command history 和 workspace 等窗口的变化结果。 6、 初步程序的编写练习,新建 M-file,保存(自己设定
3、文件名,例如 exerc1、exerc2、 exerc3),学习使用 MATLAB 的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。 注意:每一次 M-file 的修改后,都要存盘。 练习 A: (1) help rand,然后随机生成一个 26 的数组,观察 command window、command history 和 workspace 等窗口的变化结果 (2) 学习使用 clc、clear,了解其功能和作用 (3) 输入一个 2 维数值数组,体会标点符号的作用(空格和逗号的作用)。 (4) 一维数组的创建和寻访,创建一个一维数组(18)X,查询 X 数组的第 2 个元素,
4、查询 X 数组的第 3 个元素到第 6 个元素,查询 X 数组的第 5 个元素到最后一个元素,查询 X 数组的第 3、2、1 个元素,查询 X 数组中5 元素,将 X 数组的第 2 个元素重新赋值为 111,实例 expm1。 (5) 二维数组的创建和寻访,创建一个二维数组(48)A,查询数组 A 第 2 行、第3 列的元素,查询数组 A 第 2 行的所有元素,查询数组 A 第 6 列的所有元素,查询数组 A 按列拉长形成新的数组 B(18),查询数组 A 按行拉长形成新的数组C(18),以全元素赋值的方式对数组 A 赋值。 (6) 两种运算指令形式和实质内涵的比较。设有 3 个二维数组 A2
5、4,B24,C22,写出所有由 2 个数组参与的合法的数组运算和矩阵指令 (7) 学习使用表 8 列的常用函数(通过 help 方法) (8) 学习使用表 9 数组操作函数 (9) 学习字符串的创建,a=This is an example. 串数组的大小 size(a) 串数组的元素标识 a14=a(1:4) ra=a(end:-1:1) 对字符串 ASCLL 码的数组操作 w=find(a=a&ahelp rand %用 help 指令学习 rand 的用法 rand - Uniformly distributed pseudorandom numbers This MATLAB func
6、tion returns a pseudorandom scalar drawn from the standard uniform distribution on the open interval (0,1). r = rand r = rand(n) r = rand(sz1,.,szN) r = rand(sz) r = rand(classname) r = rand(n,classname) r = rand(sz1,.,szN,classname) r = rand(sz,classname) r = rand(like,p) r = rand(n,like,p) r = ran
7、d(sz1,.,szN,like,p) r = rand(sz,like,p) rand(2,6) %随机生成一个 26 的数组 ans = 0.8147 0.1270 0.6324 0.2785 0.9575 0.1576 0.9058 0.9134 0.0975 0.5469 0.9649 0.9706 clear %清除命令窗口 1 2;3 4 %输入一个二维数组 ans = 1 2 3 4 1,2;3,4 %将空格改为逗号效果一致 ans = 1 2 3 4 a=1 2 3 4;5 6 7 8; b=a(2:2,3:4) %逗号前面是行,后面是列,冒号前后的数表示所选范围 b = 7
8、8 eye(3) %产生单位矩阵 ans = 1 0 0 0 1 0 0 0 1 magic(3) %产生魔方矩阵 ans = 8 1 6 3 5 7 4 9 2 flipud(ans) %以数组“水平中线”为对称轴,交换上下对称位置上的元素 ans = 4 9 2 3 5 7 8 1 6 rot90(ans) %逆时针旋转数组 90 ans = 2 7 6 9 5 1 4 3 8 a=hello a = hello b=size(a) %字符串 a 的大小为 1x5 b = 1 5 syms x y p k a b c %创建符号对象 e1=x2*a*c*y+a*p*x2+b*p*x+c*k
9、*y+k*p %创建函数命令 e1 = k*p + a*p*x2 + c*k*y + b*p*x + a*c*x2*y e2=c*y+p e2 = p + c*y e1/e2 ans = (k*p + a*p*x2 + c*k*y + b*p*x + a*c*x2*y)/(p + c*y) a=1 2 a = 1 2 c=reshape(a,2,1) %改变数组 a 的行数和列数 c = 1 2 五、实验结果及讨论 1.熟悉了 MATLAB 的基本软件操作。 2.通过本次实验熟悉了 MATLAB 的开发环境掌握了矩阵、 变量、 表达式的各种运算了解了*与.*、/与、与.等区别以及绝对值、开方
10、e 的阶乘、正弦、正切的运算的符号。 3.让我明白了 MATLAB 的实用性。 实验二 MATLAB 语言的程序设计 一、实验时间及地点: 实验时间:2015.10.19 上午 8:309:30 实验地点:黄岛老校区计算中心 二、实验目的: 1、 熟悉 MATLAB 程序编辑与设计环境 2、 掌握各种编程语句语法规则及程序设计方法 3、 函数文件的编写和设计 4、 了解和熟悉跨空间变量传递和赋值 三、实验内容: 练习 A 1、 熟悉 MATLAB 程序编辑与设计环境 2、 用 for 循环语句实现求 1100 的和 3、 用 for 循环语句实现编写一个求n阶乘的函数文件 练习 B 思考题 4
11、、 已知一维数组10, 8 , 5 , 4 , 2A、4 , 7 , 6 , 9 , 4B,用 for 循环语句实现niiniBA11。求和函数可用()sum 5、 (1)编写求解一维数组平均值的函数文件。 (2)编写求解二维数组平均值的函数文件。 四、实验操作过程(实验说明) 1 用 for 循环语句实现求 1100 的和,函数名为 theSec(). 程序: a=0; for i=1:100 a=i+a; end fprintf(%dn,a) 执行结果: theSec %求1100 的和 5050 2 用 for 循环语句实现编写一个求n阶乘的函数文件,函数名为 jiex(x). 程序:
12、function jiex(x) a=1; for i=1:x a=a*i; end fprintf(%dn,a) 执行结果: jiex(4) % 求 4 的阶乘 24 3. 已知一维数组10, 8 , 5 , 4 , 2A、4 , 7 , 6 , 9 , 4B,用 for 循环语句实现niiniBA11。求和,函数名用 ABsum() 程序: function y=ABsum() a=2,4,5,8,10; b=4,9,6,7,4; n=5; sum=0; for i=1:n sum=sum+a(1,i)*b(1,n-i+1); end y=sum; 执行结果: ABsum() ans =
13、178 4. 编写求解任意数组平均值的函数文件,函数名为 avg(f). 程序: function y=avg(f) m,n=size(f); sum=0; for i=1:m for j=1:n sum=sum+f(i,j); end end y=sum/(m*n); 执行结果: a=1,2,3,4;5,6,7,8 %定义一个数组 a = 1 2 3 4 5 6 7 8 avg(2*a) %求数组 2*a 的平均值 ans = 9 五、实验结果及讨论 1. 编程语句:循环语句有 for 循环和 while 循环,我习惯使用 for 循环,使用格式如下: for 循环变量=表达式 1(初值):
14、表达式 2(增量):表达式 3(终值) 循环语句组 end 条件判断语句 if 语句格式为: if 表达式 执行语句 end 实验三 MATLAB 的图形绘制 一、实验时间及地点: 实验时间:2015.10.21 上午 8:309:30 实验地点:黄岛老校区计算中心 二、实验目的: 1、学习 MATLAB 图形绘制的基本方法; 2、熟悉和了解 MATLAB 图形绘制程序编辑的基本指令; 3、熟悉掌握利用 MATLAB 图形编辑窗口编辑和修改图形界面,并添加图形的各种标注; 4、掌握 plot、subplot 的指令格式和语法。 三、实验内容: 练习 A 【1】 二维曲线绘图基本指令演示。 t=
15、(0:pi/50:2*pi); k=0.4:0.1:1; Y=cos(t)*k; plot(t,Y) 01234567-1-0.8-0.6-0.4-0.200.20.40.60.81 plot 指令基本操作演示 【2】用图形表示连续调制波形)9sin()sin(tty 及其包络线。 t=(0:pi/100:pi); y1=sin(t)*1,-1; y2=sin(t).*sin(9*t); t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3);plot(t,y1,r:,t,y2,b,t3,y3,bo) axis(0,pi,-1,1) 00.511.522.53-1-0.8-0
16、.6-0.4-0.200.20.40.60.81 【3】通过绘制二阶系统阶跃响应,综合演示图形标识。本例比较综合,涉及的指令较广。请耐心读、实际做、再看例后说明,定会有匪浅收益。 clf;t=6*pi*(0:100)/100;y=1-exp(-0.3*t).*cos(0.7*t); tt=t(find(abs(y-1)0.05);ts=max(tt); plot(t,y,r-,LineWidth,3) axis(-inf,6*pi,0.6,inf) set(gca,Xtick,2*pi,4*pi,6*pi,Ytick,0.95,1,1.05,max(y) grid on title(it y
17、= 1 - e -alphatcosomegat) text(13.5,1.2,fontsize12alpha=0.3) text(13.5,1.1,fontsize12omega=0.7) hold on;plot(ts,0.95,bo,MarkerSize,10);hold off cell_string1=fontsize12uparrow; cell_string2=fontsize16 fontname隶书镇定时间; cell_string3=fontsize6 ; cell_string4=fontsize14rmt_s = num2str(ts); text(ts,0.85,ce
18、ll_string) xlabel(fontsize14 bft rightarrow) ylabel(fontsize14 bfy rightarrow) 6.283212.566418.84960.9511.051.2843 y = 1 - e -atcoswta=0.3w=0.7? 镇定时间 ts = 9.6133 ? ? 二阶阶跃响应图的标识 四、实验操作过程(实验说明) 1. 二维曲线绘图基本指令演示: t=(0:pi/50:2*pi); k=0.4:0.1:1; Y=cos(t)*k; plot(t,Y) 执行结果:(图 3-1) 图 3-1 2. 用图形表示连续调制波形)9sin
19、()sin(tty 及其包络线: t=(0:pi/100:pi); y1=sin(t)*1,-1; y2=sin(t).*sin(9*t); t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3);plot(t,y1,r:,t,y2,b,t3,y3,bo) axis(0,pi,-1,1) 执行结果:(图 3-2) 图 3-2 3. 通过绘制二阶系统阶跃响应,综合演示图形标识: clf;t=6*pi*(0:100)/100;y=1-exp(-0.3*t).*cos(0.7*t); tt=t(find(abs(y-1)0.05);ts=max(tt); plot(t,y,r-,L
20、ineWidth,3) axis(-inf,6*pi,0.6,inf) set(gca,Xtick,2*pi,4*pi,6*pi,Ytick,0.95,1,1.05,max(y) grid on title(it y = 1 - e -alphatcosomegat) text(13.5,1.2,fontsize12alpha=0.3) text(13.5,1.1,fontsize12omega=0.7) hold on;plot(ts,0.95,bo,MarkerSize,10);hold off cell_string1=fontsize12uparrow; cell_string2=fo
21、ntsize16 fontname隶书镇定时间; cell_string3=fontsize6 ; cell_string4=fontsize14rmt_s = num2str(ts); text(ts,0.85,cell_string) xlabel(fontsize14 bft rightarrow) ylabel(fontsize14 bfy rightarrow) 执行结果:(图 3-3) 图 3-3 五、实验结果及讨论 1, 通过这次实验, 我学会了 MATLAB 图形绘制的基本方法, 掌握 了 MATLAB 图形绘制程序编辑的基本指令, 而且还懂得了利用 MATLAB 图形编辑窗口
22、编辑和修改图形界面,并添加图形的各种标 注。 2,感觉到了 MATLAB 的强大,而且很实用。 实验四 采用 SIMULINK的系统仿真 一、实验时间及地点: 实验时间:2015.10.21 上午 8:309:30 实验地点:黄岛老校区计算中心 二、实验目的: 1、熟悉 SIMULINK 工作环境及特点 2、掌握线性系统仿真常用基本模块的用法 3、掌握 SIMULINK 的建模与仿真方法 4、子系统的创建和封装设计 1、 实验内容: 练习 A 1、 SIMULINK 仿真实际应用, 建立双环调速的电流环系统的方框图模型, 模型参数设为 Ks=44;Ts=0.00167;Ta=0.017;R=1
23、;Tm=0.075;Ce=0.1925;Kt=0.01178;T1=0.049;T2=0.088, (1)在 Simulink 集成环境下建立模型, 在给定信号作用点处输入单位给定阶跃响应信号, 0.3秒后在扰动信号点输入单位阶跃响应信号。并绘制相应的响应曲线 (2)计算仿真结果的超调量、上升时间、调节时间、稳态误差。 (3)设计 PID 调节器替代图中的比例积分调节器, 调节PK,iT,dT用使系统满足超调量 15%,上升时间 0.3s,调节时间 0.4s 的要求。 (4)要求对加入的 PID 控制器封装成一个模块使用 封装步骤 1 创建子系统 封装步骤 2 封装子系统 封装步骤 3 设置参
24、数 封装步骤 4 修改和设计模块图标 四、实验操作过程(实验说明) 1. 画出双环调速的电流环系统的方框图模型,并在 Simulink 集成环境下建立模型:(图4-1) 图 4-1 2. 绘制相应的响应曲线:(图 4-2) 图 4-2 五、实验结果及讨论 1、SIMULINK 的基本操作: 1) 启动 SIMULINK 软件包:可以在 MATLAB 命令窗口键入“SIMULINK”命令,回车后将弹出 SIMULINK 图形库浏览器(SIMULINK LIBRARY BREWSER)界面,也可以选择“SIMULINKLIBRARY BREWSER”同样可以打开该界面; 2) SIMULINK 用
25、户接口:SIMULINK 仿真模型编译器界面有菜单栏、工具栏、状态栏等,通过这些接口可以调整仿真运行时间, 仿真模式等, 可以查看仿真运行进度等信息。 3) 构建 SIMULINK 框图:用鼠标将模块库中的所需的模块拖至系统模型中,然后添加连线将各个模块连接起来,模型中可以包含 WORKSPACE 中已定义的变量; 4) 运行:点击仿真模型编译器界面中的运行按钮,系统会在输入信号的作用下输出,通过 SCOPE 模块可以查看输出响应曲线,通过 TO WORKSPACE 模块可以将输出及时间信号送至工作区。 实验五 控制系统的频域与时域分析 一、实验时间及地点: 实验时间:2015.10.28 上
26、午 8:30-9:30 实验地点:黄岛老校区计算中心 二、实验目的: 1、掌握控制系统数学模型的基本描述方法和相互转化 2、了解控制系统的稳定性分析方法 3、掌握控制系统频域与时域分析基本方法 三、实验内容: 练习 A: 1、 表示下列传递函数模型,并转化成其他的数学模型 (1)()()()(5s2s3s1ss6s6s2s4sG23322 (2)5224)(3ssssG (3)2)(12(1)(sssG (4)21212110102110xxyuxxxx 2、 一个单位负反馈开环传递函数为 1415 . 0sssksG 试绘出系统闭环的根轨迹图;并在跟轨迹图上任选一点,试计算该点的增益k及其所
27、有极点的位置 四、实验操作过程(实验说明) num=4,-2 num = 4 -2 den=1 0 2 5 den = 1 0 2 5 Gs=tf(num,den) Gs = 4 s - 2 - s3 + 2 s + 5 Continuous-time transfer function. num=0.5; den=1 2.5 1; Gs=tf(num,den) Gs = 0.5 - s2 + 2.5 s + 1 Continuous-time transfer function. k=1; num=k; den=2 4.5 1 0; Gs=tf(num,den) Gs = 1 - 2 s3
28、+ 4.5 s2 + s Continuous-time transfer function. Ms=Gs/(Gs+1) Ms = 2 s3 + 4.5 s2 + s - 4 s6 + 18 s5 + 24.25 s4 + 11 s3 + 5.5 s2 + s Continuous-time transfer function. rlocus(Ms) %绘制系统闭环的根轨迹图(图 5-1) 图 5-1 pzmap(Ms) %绘制零极点图(5-2) 图 5-2 p,z=pzmap(Ms) p = 0.0000 + 0.0000i -2.1254 + 0.0000i -2.0000 + 0.000
29、0i -0.0623 + 0.4810i -0.0623 - 0.4810i -0.2500 + 0.0000i z = 0 -2.0000 -0.2500 k,poles=rlocfind(Ms) Select a point in the graphics window selected_point = 0.5795 + 0.4927i k = 4.1162 poles = 0.0000 + 0.0000i -2.4675 + 0.0000i -2.0000 + 0.0000i 0.1088 + 1.0124i 0.1088 - 1.0124i -0.2500 + 0.0000i 五、实验
30、结果及讨论 1. MATLAB 通过函数 tf(num,den)建立传递函数模型,通过 zpk(z,p,k)建立零极点增益模型,通过 ss(A,B,C,D)建立连续系统状态空间模型; 2. MATLAB 通过 ss2tf(), ss2zp(), tf2ss(), tf2zp(), zp2ss(), zp2tf() 等函数将传递函数模型、零极点增益模型、状态空间模型等模型互相转换; 3. 通过函数 rlocus(sys) 可绘制系统 sys 的根轨迹图,通过 pzmap(sys)可绘制系统 sys的零极点图, 通过k,poles=rlocfind(Ms)在根轨迹图上任选一点可计算出该点的增益k
31、及所有极点的位置。 实验六 控制系统 PID 校正器设计法 一、实验时间及地点: 实验时间:2015.10.28 上午 8:30-9:30 实验地点:黄岛老校区计算中心 二、实验目的: 1、 熟悉常规 PID 控制器的设计方法 2、 掌握 PID 参数的调节规律 3、 学习编写程序求系统的动态性能指标 三、实验内容: 1、在 SIMULINK 窗口建立如下模型 2、设计 PID 控制器 ,传递函数模型如下 sTsTKsGDipc11)( 3、修改 PID 参数pK、iT和dT,讨论参数对系统的影响 4、 利用稳定边界法对 PID 参数pK、iT和dT校正设计 5、根据 PID 参数pK、iT和
32、dT对系统的影响,调节 PID 参数实现系统的超调量小于 10% 四、实验操作过程(实验说明) 1. 在 SIMULINK 窗口建立如下模型:(图 6-1) 图 6-1 2. 设计 PID 控制器:(图 6-2) 图 6-2 3. 利用稳定边界法对 PID 参数pK、iT和dT校正设计: 参数 mK mT pK iT dT 数值 23.208 0.0286 13.693 0.0143 0.00358 校正后的响应曲线:(图 6-3) 图 6-3 4. 调节 PID 参数实现系统的超调量小于 10%: 参数 pK iT dT 数值 23.305 0.035 0.00875 如图 6-4,超调量为 9.4% : 图 6-4 五、实验结果及讨论 1. 学会了通过 SIMULINK 建立动态系统模型并进行仿真, 能熟练地运用 SIMULINK 库, 设置模型参数,建立并运用 SIMULINK 用户接口; 2. 学会了在 SIMULINK 中根据传递函数模型设计 PID 控制器,并将其封装成子系统,编辑封装模块的显示文本,设置系统参数,以及添加子系统帮助文档; 3. 学会了利用稳定边界法对 PID 参数校正, 找到临界稳定增益和临界稳定角频率, 设定基于稳定性分析的 PID 参数; 4. 通过不同 PID 参数对系统响应曲线的影响规律修改 PID 参数,使系统超调量小于 10%。