资源描述
系统建模与仿真项目驱动设计报告
学 院:电气工程与自动化学院
专业班级:自动化143班
学 号:
学生姓名:李荣
指导老师:杨国亮
时 间:2023年6月10号
摘 要
仿真技术是一门运用物理模型或数学模型模拟实际环境进行科学实验的技术,具有经济、可靠、实用、安全、灵活和可多次反复使用的优点。
本文中将使用Matlab软件实现一个简朴的控制系统仿真演示,可实现对一些连续系统的数字仿真、连续系统按环节离散化的数字仿真、采样控制系统的数字仿真以及系统的根轨迹、伯德图、尼克尔斯图和奈氏图绘制。
本设计完毕基本功能的实现,基于Matlab的虚拟实验仿真的建立和应用,培养了我们的爱好,提高了我们的实践能力。
关键字:Matlab;系统数字仿真;根轨迹;伯德图。
目 录
第一章 概述 4
1.1 设计目的 4
1.2 设计规定 4
1.3 设计内容 4
第二章 Matlab简介 6
2.1 Matlab的功能特点 6
2.2 Matlab的基本操作 6
第三章 控制系统仿真设计 8
3.1 控制系统的界面设计 8
3.2 控制系统的输入模型设计 9
3.3 欧拉法的Matlab实现 12
3.4 梯形法的Matlab实现 14
3.5 龙格-库塔法的Matlab实现 15
3.6 双线性变换法的Matlab实现 16
3.7 零阶保持器法的Matlab实现 17
3.8 一阶保持器法的Matlab实现 18
3.9 系统PID控制的Matlab实现 19
3.10 系统根轨迹的绘制 21
3.11系统伯德图的绘制 22
3.12系统尼克尔斯图的绘制 23
3.13系统奈氏图的绘制 24
第四章 附加功能的设计 26
4.1 音乐播放器的设计 26
4.2 实时时钟的设计 26
致谢 28
参考文献 29
第一章 概述
1.1 设计目的
(1) 熟悉MATLAB的常用交互界面与常用指令及其调用格式。
(2) 掌握MATLAB的基本语法以及M文献的建立与基本操作。
(3) 掌握MATLAB建立自动控制系统数学模型的方法。
(4) 掌握实现连续系统数字仿真的方法。
(5) 掌握实现连续系统离散化数字仿真的方法。
(6) 掌握实现采样系统数字仿真的方法。
(7) 掌握由根轨迹,伯德图,奈氏图等分析系统的稳定性的方法。
1.2 设计规定
控制系统的仿真演示具有以下几点规定:
(1) 具有状态空间表达式、零极点形式、传递函数的三种数学模型,通过这三种模型输入系统的参数。
(2) 可以用欧拉法、梯形法、龙格-库塔法绘制连续系统的输出响应曲线,同时能用PID控制器改善系统的性能。
(3) 可以用双线性变换法、零阶保持器法、一阶保持器法绘制连续系统离散化的输出响应曲线,同时能用PID控制器改善系统的性能。
(4) 可以绘制控制系统的根轨迹、伯德图、尼克尔斯图、奈氏图。便于分析系统的稳定性,频域。
(5) 完毕基本规定可增长附加功能,例如音乐播放器。
(6) 整个仿真演示系统各功能互不干扰,正常运营。
1.3 设计内容
在进行Matlab GUI的设计时,考虑到各版本的兼容问题,本文未采用使用Guide建立GUI的方法,而是直接建立M文献,在文献中使用代码建立仿真系统所需的窗口和各控件。设计思绪如下:
(1) 在M文献中先建立界面窗口,再建立各控件,在建立这些控件时,一方面将窗口和所有控件的可视性都关闭,当界面设计完毕时打开主界面的可视性,这样就不会出现一打开就出现画面卡顿的现象。
(2) 调整所用控件的位置,使界面看起来美观。
(3) 界面完毕好之后,就是编写各控件的回调函数。
(4) 在完毕所有基本功能后,设计一些附加的功能。
第二章 Matlab简介
2.1 Matlab的功能特点
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,重要涉及MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。
是由美国mathworks公司发布的重要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态
系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中。为科学研
究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决
方案,并在很大限度上摆脱了传统非交互式程序设计语言(如C、Fortran)的
编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用
软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、
实现算法、创建用户界面、连接其他编程语言的程序等,重要应用于工程计算、
控制设计、信号解决与通讯、图像解决、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形
式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完毕相同的事情
简捷得多,并且MATLAB也吸取了像Maple等软件的优点,使MATLAB成为一个强
大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
2.2 Matlab的基本操作
Matlab的操作界面由工作窗口、开始按钮、功能菜单和工具栏等组成。
(1) Matlab的工作窗口在默认状态下是由命令窗口、历史命令窗口、当前工作目录窗口、工作空间浏览器窗口等构成。
(2) Matlab的开始按钮位于Matlab操作界面的左下角,单击这个按钮后,会出现Matlab的操作菜单。这个菜单上半部分的选项包含Matlab的各种交互界面,下半部分的选项的重要功能是窗口设立、访问Matlab公司的网页和查看帮助文献等。
(3) 功能菜单涉及File-文献操作菜单、Edit-编辑菜单、Debug-调试菜单、Desktop-桌面菜单、Window-窗口菜单。
(4) 工具栏可快速进入Guide模板窗口、建立M文献等。
第三章 控制系统仿真设计
3.1 控制系统的界面设计
在本次设计中,不采用guide建立GUI,单纯的由M文献来实现控制的界面的设计,在该系统中,设计了一个主窗口,9个坐标,但只有一个坐标系是用来显示输出响应的,两个显示背景图片,其他坐标用来显示文字,就能实现在图片上显示文字并且和背景色保持一致;设计了19个普通按键,各有各自的功能,能实现进入系统,退出系统等功能;此外尚有两个选择框和一个静态文本框,两个选择框分别用来选择输入模型和选择歌曲播放,静态文本框用来显示实时时钟。
系统界面如下:
图3-1 控制系统未进入系统界面
图3-2 控制系统进入系统界面
在进入系统之后,假如需要绘图,那么一方面必须先输入参数,当为输入参数而绘图时,会弹犯错误对话框errordlg('未选择系统数学模型!'),其他的情况也会出现别的提醒框。
这里还设立了一个输入的按键,由于输入的不一定是阶跃响应,所以在这里加了一个输入按键,在界面上看起来仿佛只有暂停播放而没有继续播放,但是当你按下暂停播放后,转而出现的就是继续播放,这里运用的就是按键的可视性,这样就能节省出一小块地方,也更加美观。
3.2 控制系统的输入模型设计
在设计系统的输入模型时,我们已经打算设计三种输入的模型,分别是多项式传递函数、空间状态表达式、零极点形式。
在这里,我采用选择框来选择想要输入的模型,此外还设计了一个输入按键,可以设立输入信号,仿真时间,步长等值。
具体选择操作如图:
图3-3 输入信号的设立
图3-4 输入模型的选择
图3-5 多项式传递函数的输入
图3-6 空间状态表达式的输入
图3-7 零极点形式的输入
在设立输入的时候只需要设立一次,在选择输入模型时也只要选择一种输入模型,然后按输入的提醒进行输入。
3.3 欧拉法的Matlab实现
在数学和计算机科学中,欧拉法是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解。它是一种解决常微分方程数值积分的最基本的一类显型方法。
欧拉法又称折线法或矩形法,是最简朴也是最早的一种数值方法。基本思想是迭代。将
(3-1)
(3-2)
微分方程两边进行积分,得:
(3-3)
即
(3-4)
通常假设离散点t1,t2,....,tn是等距离的,即tk+1 - tk= h,称h为计算步长或步距。
当t > t0时,x(t)是未知的,因此式子(3-4)右端的积分是求不出来的。为了解决这个问题,把积分间隔取得足够小,使得在tk与tk+1之间的f(t,x(t))可以近似看做常数f(tk,x(tk))。这样便得到用矩阵公式积分的近似公式
(3-5)
或简化为
(3-6)
这就是欧拉公式。
以x(t0) = x0作为初始值,应用欧拉公式就可求出解x(t)。欧拉法虽然比较简朴,但精度较低。
这里的欧拉法针对连续系统,当输入信号通过系统,运用欧拉法解决后,输出信号将会发生变化,然后在坐标上画出时间与输出的相应关系,进而形成数字仿真曲线。
运营结果:
图3-8 欧拉法仿真曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2;r=1;
Tf=5;h=0.01。
3.4 梯形法的Matlab实现
欧拉公式中的积分是用矩形面积f(tk,xk)h来近似的,用矩形面积代替积分误差较大,为了提高精度,先用梯形面积来代替积分,即
(3-7)
于是可得梯形法的计算公式为
(3-8)
由于上式右边包含未知量xk+1,所以每一步都必须通过迭代法来求解。每一步迭代的初始值通常采用欧拉公式来计算。因此梯形法的每一步迭代公式为
(3-9)
式中,迭代次数R=0,1,2,....
梯形法比欧拉法更加精确,当输入通过梯形法解决后,且计算步长比较小,得出的图形与欧拉法解决后的图形相差不大,但是事实上梯形法解决的更加精确。
在输入信号的基本参数
运营结果:
图3-9 梯形法仿真曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2;r=1;
Tf=5;h=0.01。
3.5 龙格-库塔法的Matlab实现
龙格-库塔方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采用措施对误差进行克制,所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。
在这里介绍介绍四阶龙格-库塔公式:
(3-10)
欧拉法、梯形法都是基于在初值附近展开成泰勒级数的原理,所不同的是取泰勒级数的项数。欧拉公式取到h项,梯形法与二阶龙格-库塔法相同,均取到h2项;四阶龙格-库塔法取到h4项。从理论上讲,取的项数越多,计算精度越高,但计算量越大,越复杂,计算误差也将增长,因此要适当的选择。目前在数字仿真中,最常用的是四阶龙格-库塔法,可以满足仿真精度的规定。
现在一般情况下解决简朴的连续系统的输出动态响应一般选择采用这种方法,由于相比较欧拉法,梯形法的话,龙格-库塔法更加可以满足仿真精度的规定,当系统还没达成四阶时,我们也可以构导致四阶,所以这种方法还是比较实用的。
运营结果:
图3-10 龙格-库塔法仿真曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2;r=1;
Tf=5;h=0.01。
3.6 双线性变换法的Matlab实现
双线性变换法又称突斯(Tustin)法,是一种基于梯形积分规则的数字积分变换方法。
双线性替换公式,它可以从梯形积分公式中直接推导出来。按这种替换公式进行替换,可以保证G(z)的稳定性,并且,具有一定的仿真精度。
已知梯形积分公式为:
(3-11)
即:
(3-12)
则有:
(3-13)
(3-14)
上式称为线性替换公式也可写为:
(3-15)
双线性变换将连续系统离散化,进而实现输出数字仿真曲线。
运营结果:
图3-11 双线性法仿真曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2;r=1;
Tf=5;T=0.01。
3.7 零阶保持器法的Matlab实现
零阶保持器:zero-order holder(ZOH)。实现采样点之间插值的元件,基于时域外推原理,把采样信号转换成连续信号。
零阶保持器的作用是在信号传递过程中,把第nT时刻的采样信号值一直保持到第(n+1)T时刻的前一瞬时,把第(n+1)T时刻的采样值一直保持到(n+2)T时刻,依次类推,从而把一个脉冲序列变成一个连续的阶梯信号。由于在每一个采样区间内连续的阶梯信号的值均为常值,亦即其一阶导数为零,故称为零阶保持器。
零阶保持器的传递函数为:
(3-16)
运营结果:
图3-12 零阶保持器法仿真曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2;r=1;
Tf=5;T=0.01。
3.8 一阶保持器法的Matlab实现
一阶保持器的近似公式为:,离散化之后
(3-17)
式中
(3-18)
输出变量的差分方程,当系数矩阵G,H,C,D及Φ已知时,运用迭代法便可很容易求得系统输出响应.
一阶保持器的传递函数为:
(3-19)
一阶保持器,零阶保持器,双线性变换虽然原理不同样,但是都是将连续系统离散化,在Matlab实现这种这种离散还是非常简朴的,由于Matlab中有一个c2dm()的函数,可以把连续的线性时不变系统转换成离散的时不变系统,函数中的参数’method’当分别为’zoh’’foh’’tustin’时表达零阶保持器、一阶保持器、双线性变换三种转换方法。
运营结果:
图3-13 一阶保持器法仿真曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2;r=1;
Tf=5;T=0.01。
3.9 系统PID控制的Matlab实现
当今的闭环自动控制技术都是基于反馈的概念以减少不拟定性。反馈理论的要素涉及三个部分:测量、比较和执行。测量关心的是被控变量的实际值,与盼望值相比较,用这个偏差来纠正系统的响应,执行调节控制。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
比例控制(P)是一种最简朴的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。
在积分控制(I)中,控制器的输出与输入误差信号的积提成正比关系。对一个自动控制系统,假如在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的 或简称有差系统。为了消除稳态误差,在控制器中必须引入"积分项"。积分项对误差取决于时间的积分,随着时间的增长,积分项会增大。这样,即便误差很小,积 分项也会随着时间的增长而加大,它推动控制器的输出增大使稳态误差进一步减小,直到接近于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后几乎无稳态误差。
在微分控制(D)中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中也许会出现振荡甚至失稳。其因素是由于存在有较大惯性组件(环节)或有滞后组件,具有克制误差的作用, 其变化总是落后于误差的变化。解决的办法是使克制误差的作用的变化"超前",即在误差接近零时,克制误差的作用就应当是零。这就是说,在控制器中仅引入 "比例"项往往是不够的,比例项的作用仅是放大误差的幅值,而需要增长的是"微分项",它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能 够提前使克制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
在设计PID控制时,特别设立在当按下PID按键时,需要输入kp,ki,kd三个参数,通过调整参数得出较为抱负的输出波形。
运营结果:
图3-14 PID控制法仿真曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2;r=1;
Tf=5;T=0.01;kp=5;ki=0.01;kd=1。
3.10 系统根轨迹的绘制
根轨迹是开环系统某一参数从零变化到无穷大时,闭环系统特性根在s平面上变化的轨迹。可提成常义根轨迹和广义根轨迹。根轨迹有180度、零度根轨迹和参量根轨迹。
在Matlab中画根轨迹直接调用函数rlous(num,den);
当输入的数学模型为零极点形式时,可以直接观测图上画的图形是否符合规定,很容易辨认。
在画系统根轨迹时,我们只需知道系统的开环传递函数即可。
运营结果:
图3-15 根轨迹曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2。如图,零极点与图上画出的一致。
3.11系统伯德图的绘制
伯德图是线性非时变系统的传递函数对频率的半对数坐标图,其横轴频率以对数尺度(log scale)表达,纵坐标幅值或相角采用线性分度,运用伯德图可以看出系统的频率响应。伯德图一般是由二张图组合而成, 伯德图由两张图组成:
①G(jω)的幅值(以分贝,dB表达)-频率(以对数标度)对数坐标图,其上画有对数幅频曲线;
②G(jω)的相角-频率(以对数标度)对数坐标图,其上画有相频曲线。
在Matlab中画伯德图直接调用函数Bode(num,den);
在调试伯德图时,花了一点时间,当时,画伯德图总是会出现图形不能和背景共存,有时候出现一半全白,一半透明,我想因素应当就是伯德图得画两个因素,导致去掉坐标背景时出现了问题,但是在后来的尝试中,我解决了这个问题,就是设立一下坐标的属性color为none,再设立窗口gca的color为none。
如:
set(gca,'color','none');
set(ha3,'color','none');
运营结果:
图3-16 伯德图曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2。
3.12系统尼柯尔斯图的绘制
尼柯尔斯图是将线性非时变系统在不同频率下的增益分贝值及相位绘在一直角坐标系的图上,尼柯尔斯图将二种波德图(波德增益图及波德相位图)结合成一张图,而频率只是曲线中的参数,不直接在图中显示。
尼柯尔斯图常应用在闭环控制系统的稳定性分析中,这时会将开环系统的频率响应绘在尼柯尔斯图上,而尼柯尔斯图上会有其他曲线,标示相应闭环系统的增益分贝值及相位。因此只要知道开环系统的频率响应,即可找到单位回授系统的频率响应。
在Matlab中画尼柯尔斯图直接调用函数nichols(num,den);
运营结果:
图3-16 尼克尔斯图曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2。
3.13系统奈氏图的绘制
奈氏图上每一点都是相应一特定频率下的频率响应,该点相对于原点的角度表达相位,而和原点之间的距离表达增益,因此奈氏图将振幅及相位的波德图综合在一张图中。
闭环负反馈系统的稳定性评估可以由开环系统的奈氏图,配合奈氏稳定判据判断其稳定性。
在Matlab中画奈氏图直接调用函数nyquist(num,den);
运营结果:
图3-17 奈氏图曲线
说明:输入是以零极点形式输入,其中Z=-2;P=0,-1,-3;K=2。
第四章 附加功能的设计
4.1 音乐播放器的设计
在音乐播放的设计中,仅仅是实现简朴的功能,可以实现播放音乐、暂停音乐、继续音乐、停止音乐等功能。此外还设计了一个选择框选择想要播放的音乐,实现的音乐都是循环播放的。
在实现音乐播放时,采用audioplayer播放器对象实现循环播放,直接调用函数audioplayer(data,Fs,nBits);
在实现停止播放的功能时,直接调用函数stop();
在实现暂停播放的功能时,调用函数pause();
在实现继续播放的功能时,调用函数start();
这里播放音乐时,倘若想要听此外一首歌,那就先停止这一曲,当然你假如强制播放,那么出现就会提醒你,为了使程序不容易出现错误,程序中有一些提醒的对话框,即使你放着音乐强行关闭系统也不会报错,当选择歌曲时,由选择键的val值决定,在程序中准备了5首歌曲。
如下:
图4-1 音乐选择框
图4-2 音乐功能键
具体实现方法请参见程序代码部分。
4.2 实时时钟的设计
在设计实时时钟时,实现的也是一个简朴的显示时钟,创建了一个静态文本,用于显示当前时间。
当点击进入系统,这时时钟的可视性就会被打开,当点击退出系统,时钟的可视性会被关闭,自然也就看不届时间了。
时钟显示如图:
图4-3 时间显示框
致谢
在这次的GUI设计中,我初步完毕了仿真演示系统的基本功能,在这里,我一方面向帮助和指导我的指导老师杨国亮老师表达衷心的感谢,由于在这个实践的过程中,碰到一些让人很头疼的问题,感谢杨老师细心的指导。当然,同学们的帮助也是不少,学习中的我们一直都在不断的探讨中度过,感谢这些陪我一起奋斗的同学,我们在这样的竞争环境中成长,在这样的环境中不断探索,在你们身上,我也积累了许多宝贵的经验。
通过本次设计,不仅是对我们课本所学知识的考察,更是对自我的自学能力和收集资料能力以及动手能力的考察,本次设计使我们对一个整体设计有了初步的结识,通过自己的探索、研究来解决每一个问题,极大的锻炼了我们的思考和分析问题的能力。
总之,在这个过程中,无论是对于学习方法还是理论知识,我们都有了新的结识,收益匪浅,这将激励着我们在此后再接再厉,不断完善自己的理论知识,提高实践运作能力。最后在这里,还是要和老师、同学们说一句深深的感谢,谢谢老师的指导,照顾;谢谢同学们的陪同。
参考文献
1. 李国勇主编. 计算机仿真技术与CAD-基于MATLAB的控制系统(第3版). 北京:电子工业出版社,2023.2
2. 王建辉,顾树生主编. 自动控制原理,第2版. 北京:清华大学出版社,2023.2
3. 谢克明主编. 现代控制理论. 北京,清华大学出版社,2023.4
展开阅读全文