780 likes | 1.05k Views
第 6 章 控制系统计算机辅助设计. 返回总目录. 采用 MATLAB ,不仅可以解决控制系统的分析问题,还能解决控制系统的设计问题,并使设计过程大大简化,大大提高设计效率。本章将详细介绍如何利用 MATLAB 提供的功能函数进行控制系统的设计。从内容安排上,本章将分别介绍工程上几种常见的控制系统设计方法及其基本原理、设计步骤和相应的 MATLAB 功能函数,然后分别以实例介绍控制系统的具体设计过程,并对设计结果进行校验和 MATLAB 仿真。. 概 述.
E N D
第6章控制系统计算机辅助设计 返回总目录
概 述 本章介绍控制系统中的计算机辅助设计,即在给定受控对象数学模型和系统性能指标的条件下,采用MATLAB函数工具,设计一个能够达到给定性能指标的控制器(又称为校正器或者调节器),也就是确定控制器的结构与参数。这里,受控对象数学模型主要是指传递函数和状态空间表达式;系统性能指标主要包括频域指标(含增益裕量 、相位裕量 、剪切频率 等)、时域指标(含稳态误差 、静态误差系数K、超调量 、峰值时间 、调节时间 等)、最优控制中的线性二次型指标等。本章要设计的控制器主要包括常用的超前/滞后校正器(包括超前校正器、滞后校正器、滞后-超前校正器)、比例积分微分(PID)控制器(包括P、PI、PD、PID四种控制器)和线性二次型状态反馈最优控制器。设计超前/滞后校正器主要采用Bode图设计法,设计PID控制器主要采用Ziegler-Nichols经验整定公式,最优控制器设计主要是求解代数黎卡提(Riccati)方程。设计工具就是MATLAB提供的有关控制系统分析和设计的功能函数。
概 述 单位负反馈闭环控制系统的基本结构如图6.1所示。图中控制器Gc(s)就是要设计的控制器,可以是超前/滞后校正器或者是PID控制器。
超前/滞后校正器的Bode图设计 超前/滞后校正器的Bode图设计主要就是根据开环系统传递函数、剪切频率 及其相位裕量 、-180°相位穿越频率 及其增益裕量 来进行设计。 对于单位负反馈系统,其开环传递函数为 ,设在 处,若系统开环频率特性的幅值 =1,在Bode图中即 ,则称为系统的剪切频率或者叫0dB线穿越频率。Bode图如图6.2所示,相位裕量 定义为 (6.1) 式中, 表示系统开环频率特性在 处的相位角。 设在 处,若系统开环频率特性的相位角 =-180°,则角频率 称为-180°相位穿越频率。Bode图如图6.2所示,增益裕量幅值 定义为 (6.2)
超前/滞后校正器的Bode图设计 增益裕量幅值 用分贝(dB)表示为 (6.3) 在系统的开环频率特性中,通常用相位裕量 和增益裕量 来描述系统的相对稳定性。根据自动控制理论,若相位裕量 (>0)越大,系统的相对稳定性越好,如图6.2(a)所示;若 ,系统处于临界稳定状态;若<0,系统是不稳定的, 如图6.2(b)所示。系统相位裕量 表示使系统达到临界状态所需要的附加相移。若增益裕量 (>0)越大或者 越小,系统的相对稳定性越好,如图6.2(a)所示;若增益裕量 =0或者 =1,系统处于临界稳定状态;若增益裕量 <0或者 <1,系统是不稳定的,如图6.2(b)所示。 图6.2 Bode图
超前/滞后校正器的Bode图设计 一. 超前校正器的Bode图设计 1. 超前校正器的基本特性 超前校正器的等效RC电路如图6.3所示,该电路的传递函数可为 (6.4) 式中 阻抗 容易看出, 总是小于1。那么,超前校正器的一般公式为 (6.5) 图6.3 超前校正器的等效RC电路 超前校正器的幅频特性和相频特性分别为 (6.6) (6.7)
超前/滞后校正器的Bode图设计 因 总是小于1,则相位角 总是大于0,所以又把该校正器称为相位超前校正器。 幅值 取常用对数再乘以20,得到对数幅频特性 (单位用分贝dB表示)为 (6.8) 为了直观表达超前校正器的幅频特性和相频特性,现在假设式6.5中T=0.2,因 , 分别取0.2、0.5、0.8三个值时,执行以下MATLAB程序绘制超前校正器的Bode图, 图6.4 超前校正器的Bode图(T=0.2)
超前/滞后校正器的Bode图设计 如图6.4所示。MATLAB程序如下: s=tf('s'); %定义拉普拉斯变换,若按第4句Gc=alfa*(T*s+1)/( alfa*T*s+1)输入模型,须先写该句 T=0.2; for alfa=0.2:0.3:0.8 Gc=alfa*(T*s+1)/( alfa*T*s+1);%超前校正器的传递函数 bode(Gc),hold on %bode( )函数画Bode图,hold on 命令是指在同一坐标图中画线 end gtext('alfa=0.2'); %程序运行后,在图上出现十字鼠标,在十字鼠标处单击可打印’ alfa=0.2’ gtext('alfa=0.5'); gtext('alfa=0.8'); gtext('alfa=0.2'); gtext('alfa=0.5'); gtext('alfa=0.8'); 由图6.4可知,超前校正器的基本特性是,其相频曲线具有正相移(超前相位角)。超前校正器主要是利用它的相位超前特性,但需要附加增益,以抵消低频段增益下降。超前校正器是一个高通滤波器,抗高频干扰的性能较差,所以,一般不能取得太小,>0.1。 采用超前校正设计可使校正后系统相位裕量增加,从而提高了系统的相对稳定性,同时也增加了系统的稳态误差,为了减少误差,需使用大增益的超前校正器,故工程上常采用由集成运算放大器构成的有源超前校正器。超前校正器也会使校正后系统的剪切频率比校正前大,这样会使阶跃响应过程加快,增加了系统带宽。所以要求稳定性好、超调量小和动态响应过程快的系统经常采用这个方法。
超前/滞后校正器的Bode图设计 2. 超前校正器的Bode图设计步骤 在给出受控对象传递函数和性能指标(稳态误差指标、相位裕量 或者剪切频率 )的要求下,超前校正器的Bode图设计步骤如下: (1) 根据系统对稳态误差的要求,求出系统开环增益K。 (2) 根据求得的开环增益K,画出系统校正前的Bode图,并计算校正前系统的增益裕量Gm、相位裕量Pm、剪切频率 。检验这些性能指标是否符合要求。若不符合,则进行下一步。 (3) 计算需要增加的最大相位超前量 ,即 +(5°~10°) (6.9) 式中,P0是校正后期望的相位裕量,Pm是校正前的相位裕量,另外,式中还增加5°~10°,意思是考虑了系统在校正前后剪切频率的移动所带来的原系统相位的滞后量,一般在5°~10°。 (4) 再由最大相位超前量 求超前校正器 中 ,即 (6.10) 式中, 。
超前/滞后校正器的Bode图设计 (5) 确定系统超前校正后的剪切频率 。在Bode图中,剪切频率就是对应产生期望相位裕量P0的频率 。因为 在 处的增加量为20lg =10lg ,所以 应该选在未校正系统的 处,当 被补偿后,则 =10lg 。也就是,在未校正系统对数幅频特性的对数幅值为10lg 处所对应的频率就是系统超前校正后的剪切频率 。 求剪切频率 可采用MATLAB中的插值函数yi=spline(x, y, xi)来计算,spline函数的基本用法是:在yi=spline(x, y, xi)中,y是x 的函数,即y=f(x),x和y是一一对应关系,均是有多个元素的向量,即x=[x1,x2,…,xn],y=[y1,y2,…,yn];现已知xi在闭区间[x1,xn]中,则可采用yi=spline(x, y, xi)函数求取xi对应的yi。 在超前校正设计中,现已知未校正系统对数幅频特性,采用MATLAB函数[mag,phase,w]=bode(G)可得到对数幅频特性曲线上每个频率w值对应的对数幅值mag和相位角phase。再用函数wc=spline(mag, w, am) 可计算出am=10lg 所对应的频率wc,即系统超前校正后的剪切频率 。spline函数的用法详见MATLAB的帮助信息。
超前/滞后校正器的Bode图设计 (6) 求超前校正器传递函数中的T,即 (6.11) (7) 在系统中串联一个增益为 的放大器,可补偿超前校正器引入带来的增益损失,则超前校正器的传递函数可写为 (6.12) (8) 根据校正后的开环传递函数绘制Bode图,验证系统性能指标。校正后的开环传递函数为 ,其中 是超前校正器传递函数, 是校正前系统的开环传递函数。 (9) 绘制闭环系统的阶跃响应曲线。
超前/滞后校正器的Bode图设计 3.超前校正器的设计举例 【例6.1】 在图6.1中,已知单位负反馈系统被控对象的传递函数为 (6.13) 试设计系统的超前校正器 ,使之满足: (1) 在斜坡信号r(t)=v0t作用下,系统的稳态误差ess≤0.001v0; (2) 校正后系统的相位裕量Pm范围为:43°~50°。 解: (1) 由稳态误差要求,求系统开环增益K。 根据自动控制理论和题目要求,该系统在斜坡信号r(t)=v0t作用下的稳态误差 ≤0.001v0 (6.14) 所以,系统开环增益K≥1000,取K=1000。 则被控对象的传递函数为 (6.15)
超前/滞后校正器的Bode图设计 (2) 绘制系统校正前的Bode图和单位阶跃响应曲线,并计算校正前系统的增益裕量Gm、相位裕量Pm。 绘制系统校正前Bode图的MATLAB程序如下: >> s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); margin(G) 注:margin( )函数用于绘制Bode图,计算并显示出增益裕量Gm及其穿越频率 ,相位裕量Pm及其剪切频率 。 上述程序运行后,得到系统校正前的Bode图如图6.5所示。 该被控对象构成单位负反馈系统后,绘制该系统在校正前的单位阶跃响应曲线的MATLAB程序如下: >>s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); sys= feedback(G,1); % feedback(G,1)函数是用G构成单位负反馈闭环系统sys step(sys)% step(sys)函数是画出闭环系统sys的单位阶跃响应曲线
超前/滞后校正器的Bode图设计 上述程序运行后,得到系统校正前的单位阶跃响应曲线如图6.6所示。 由图6.5可知,该系统校正前的增益裕量Gm为-6.01dB、相位裕量Pm为-1.28°,显然系统的增益裕量Gm和相位裕量Pm均为负值,系统不稳定,从图6.6也验证了这一点,系统的单位阶跃响应曲线是发散的。需要对系统进行超前校正。 图6.5 系统校正前的Bode图 图6.6 系统校正前的单位阶跃响应曲线
超前/滞后校正器的Bode图设计 (3) 求超前校正器的传递函数。校正后系统的相位裕度Pm范围为:43°~50°,取Pm=45°,按超前校正器设计步骤,编写的MATLAB程序如下: >>s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); [mag,phase,w]=bode(G); [Gm,Pm]=margin(G); QWPm=45; FIm=QWPm-Pm+5; FIm=FIm*pi/180; alfa=(1-sin(FIm))/(1+sin(FIm)); adb=20*log10(mag);am=10*log10(alfa); wc=spline(adb,w,am); %该句用法,前已说明 T=1/(wc*sqrt(alfa)); alfat=alfa*T; Gc=tf([T 1],[alfat 1]) 上述程序部分语句注释: [mag,phase,w]=bode(G);该句只计算Bode图上多个频率点w对应的幅值mag和相位phase,三个变量w,mag,phase均为有多个元素的矢量。该句不绘Bode图。 [Gm,Pm]=margin(G); 该句只计算Bode图的增益裕量Gm和相位裕量Pm,不绘Bode图。 Gc=tf([T 1],[alfat 1]);该句是以[T 1]为分子,[alfat 1]为分母构成传递函数Gc 上述程序运行后,得到超前校正器的传递函数 (6.16)
超前/滞后校正器的Bode图设计 (4) 校正后系统的开环传递函数为 ,根据该开环传递函数绘制Bode图,其MATLAB程序如下: >>s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); Gc=(0.07555*s+1)/(0.009329*s+1); margin(Gc*G) 上述程序部分语句注释:margin( *G);该句中 *G表示 和G串联构成开环传递函数 ,margin( *G)函数绘制Bode图。 上述程序运行后,校正后系统的Bode图如图6.7所示。 由图6.7可知,校正后系统的相位裕量Pm为47.7° ,满足本题目相位裕量Pm范围为43°~50°的设计要求。 校正后系统的单位阶跃响应曲线如图6.8所示,系统经过超前校正后,是稳定的,其MATLAB程序如下: >>s=tf('s'); G=1000/(s*(2*s+1)*(0.002*s+1)); Gc=(0.07555*s+1)/(0.009329*s+1); step(feedback(Gc*G,1))
超前/滞后校正器的Bode图设计 图6.7 校正后系统的Bode图 图6.8 校正后系统的单位阶跃响应曲线
超前/滞后校正器的Bode图设计 二. 滞后校正器的Bode图设计 1. 滞后校正器的基本特性 滞后校正器的等效RC网络图如图6.9所示,滞后校正器的传递函数为 (6.17) 式中,阻抗 ; ; 容易看出, 总是大于1。 相位滞后校正器的幅频特性和相频特性分别为 (6.18) (6.19) 因 大于1,则 总是小于0,所以又把该校正器称为相位滞后校正器。 对幅值 取常用对数再乘以20,得到对数幅频特性 (单位用分贝dB表示)为 (6.20) 可见, 因大于1, 则小于0。
超前/滞后校正器的Bode图设计 为了直观表达滞后校正器的幅频特性和相频特性,现在假设式(6.17)中T=1,因 , 分别等于1.5、2.0、2.5三个值时,执行以下MATLAB程序,绘制相位滞后校正器的Bode图,如图6.10所示。MATLAB程序如下: >>s=tf('s'); T=1; for beta=1.5:0.5:2.5 Gc=(T*s+1)/( beta*T*s+1); bode(Gc),hold on end 滞后校正器的基本特性是,其相频曲线具有负相移(滞后相位角)。滞后校正器是一个低通滤波器,其 越大,高频衰减越厉害。应用滞后校正主要是利用其高频衰减特性。 采用滞后校正器将使校正后系统的剪切频率比校正前小,系统的快速性能变差,但稳定性能得以提高,这意味着滞后校正是以牺牲系统的快速性来换取系统稳定性的。如果滞后校正器采用RC无源网络,虽无增益损失,但有负载效应之弊,故工程上常采用由集成运算放大器构成的有源滞后校正器。
超前/滞后校正器的Bode图设计 图6.10 滞后校正器的Bode图(T=1)
超前/滞后校正器的Bode图设计 2. 滞后校正器的Bode图设计步骤 在给出受控对象传递函数和性能指标(稳态误差指标、相位裕量 或者剪切频率 )的要求下,滞后校正器的Bode图设计步骤如下: (1) 根据系统对稳态误差的要求,求出系统开环增益K。 (2) 根据求得的开环增益K,画出系统校正前的Bode图,并计算校正前系统的增益裕量Gm、相位裕量Pm、剪切频率 。检验这些性能指标是否符合要求。若不符合,则进行下一步。 (3) 根据题目对滞后校正后系统的期望相位裕量P0,确定一个新的剪切频率 。其方法是:先由期望相位裕量P0(单位:角度)计算校正前系统在 处的相位角 ,即 =-180°+P0+(5°~12°) (6.21) 式中,(5°~12°)为相位滞后网络在 处引起的相位滞后量。
超前/滞后校正器的Bode图设计 再根据校正前系统的相位角 计算出对应的频率,就是要求的期望剪切频率 的值。其MATLAB程序是: fic= -180+P0+5; %P0为期望相位裕量P0 [mu,pu,w]=bode(G0); % G0为受控对象传递函数 wc2=spline(pu,w,fic); %计算期望剪切频率 的值(即wc2) MATLAB的spline( )函数的使用方法前已述及。 如果已经确定了一个新的剪切频率 ,可以不进行第(3)步的计算,而直接进入第(4)步。确定新的剪切频率 的一般方法可形象理解为:在原系统的Bode 图上,将原剪切频率 向左移,移到使相位裕量 达到期望的相位裕量P0,这时的剪切频率便是新的剪切频率 。根据该剪切频率 ,可设计合适的滞后校正器,使校正后的系统达到期望的相位裕量 ,从而使系统控制性能更好。
超前/滞后校正器的Bode图设计 (4) 由新的剪切频率 求滞后校正器 中,因为经串联滞后校正后的系统在剪切频率 处的对数幅值等于0,即 (6.22) (6.23) 所以 (6.24) 式中, 为校正后系统在剪切频率 处的对数幅值,即 (6.25)
超前/滞后校正器的Bode图设计 (5) 确定滞后校正器 中T。 根据自动控制理论, 距离剪切频率 越远,滞后校正器的滞后特性对系统影响越小,所以, 选得越小 越好;但如果 太小,滞后校正器对剪切频率 的相位滞后量的影响又不大。所以, 一般选择为 ~ (6.26) 至此,滞后校正器 设计完毕。 (6) 绘制系统经过滞后校正后的Bode图,并验证系统频域性能指标是否满足设计要求。 (7) 绘制闭环系统的阶跃响应曲线。
超前/滞后校正器的Bode图设计 3.滞后校正器的设计举例 【例6.2】 在图6.1中,已知单位负反馈系统被控对象的传递函数为 (6.27) 试设计系统的滞后校正器 ,使之满足: (1) 在斜坡信号r(t)=v0t作用下,系统的稳态误差ess≤0.02v0; (2) 校正后系统的相位裕度Pm范围为:43°~50°; (3) 校正后系统的剪切频率 ≥3.6rad/s。 解: (1) 由稳态误差要求,求系统开环增益K。 根据自动控制理论和题目要求,该系统在斜坡信号r(t)=v0t作用下的稳态误差 ≤0.02v0 (6.28) 所以,系统开环增益求K≥50,取K=50。 则被控对象的传递函数为 (6.29)
超前/滞后校正器的Bode图设计 (2) 绘制系统校正前的Bode图和闭环系统单位阶跃响应曲线,并计算校正前系统的增益裕量Gm、相位裕量Pm、剪切频率 。 绘制系统校正前Bode图的MATLAB程序如下: s=tf('s'); G=50/(s*(0.2*s+1)*(0.01*s+1)); figure(1) %该句是开出第1个图形窗口,准备绘制Bode图 margin(G) figure(2) %该句是开出第2个图形窗口,准备绘制单位阶跃响应曲线 step(feedback(G,1)) 上述程序运行后,得到校正前系统的增益裕量Gm= 6.44dB,相位裕量Pm= 9.3528°,剪切频率 = 15.3rad/s。显然校正前系统的相位裕量Pm<43°,不满足设计要求。开环系统的Bode图如图6.11所示。校正前闭环系统单位阶跃响应曲线如图6.12所示,系统在动态响应中不稳定,处于振荡状态。
超前/滞后校正器的Bode图设计 图6.11 系统校正前的Bode图 图6.12 系统校正前的单位阶跃响应曲线
超前/滞后校正器的Bode图设计 (3) 求滞后校正器的传递函数。校正后系统的相位裕度Pm范围为:43°~50°,取Pm= 46°,按滞后校正器设计步骤,编写的MATLAB程序如下: s=tf('s'); K=50; G0=K/(s*(0.2*s+1)*(0.01*s+1)); P0=46; fic= -180+P0+5; [mu,pu,w]=bode(G0); wc2=spline(pu,w,fic); d1=conv(conv([1 0],[0.2 1]),[0.01 1]); na=polyval(K,j*wc2); da=polyval(d1,j*wc2); G=na/da; g1=abs(G); %abs( )函数是取绝对值,这里表示求复数G的模(或频率特性的幅值)。 L=20*log10(g1); alfa=10^(L/20);T=1/(0.1*wc2); alfat=alfa*T; Gc=tf([T 1],[alfat 1]) figure(1) margin(Gc*G0) figure(2) step(feedback(Gc*G0,1))
超前/滞后校正器的Bode图设计 上述程序部分语句注释: d1=conv(conv([1 0],[0.2 1]),[0.01 1]);该语句中conv([1 0],[0.2 1])是把(s+0)与(0.2*s+1)相乘得到s*(0.2*s+1),d1=conv(conv([1 0],[0.2 1]),[0.01 1])是把s*(0.2*s+1)与(0.01*s+1) 相乘得到s*(0.2*s+1)*(0.01*s+1),即多项式d1=0.02s^3+0.3s^2+s+0。 da=polyval(d1,j*wc2);该句是用j*wc2代替多项式d1=0.02s^3+0.3s^2+s+0中的s,计算出复数,该句计算后da=1.5870+2.0567j。na=polyval(K,j*wc2);也一样,该句na=50。 上述程序运行后,得到滞后校正器的传递函数为 (6.30) 上述程序运行后,得到校正后系统的Bode图如图6.13所示。
超前/滞后校正器的Bode图设计 由图6.13可知,滞后校正后系统的相位裕量Pm=45.7°,比选择的相位裕量Pm=46°少了0.3°,但是已满足本题目设计要求。滞后校正后系统的单位阶跃响应曲线如图6.14所示,表明系统经过滞后校正后是稳定的。 图6.14 系统校正前的单位阶跃响应曲线 图6.13 系统校正前的Bode图
超前/滞后校正器的Bode图设计 三. 滞后-超前校正器的Bode图设计 1. 滞后-超前校正器的作用 滞后-超前校正器是既有滞后校正的作用又有超前校正作用的校正器,它不仅能提高系统的稳定性能,还可以减少超调量、加快系统响应速度。其传递函数为 (6.31) 式中, 为滞后校正器传递函数, >1; 为超前校正器传递函数,0< <1。 2. 滞后-超前校正器的Bode图设计步骤 在给出受控对象传递函数和性能指标(稳态误差指标、相位裕量 或者剪切频率 )的条件下,滞后-超前校正器的Bode图设计步骤如下: (1) 根据系统对稳态误差的要求,求出系统开环增益K。 (2) 根据求得的开环增益K,画出系统校正前的Bode图和阶跃响应曲线,并计算校正前系统的增益裕量Gm、相位裕量Pm、剪切频率 。检验这些性能指标是否符合要求。若不符合,则进行下一步。
超前/滞后校正器的Bode图设计 (3) 滞后校正器传递函数参数的确定。滞后校正器传递函数为 (6.32) 式中, >1, 应该远小于校正前系统的剪切频率 。工程上一般选择 =0.1 (6.33) 并且 =8~10 (6.34) (4) 选择校正后系统的期望剪切频率 。要考虑两点,一是在该期望剪切频率 处,使得原系统串联滞后校正器后的综合幅频值衰减到0dB;二是在该期望剪切频率 处,超前校正器提供的相位超前量达到系统期望相位裕量的要求。 (5) 超前校正器传递函数参数的确定。超前校正器传递函数为 , <1 (6.35) 若原系统串联滞后校正器后的幅频分贝值为 ,那么,在原系统串联滞后校正器后再串联超前校正器后,在经过滞后-超前校正后的期望剪切频率 处,应该满足下式: (6.36)
超前/滞后校正器的Bode图设计 即 (6.37) 那么 (6.38) 同时,因为 (6.39) 则,T2由下式确定 (6.40) (6) 绘制系统经过滞后-超前校正后的Bode图,并验证系统频域性能指标是否满足设计要求。 (7) 绘制闭环系统的阶跃响应曲线。
超前/滞后校正器的Bode图设计 3.滞后-超前校正器的设计举例 【例6.3】 在图6.1中,已知单位负反馈系统被控对象的传递函数为 (6.41) 试设计系统的滞后-超前校正器 ,使之满足。 (1) 在单位斜坡信号r(t)=t作用下,系统的速度误差系数Kv=10s-1; (2) 校正后系统的相位裕量Pm范围为:50°~60°; (3) 校正后系统的剪切频率 ≥1rad/s。 解: (1) 由稳态误差要求,求系统开环增益K。 根据自动控制理论和题目要求,由速度误差系数 定义并有 (6.42) 所以,原系统开环增益K=10。则被控对象的传递函数为 (6.43)
超前/滞后校正器的Bode图设计 (2) 绘制系统校正前的Bode图和闭环系统单位阶跃响应曲线,并计算校正前系统的增益裕量Gm、相位裕量Pm、剪切频率 。绘制系统校正前Bode图的MATLAB程序如下: s=tf('s'); G0=10/(s*(0.8*s+1)*(0.6*s+1)); figure(1) margin(G0) figure(2) step(feedback(G0,1)) 上述程序运行后,得到系统校正前的Bode图和闭环系统单位阶跃响应曲线分别如图6.15和图6.16所示。校正前系统的增益裕量Gm=-10.7dB、相位裕量Pm=-29.6°、剪切频率 =2.49rad/s。愿系统的增益裕量Gm和相位裕量Pm均为负值,系统是不稳定的,阶跃响应曲线也是发散的。
超前/滞后校正器的Bode图设计 (3) 求滞后-超前校正器的传递函数。按滞后-超前校正器的Bode图设计方法和步骤,先计算滞后校正器的参数,然后计算超前校正器的参数,最后绘制原系统与滞后-超前校正器串联后的开环传递函数的Bode图,以及构成单位负反馈控制系统的单位阶跃响应曲线。其MATLAB程序如下:
超前/滞后校正器的Bode图设计 wc2=3; %wc2为可调参数 s=tf('s'); G0=10/(s*(0.8*s+1)*(0.6*s+1)); [Gm,Pm,wc1]=margin(G0); alfa1=9;T1=1/(0.1*wc1); alfat1=alfa1*T1; Gc1=tf([T1 1],[alfat1 1]) %计算并显示滞后校正器传递函数 sope=G0*Gc1; %计算原系统与滞后校正器串联后的传递函数 num=sope.num{1};den=sope.den{1}; na=polyval(num,j*wc2); da=polyval(den,j*wc2); G=na/da; g1=abs(G); L=20*log10(g1); alfa=10^(L/20); T=1/(wc2*(alfa)^(1/2)); alfat=alfa*T; Gc2=tf([T 1],[alfat 1]) %计算并显示超前校正器传递函数 G=G0*Gc1*Gc2; % Gc1*Gc2即为滞后-超前校正器的传递函数 sys=feedback(G,1); figure(1) margin(G) figure(2) step(sys)
超前/滞后校正器的Bode图设计 在运行上述程序中,采用凑试法,调节wc2的值,直到满足系统要求的性能指标为止。在本例中,当wc2=3时,绘制经滞后-超前校正后的Bode图和单位阶跃响应曲线分别如图图6.17和图6.18所示。从图6.17和图6.18上可看出,校正后系统的增益裕量Gm=19.3dB、相位裕量Pm=55.3°、剪切频率 =1.19rad/s,均满足题目设计要求,系统在20s后趋于稳定。这时,滞后校正器的传递函数为 (6.44) 超前校正器的传递函数为 (6.45) 那么,滞后-超前校正器的传递函数为 (6.46) 请读者验证:在例6.3中,如果只进行滞后校正或者超前校正,能否达到性能指标要求?
PID控制器设计 PID(比例、积分、微分)控制器是基于经典控制理论的一种控制策略,其算法简单实用,PID控制并不要求受控对象的精确数学模型,这使得PID控制在工业生产过程控制中,应用十分广泛。 一. PID控制器的传递函数 1. 连续PID控制器的传递函数 如图6.1所示,连续PID控制器的一般表达式为 (6.47) 式中,比例系数Kp、积分系数Ki和微分系数Kd分别是对系统误差信号e(t)及其积分 与微分 的加权系数。
PID控制器设计 PID控制器通过对误差信号e(t)的加权计算,得到控制信号u(t),驱动受控对象,使得误差e(t)按减少的方向变化,从而达到控制要求。 对式(6.47)作拉普拉斯变换,整理后,得到连续PID控制器的传递函数 (6.48) 式中,Kp是比例系数,Ti= 是积分时间常数,Td= 是微分时间常数。 当Ti→∞,Td=0时, ,这叫比例(P)控制器; 当Td=0时, ,这叫比例积分(PI)控制器; 当Ti→∞时, ,这叫比例微分(PD)控制器; 当Ti≠∞,Td≠0时, ,这叫比例积分微分(PID)控制器。 显然,Kp、Ti、Td三个参数一旦确定,PID控制器的性能也就确定下来。
PID控制器设计 为避免纯微分运算,常常用一阶超前环节去近似纯微分环节,PID控制器的传递函数为 (6.49) 式中,N→∞时,则为纯微分运算。实际中,N不必过大,一般N=10,就可以逼近实际的微分效果。 2. 离散PID控制器 如果采样周期T很短,在第k个采样周期的误差e(t)的导数可近似表示为 (6.50) 在k个采样周期内对误差e(t)的积分可近似表示为 (6.51) 所以,离散PID控制器的表达式为 (6.52) 离散PID控制器可简写为 (6.53)
PID控制器设计 由式(6.53)可知,PID控制器的输出控制信号 与误差的累加 有关,会给控制带来不利影响。 由式(6.53)可推导出第(k-1)个采样周期的控制信号u(k-1),其表达式为 (6.54) 用式(6.53)减式(6.54),并整理后,可得到离散增量式PID控制器的表达式 (6.55) 由(6.55)可知,PID控制器输出的控制信号 由 计算,即控制器的第 k次输出 等于控制器的上一次输出 加上增量 即可。增量 只与最近三个误差变量 、 、 有关,有利于计算和提高控制性能。在计算机控制中经常采用离散增量式PID控制。 离散PID控制器的脉冲传递函数为 (6.56) 式中,Kp、Ki和Kd分别是比例系数、积分系数、微分系数。
PID控制器设计 二. PID参数对控制性能的影响 前已述及,PID控制器的Kp、Ti、Td三个参数的大小决定了PID控制器的比例、积分、微分控制作用的强弱。下面举例分别分析Kp、Ti、Td三个参数中一个参数发生变化而另两个参数保持不变时,对系统控制性能的影响。 【例6.4】 某电机转速控制系统如图6.19所示,采用PID控制器。试绘制系统单位阶跃响应曲线,分析Kp、Ti、Td三个参数对控制性能的影响。
PID控制器设计 1. 比例系数Kp对控制性能的影响 采用比例控制,即当比例系数Kp分别取1、2、3、4、5,且Ti→∞,Td=0时,根据图6.19绘制该系统的阶跃响应曲线,其MATLAB程序如下: s=tf('s'); G1=59/(s+59); G2=13.33/s; G12=feedback(G1*G2,1); G3=23647/(s+599); G4=5.2; G=G12*G3*G4; for Kp=1:1:5 Gc=feedback(Kp*G,0.0118); step(Gc),hold on end axis([0,0.2,0,130]);%该语句划定横坐标范围为[0,0.2],纵坐标范围为[0,130] gtext('Kp=1'); gtext('Kp=2'); gtext('Kp=3'); gtext('Kp=4'); gtext('Kp=5');
PID控制器设计 上述程序运行后,在只有比例(P)控制作用下,系统的阶跃响应曲线如图6.20所示。 由图6.20可知,随着比例系数Kp的增加,闭环系统响应的幅值增大,超调量加大,系统响应速度加快,同时会减少稳态误差,但不能消除稳态误差。经仿真调试,若Kp≥19时,系统的阶跃响应曲线变为发散型,闭环系统不稳定。也就是,比例系数Kp的无限增加,会使系统不稳定。
PID控制器设计 2.积分时间常数Ti对控制性能的影响 采用PI控制,即当固定比例系数Kp=1,积分时间常数Ti分别取0.03、0.05、0.07时,根据图6.19绘制该系统的阶跃响应曲线,其MATLAB程序如下: s=tf('s'); G1=59/(s+59);G2=13.33/s; G12=feedback(G1*G2,1); G3=23647/(s+599); G4=5.2; G=G12*G3*G4; Kp=1; for Ti=0.03:0.02:0.07 PIGc=tf(Kp*[Ti 1],[Ti 0]); Gc=feedback(PIGc*G,0.0118); step(Gc),hold on end axis([0,0.3,0,140]); gtext('Ti=0.03'); gtext('Ti=0.05'); gtext('Ti=0.07');
PID控制器设计 上述程序运行后,在只改变积分时间常数Ti的作用下,系统的阶跃响应曲线如图6.21所示。 由图6.21可知,随着积分时间常数Ti的增加,闭环系统响应的超调量降低,系统响应速度稍有变慢。积分环节的主要作用是消除系统的稳态误差。
PID控制器设计 3. 微分时间常数Td对控制性能的影响 采用PID控制,即当固定比例系数Kp=0.01,Ti=0.005,微分时间常数Td分别取10、60、110时,根据图6.19绘制该系统的阶跃响应曲线,其MATLAB程序如下: s=tf('s'); G1=59/(s+59);G2=13.33/s; G12=feedback(G1*G2,1); G3=23647/(s+599);G4=5.2; G=G12*G3*G4; Kp=0.01;Ti=0.005; for Td=10:50:110 PIDGc=tf(Kp*[Ti*Td Ti 1],[Ti 0]); Gc=feedback(PIDGc*G,0.0118); step(Gc),hold on end axis([0,15,0,110]); gtext('Td=10'); gtext('Td=60'); gtext('Td=110');