自动控制常见MATLAB函数的应用
- 格式:pdf
- 大小:278.09 KB
- 文档页数:11
matlab中pid控制器的应用实例Matlab中PID控制器的应用实例引言PID控制器是一种常用的控制器,可以广泛应用于自动控制系统中。
其中,P代表比例,I代表积分,D代表微分。
PID控制器通过对误差、误差的积分和误差的微分进行加权求和,以便更好地控制系统的输出。
在本文中,我们将使用Matlab来演示PID控制器的应用实例。
我们将从控制物理实验中的水位控制系统开始,然后详细介绍PID控制器的原理和参数调整,最后使用Matlab进行仿真实验和结果分析。
一、实验背景我们考虑一个简单的水位控制系统。
系统由一个水箱和一个控制阀组成。
当水箱的水位低于设定水位时,控制阀将打开,往水箱中注水,当水位达到设定水位时,控制阀将关闭。
我们的目标是设计一个PID控制器,以便精确控制水箱中的水位。
二、PID控制器介绍在介绍PID控制器之前,我们需要了解一些基本的概念。
1. 比例控制(P)比例控制是根据误差的大小来调整控制量的大小。
比例增益参数Kp用于调整误差和控制量之间的比例关系。
控制量可通过以下公式计算:Control = Kp * Error其中,Error是设定值与测量值之间的差异。
2. 积分控制(I)积分控制用于减小系统的稳态误差。
积分增益参数Ki用于计算控制量的积分部分。
控制量可通过以下公式计算:Control = Kp * Error + Ki * \int Error dt其中,\int Error dt表示误差的积分。
3. 微分控制(D)微分控制用于减小系统的瞬态误差。
微分增益参数Kd用于计算控制量的微分部分。
控制量可通过以下公式计算:Control = Kp * Error + Ki * \int Error dt + Kd * \frac{{dError}}{{dt}}其中,\frac{{dError}}{{dt}}表示误差的微分。
三、PID控制器参数调整PID控制器中的三个参数(Kp,Ki,Kd)对控制器的性能有着重要的影响。
matlab在自动控制中的应用
Matlab在自动控制中有广泛的应用。
以下是几个常见的应用
领域:
1. 系统建模和仿真:Matlab可以用于系统建模和仿真,可以
根据实际物理系统的特性来建立数学模型,并通过仿真来验证系统的性能。
2. 控制系统设计:Matlab提供了丰富的控制系统设计工具箱,可以用于设计各种类型的控制器,如比例-积分-微分(PID)
控制器、线性二次调节器(LQR)等。
3. 系统分析和优化:Matlab可以用于分析控制系统的性能,
如稳定性、鲁棒性和灵敏度等。
还可以用于系统参数优化,通过调整控制器的参数来达到期望的控制效果。
4. 多变量控制系统:Matlab可以处理多变量控制系统,可以
对多输入多输出(MIMO)系统进行建模、仿真和控制设计。
5. 自适应控制:Matlab提供了自适应控制工具箱,可以用于
设计具有自适应性能的控制器,可以根据系统动态特性自动调整控制参数。
6. 状态估计和观测器设计:Matlab可以用于设计状态估计器
和观测器,用于估计系统的状态变量,从而实现对系统的观测和控制。
7. 非线性控制系统:Matlab可以处理非线性控制系统,可以
用于建立非线性控制系统的数学模型,并进行仿真和控制设计。
总的来说,Matlab在自动控制中提供了丰富的工具和功能,
可以帮助工程师和研究人员进行控制系统的分析、建模、仿真和控制设计等工作。
HEBEINONGJI摘要:“自动控制原理”是电气与自动化专业重要的专业基础课,内容抽象、复杂,学生理解困难。
近年来,随着MATLAB引入自动控制原理教学实践中,利用其强大的数值计算及绘图功能,对教学形式和内容进行了有力改革,从而有效地提高了课堂教学效率及教学效果。
关键词:自动控制原理;MATLAB;教学改革MATLAB在“自动控制原理力课程中的应用研究河北农业大学李珊珊孔德刚弋景刚袁永伟刘江涛引言自动控制原理是电气与自动化专业一门重要的专业技术基础课,该课程在内容体系中起着承上启下的作用。
主要介绍讨论了单输入一单输出定常系统的控制问题,讲授经典控制理论的三大分析方法一时域分析法、根轨迹分析法和频域分析法,自动控制系统综合与校正的一般方法和非线性系统等内容,课程具有一定的抽象性,包含大量的数学内容和复杂计算。
通过学习,要求学生系统掌握自动控制的基本原理和基本方法,并能对控制系统进行定性分析、定量计算和综合设计。
学生普遍反映难以理解,内容枯燥。
基于此,需要对教学内容及教学方法进行更新,在教学中引入了MATLAB编程语言。
1现代教育理念1.1以学生为中心美国人本主义心理学家卡尔•罗杰斯于1952年提出“以学生为本”的教育理念,主张促进学生个性发展、人格完善和潜能发挥,使他们能够愉快地、创造性地学习和工作。
目前,这种教育理念仍然作为一种基本的现代教育理念。
1.2创新发展的理念党的十八届五中全会提出“创新、协调、绿色、开放、共享”五大发展理念,其中创新被置于首位。
随着互联网技术的迅速发展,知识更新换代速度加快,对复合创新型人才的需求愈发强烈,人才培养要摒弃传统的知识灌溉模式,应将教学重点转移到重视研究方法学习、培养创新精神上。
1.3OBE教育理念OBE为"Outcomes-based Education"的缩写,OBE教育理念即基于成果导向的教育理念。
美国的Spady在《基于产出的教育模式:争议与答案》一书中把OBE定义为“关注和组织教育体系,以确保学生在未来的生活中获得实质性的成功经验”。
自动控制原理MATLAB仿真实验(于海春)实验一典型环节的MATLAB仿真一、实验目的1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法。
2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。
3.定性了解各参数变化对典型环节动态特性的影响。
二、SIMULINK 的使用MATLAB中SIMULINK是一个用来对动态系统进行建模、仿真和分析的软件包。
利用SIMULINK功能模块可以快速的建立控制系统的模型,进行仿真和调试。
1.运行MATLAB软件,在命令窗口栏“>>”提示符下键入imulink命令,按Enter键或在工具栏单击按钮,即可进入如图1-1所示的SIMULINK仿真环境下。
2.选择File菜单下New下的Model命令,新建一个imulink仿真环境常规模板。
图1-1SIMULINK仿真界面图1-2系统方框图3.在imulink仿真环境下,创建所需要的系统。
以图1-2所示的系统为例,说明基本设计步骤如下:1)进入线性系统模块库,构建传递函数。
点击imulink下的“Continuou”,再将右边窗口中“TranferFen”的图标用左键拖至新建的“untitled”窗口。
2)改变模块参数。
在imulink仿真环境“untitled”窗口中双击该图标,即可改变传递函数。
其中方括号内的数字分别为传递函数的分子、分母各次幂由高到低的系数,数字之间用空格隔开;设置完成后,选择OK,即完成该模块的设置。
3)建立其它传递函数模块。
按照上述方法,在不同的imulink的模块库中,建立系统所需的传递函数模块。
例:比例环节用“Math”右边窗口“Gain”的图标。
4)选取阶跃信号输入函数。
用鼠标点击imulink下的“Source”,将右边窗口中“Step”图标用左键拖至新建的“untitled”窗口,形成一个阶跃函数输入模块。
5)选择输出方式。
4.residue多项式模型转化为部分分式展开式模型,或反过来,根据输入参数不同而异5.zp2tf6.tf2zp7.series串联连接8.parallel并联连接10.linmod将结构图模型(Simulink结构图)转化成状态空间模型先建立simulink结构图,保存在当前目录下,文件名取为“sysmodel.mdl”如图0所示。
编写程序,便可得到图0对应模型的解析表达。
图1图2可见当w一定时,系统随着阻尼比ζ的增大,闭环极点的实部在s左半平面的位置更加远n离原点。
图3可见,当ζ一定时,随着w增大,系统响应加速,振荡频率增大,系统调整时间缩短,但n是超调量没变化。
19.spline插值函数,用于由若干实验点估算实验点之外的函数值,下面的程序由插值函数“rltool ”命令,然后回车即可。
24. rlocfind 对给定根计算对应的增益与极点25. nichols 绘制尼科尔斯图,尼科尔斯图的作用同伯德图,不过纵坐标表示的是|G(jw)|,而横坐标则为∠G(jw)。
26. dcgain 求连续系统的稳态增益。
27. residue 部分分式展开。
28. linspace 构造线性分布的向量。
29. roots 求多项式根。
30. limit 求极限,可用于求解系统的稳态位置、速度与加速度误差系数。
例:已知某稳定单位负反馈系统的闭环传递函数为25()556s s s Φ=++。
试求系统的稳定位置、速度与加速度误差系数Kp 、Kv 和Ka 。
32.pade用于近似求取纯延迟时间函数33.tf2ss传递函数到状态空间转换34.subs变量替换参考文献[1]熊晓君.自动控制原理实验教程(硬件模拟与MATLAB仿真)[M].北京:机械工业出版社, 2009.[2]黄忠霖. 自动控制原理的MATLAB实现[M]. 北京:国防工业出版社,2007.谭彩铭2012-3-27南京理工大学基础实验楼。
智能控制及MATLAB实现—水箱液位模糊控制仿真设计智能控制是一种利用先进的智能技术和算法来实现自动控制的方法。
在智能控制中,模糊控制是一种常见且有效的方法之一、模糊控制通过将模糊逻辑应用于控制系统中的输入和输出,根据模糊规则来进行决策和控制。
水箱液位控制是一个典型的控制问题,常常用于工业和民用领域中的自动化系统。
在许多控制应用中,水箱液位的控制是一个关键的问题,因为它需要根据系统的液位情况来实现稳定的控制。
在模糊控制中,首先需要建立一套模糊规则系统,该系统包括模糊化、模糊推理和解模糊化这三个步骤。
模糊化是将实际输入转换为模糊集合的过程。
在水箱液位控制中,可以将液位分为低、中和高三个模糊集合。
通过将实际液位值映射到这些模糊集合中的一个,来表示液位状态。
模糊推理是根据一组模糊规则,将模糊输入转换为模糊输出的过程。
通过将输入和规则进行匹配,确定输出的模糊集合。
在水箱液位控制中,可以使用如下规则:如果液位低且液位变化小,则控制信号为增大水流量;如果液位高且液位变化大,则控制信号为减小水流量;如果液位中等且液位变化适中,则控制信号为不变。
解模糊化是将模糊输出转换为实际的控制信号的过程。
在水箱液位控制中,可以使用模糊加权平均值的方法来进行解模糊化。
通过将模糊集合和其对应的权重进行加权平均计算,得到最终的控制信号。
在MATLAB中,可以使用Fuzzy Logic Toolbox来实现水箱液位模糊控制仿真设计。
首先需要建立输入和输出的模糊化和解模糊化函数,然后根据实际的模糊规则,构建模糊系统。
最后通过设定输入的模糊值,使用模糊系统进行推理和解模糊,得到最终的控制信号。
总结起来,智能控制及MATLAB实现水箱液位模糊控制仿真设计包括建立模糊规则系统,进行模糊化、模糊推理和解模糊化三个步骤,通过Fuzzy Logic Toolbox来实现模糊控制系统的构建和仿真。
通过利用模糊控制的方法,可以实现水箱液位的自动稳定控制,并提高了控制系统的鲁棒性和适应性。
控制系统的MATLAB 仿真1 MATLAB 简介MATLAB 是Mathworks 公司开发的一种集数值计算、符号计算和图形可视化三大基本功能于一体的功能强大、操作简单的优秀工程计算应用软件。
MATLAB 不仅可以处理代数问题和数值分析问题,而且还具有强大的图形处理及仿真模拟等功能。
从而能够很好的帮助工程师及科学家解决实际的技术问题。
MATLAB 的含义是矩阵实验室(Matrix Laboratory ),最初主要用于方便矩阵的存取,其基本元素是无需定义维数的矩阵。
经过十几年的扩充和完善,现已发展成为包含大量实用工具箱(Toolbox )的综合应用软件,不仅成为线性代数课程的标准工具,而且适合具有不同专业研究方向及工程应用需求的用户使用。
MATLAB 最重要的特点是易于扩展。
它允许用户自行建立完成指定功能的扩展MATLAB 函数(称为M 文件),从而构成适合于其它领域的工具箱,大大扩展了MATLAB 的应用范围。
目前,MATLAB 已成为国际控制界最流行的软件,控制界很多学者将自己擅长的CAD 方法用MATLAB 加以实现,出现了大量的MATLAB 配套工具箱,如控制系统工具箱(control systems toolbox ),系统识别工具箱(system identification toolbox ),鲁棒控制工具箱(robust control toolbox ),信号处理工具箱(signal processing toolbox )以及仿真环境SIMULINK 等。
(1) MATLAB 的安装本节将讨论操作系统为Microsoft Windows 环境下安装MATLAB6的过程。
将MATLAB6的安装盘放入光驱,系统将自动运行auto-run.bat 文件,进行安装;也可以执行安装盘内的setup.exe 文件启动MATLAB 的安装程序。
启动安装程序后,屏幕将显示安装MATLAB 的初始界面,根据Windows 安装程序的常识,不断单击[Next],输入正确的安装信息,具体操作过程如下:输入正确的用户注册信息码;选择接收软件公司的协议;输入用户名和公司名;选择MATLAB 组件(Toolbox );选择软件安装路径和目录;单击[Next]按钮进入正式的安装界面。
自动控制常见MATLAB 函数的应用
1、在matlab 中采用roots 函数求解多项式的根,采用conv 函数实
现多项式的积,相互连接的模块的模型求解也相当简单(1)、串联连接命令G=G1*G2(2)、并联连接命令G=G 1±G2(3)、反馈连接命令G=feedback (G1,G2,Sign )(sign 用来表示系统是正反馈或负反馈,sign=-1为负反馈)
例如:①
程序如下:
>>p=[1304];
>>roots(p)
ans =
-3.3553
0.1777+1.0773i
0.1777-1.0773i
②、用matlab 实现:
程序如下:
>>p=[321];q=[14];
>>n=conv(p,q)
n =
31494③、一个传递函数模型,可以由下面的命令输入:32()34p s s s =++2
()(321)(4)n s s s s =+++325()345
s G s
s s s +=+++
>>num=[15];den=[1345];
>>G=tf(num,den)
Transfer function:
s +5
---------------------
s^3+3s^2+4s +5
④、如下图所示,前向传递函数为G (S )
,反馈回路传递函数为H(S),利用feedback 计算系统的闭环传递函数
程序如下:
>>numg=[1];deng=[50000];
>>numh=[11];denh=[12];
>>[num,den]=feedback(numg,deng,numb,denh,-1);
>>[num,den]=feedback(numg,deng,numh,denh,-1);
>>G=tf(num,den)
()
R S −−−→
Transfer function:
s +2
--------------------------
500s^3+1000s^2+s +1
2、在matlab 中,可以轻松的求解系统的所有极点,从而判断其稳定性
例子:系统的传递函数为:用matlab 判断其稳定性,程序如下:
>>num=[1,7,24,24];
>>den=[1:9];
>>roots(den)
ans =
-1.2888+0.4477i
-1.2888-0.4477i
-0.7244+1.1370i
-0.7244-1.1370i
0.1364+1.3050i
0.1364-1.3050i
0.8767+0.8814i
0.8767-0.8814i
可见4个极点带有正实部,所以系统不稳定
3287653272424()2346789
S S S G S S S S S S S S +++=+++++++
3、MATLAB 中给出了一个函数step ()直接求取线性系统的阶跃
响应,该函数的调用方式如下:y=step (G,t )(G 为系统的传递函数,t 为要计算的点到所在时刻的值组成的时间向量,t 一般可以由t=0:dt :t_end 等步长地产生,t-end 为终值时间,而dt 为步长;y 为系统的输出量)
例子:系统的传递函数为:线性系统的稳态值可以通过dcgain ()来求得,impulse ()函数可以求出系统的脉冲响应
程序如下:>>num=[1,7,24,24];den=[1,10,35,50,24];
>>G=tf(num,den);
>>t=0:0.1:10;
>>y=step(G,t);
>>plot(t,y)
>>Y=dcgain(G)
Y =
1
>>hold on
>>y1=impulse(G,t);
>>plot(t,y1)
3272424()S S S G S +++=++++
例子:控制精度变化时,系统的闭环传递函数为:
应用如下MATLAB 语言,可得到=10、=40、=80时的系统响应。
可见,当
时,系统响应速度明显加快,但出现振荡
程序如下:
>>ka=80;
>>nf=[5000];df=[11000];
>>ng=[1];dg=[1200];>>[num,den]=series(ka*nf,df,ng,dg);
>>[n,d]=cloop(num,den);
>>t=[0:0.01:2];
>>y=step(n,d,t);
>>plot(t,y,'black'),grid
on
a k 123212()()5000()1()()1020200005000a a a a
k G S G S K s k G S G S s s s k φ==++++a k a k a k 80
a k =
4、用matlab绘制根轨迹
MTLAB中提供了rlocus()函数,用来绘制给定的根轨迹,该函数
的调用方式为:R=rlocus(G,K)
(G为系统的模型,
输入变量k为用户自己选择的增益,返回的变量R为根轨迹各点构成的复数矩阵)如果k值不给定,则该函数自动选择k,在这种情况下,调用格式为[,]()
R K r l o c u s G
这样产生的k值可以用来确定闭环系统稳定的增益范围
如果在函数调用中不返回任何参数,则将在图形窗口中自动绘制系统
根轨迹曲线Rlocus(G)
Rlocufind ()函数允许用户求取根轨迹上指定点处的开环增益,并将该增益下的所有的闭环极点显示出来:
[K P]=rlocufind(G)
例子:闭环系统的闭环传递函数为:特征方程可以写为:在解题前,必须将特征方程写成下面形式:K 为所关心的参数,变化范围从0到
,绘制的根轨迹如下:程序如下:
>>num=[11];
>>den=[1560];
>>G=tf(num,den);
>>hold on;rlocus(G);
>>[K,P]=rlocfind(G)
Select a point in the graphics window
selected_point =
-2.4621+0.0248i
K =
0.4196
P =
-2.4655+0.0246i
-2.4655-0.0246i (1)(2)()(2)(3)(1)K s s s s s s K s φ++=++++110(2)(3)s K
s s s ++=++()10()
P s K Q s +=+∞
-0.0690
例子:研究系统根轨迹曲线和阶跃响应曲线之间的关心,考虑系统输
出:输入为单位阶跃信号时:程序如下:>>t=0:0.2:15;
>>K=16.2859;
>>num=K*[143];
>>den=[156+K K];
>>G=tf(num,den);
>>y=step(G,t);
>>plot(t,y)
>>grid
on
(1)(2)()()()()K s s C s s R s R s φ++==
++++
5、在MATLAB中,使用较多的频域稳定性函数有bode函数、
nyquist函数、nichols函数、margin函数,pade函数,ngrid函数等。
MATLAB的控制系统工具箱中提供了bode()函数来求取、绘制给给定线性系统的伯德图,函数调用方式如下:
[mag,pha]=bode(G.,w)
其中G为系统的对象模型,变量w为用户制定频率点构成的向量,该函数在这些频率点上对系统进行频率分析。
mag、pha对应系统的幅值和相位向量,相位的单位为角度。
同时经常要将幅值向量转换成分贝形式,MATLAB命令为:
该函数的另一种调用格式为:[mag ,pha ,w]=bode (G.)
这时w 可以自动生成,如果在调用bode 函数时不返回变量,则MATLAB 自动生成系统的伯德图。
一般和计算增益裕度和相角裕度的函数margin 结合使用
例子:考虑系统传递函数:则可以用下面的命令绘出系统的伯德图,计算出增益裕度和相角裕度,程序如下:
>>w=logspace(-1,1,200);
>>num=[13];
>>den=[conv([11],[12]),0];
>>G=tf(num,den);
>>[x y w]=bode(G,w);
>>margin(x,y,w)magdB=20*log10(mag )
3()(1)(2)
s G s s s s +=++
例子:考虑系统传递函数则可用下面命令绘出系统的奈氏图>>num=[0.5];
>>den=[1210.5];
>>[re,im]=nyquist(num,den);>>plot(re,im),grid on 3
20.5()20.5G s s s s =+++。