图11调整零点后的曲线匹配
即得到最终的系统传递函数为: Transfer function:
4.255e007 s^3 + 4.182e010
---------------------------------------------------------------------------------------------------------------------------------------
s^8 + 17.15 s^7 + 4570 s^6 + 5.992 3) 计算数据匹配率:
计算公式:FIT=100(1-norm(Y-YHAT)/norm(Y-mean(Y))) (in %) 代码如下: yhat=step(G,t);
num=norm(y-yhat,2); ym=mean(y); ymean=y; ymean(:)=ym;
den=norm(y-ymean,2); fit=100*(1-num/den)
得出数据匹配率为:fit =91.8822满足要求。
3设计控制器
3.1滞后-超前校正器设计
首先,我们必须得到系统的幅值裕度、频率、相位裕度、剪切频率。MATLAB控制系统工具箱中提供了margin函数,可以直接用于系统的幅值与相位裕度的求取。程序与结果如下:
>>[gm,pm,wg,wp] = margin(G)
gm=0.1510 pm=-112.7319 wg=9.9020 wp=14.0524
由于系统的相位裕度为负,系统闭环不稳定,且要补偿的角度很大,故考虑引入滞后-超前校正器。
将所给时域性能指标要求转化成频域指标,并据此设计滞后-超前校正器。 MATLAB的控制系统工具箱中提供了一个控制器设计界面sisotool()。可以得出几个控制系统设计界面,该界面允许和修改控制器的结构,允许添加零极点,调整增益,从而设计出控制器模型。以下是使用该界面设计超前校正器的过程:
11 / 16
调用语句sisotool(G),选择控制器结构如下图:其中H=1。选择Analysis->Other Loop Response菜单来设置系统响应的形式为阶跃响应。
在当前的系统的根轨迹图上按滞后-超前校正的形式选择两个实极点与实零点,而后调整零点、极点值,并使控制器增益尽量大,以满足系统开环增益?10,最终得到了较理想的响应曲线。
图12控制器设计界面
图13 通过控制器得到根轨迹
图14通过控制器得到的曲线
12 / 16
可以得到滞后-超前控制器为:
图15滞后-超前控制器传递函数
3.2极点配置校正器设计
如果已知对象的状态空间模型,可以采用极点配置技术,将闭环系统的全部极点均移到制定的位置,使得其动态性能达到指定值。常用的极点配置算法有Bass-Gura算法、Ackermann算法和鲁棒极点配置算法。
本例采用Ackermann算法设计控制器。控制系统工具箱给出了一个acker()函数来实现该算法,该函数的调用格式为K=acker(A,B,P),A、B为系统矩阵,P为期望闭环极点的位置。
由所给性能指标δ%<=20%,ts<=2sec,设计闭环主导极点为-3.6+4.8i、-3.6-4.8i,另两个极点取-40、-50。程序如下: num=[31000 356800];
den=[1 18 4130 8300 356800]; [a,b,c,d]=tf2ss(num,den);
qc=ctrb(a,b);
rank(qc); %系统完全可控,可任意配置极点 p=[-3.6+4.8i -3.6-4.8i -40 -50]; k=acker(a,b,p) aa=a-b*k;
sy=ss(aa,b,c,d); step(sy)
得到的状态反馈矩阵K=[80 -1450 9340 -284800],系统的阶跃响应曲线如下,性能满足要求。
13 / 16
图16 校正后的阶跃响应曲线
4.系统的鲁棒性和抗干扰性
将原系统的简化模型与极点配置相比较,不加随机扰动时的Simulink模块及仿真结果分别如图17和图18所示。
图17 不加扰动时的Simulink模块
14 / 16
图18 不加扰动时阶跃响应曲线(其中黄色线是原系统的,红色是极点配置后的)
显见,极点配置效果更好一些。
加入随机扰动后的Simulink模块及仿真结果分别如图19和图20所示。
图19 加扰动时的Simulink模块
15 / 16
图20 加扰动时的阶跃响应曲线(其中黄色线是原系统的,红色是极点配置后)
可见,仍然是极点配置效果更好一些,其抗干扰能力更强。
16 / 16