串联滞后校正的MATLAB实现

本题例题的为:

在这里插入图片描述

直接进行MATLAB实现:

% 用MATLAB实现串联滞后校正
% 系统的型别
v=1;
% 题目给的指标为
% 静态速度误差Kv_star = 30,那么计算增益
K = 30;
% 其余的指标:
r_star = 40;
wc_star = 2.3;
% 绘制出原有的系统传函
num_0 = 30;
den_0 = conv([1,0],[conv([1/5,1],[1/10,1])]);
sys_0 = tf(num_0,den_0);
[Gm0,Pm0,Wcg0,Wcp0] = margin(sys_0);
figure
margin(sys_0);hold on
% 得到其矫正完增益的截止频率Wcp0 = 9.7714 满足截止频率指标,但是相位裕度Pm不满足,所以采用滞后校正
% 绘制相位裕度Pm和w的关系图,
syms w
w = (0.01:0.01:100);
Pm = 180+(-90)^v-atand(w/5)-atand(w/10);
% figure
% plot(Pm);
Pm_star = r_star + 6;
% 找出相位裕度指标+6dec的对应w
wc = spline(Pm,w,Pm_star);
% 得到wc新系统的截止频率最大为2.737,得到最贴近的相位裕度(在实际应用中上来先用wc_star去试试相位裕度,如果能行,那么这个新的截止频率就在附近,如果不行,滞后校正不适用于该校正
% 开始模拟作图
[Mag,phase,w0] = bode(sys_0);
mag_db = mag2db(Mag);
% syms LwA
% equation_Lwa = wc==spline(mag_db,w0,LwA);
% Lw_A = vpa(solve(equation_Lwa),3);
Lw_A = spline(w0,mag_db,double(wc));
% 求解倍频比
syms b
equation_b = -20*log10(b)==Lw_A;
b = double(vpa(solve(equation_b),2));
w2 = 0.1*wc;
% 以下两种方式计算的D点的频率相似,差不多
w1 = b*w2;
wD_1 = (wc*w2)/K;%这种计算方式是根据近似渐近线+全等三角形计算出来的
wD = vpa(w1,3);
% 构建新的传函
num_correct = [b/wD_1,1];
den_correct = [1/wD_1,1];
Gcs = tf(num_correct,den_correct);
margin(Gcs);hold on
G_star = series(sys_0,Gcs);
margin(G_star);hold on

进行滞后校正有几个关键性的步骤,首先是通过给定的指标(若果给定的指标是时域指标还要根据经验公式进行转换)计算出应有的增益K_gain,一般给定的是静态速度误差系数Kv_satr,然后根据公式计算

在这里插入图片描述

计算到K_gain=30

然后计算原有系统的幅频特性,稳定裕度等参数

% 绘制出原有的系统传函
num_0 = 30;
den_0 = conv([1,0],[conv([1/5,1],[1/10,1])]);
sys_0 = tf(num_0,den_0);
[Gm0,Pm0,Wcg0,Wcp0] = margin(sys_0);
figure
margin(sys_0);hold on

其中值得注意的是,解算出来的截止频率Wcp0要高于给定的截止频率的指标并且相位裕度要低于给定的相位裕度指标且相差较大,这样的情形之下,优先考虑串联滞后校正。同时我们要注意这个可以用给定的截止频率指标去计算一下原有系统在该频率上的相位裕度,如果和给定的相位裕度指标相差不大且大于给定的相位裕度指标,则可以用串联滞后校正,如果相差很大且小于相位裕度指标,则直接停止使用串联滞后校正。

接下来需要绘制原有系统的相位裕度与w的关系图,以此来寻找符合相位裕度指标的新的截止频率wc

syms w
w = (0.01:0.01:100);
Pm = 180+(-90)^v-atand(w/5)-atand(w/10);
figure
plot(Pm);
Pm_star = r_star + 6;
% 找出相位裕度指标+6dec的对应w
wc = spline(Pm,w,Pm_star);
% 得到wc新系统的截止频率最大为2.737,得到最贴近的相位裕度(在实际应用中上来先用wc_star去试试相位裕度,如果能行,那么这个新的截止频率就在附近,如果不行,滞后校正不适用于该校正

值得注意是,这里新的截止频率对于的相位裕度是在指标的基础之上另外加6°,这个6°是由于串联了滞后校正造成的相位衰减损失,因此所设定的补偿,其损失大小与倍频比倒数有关,但是总体上损失不超过6°,其倍频比倒数b与相位衰减损失的图像如下图所示:

在这里插入图片描述

得到相位裕度和w的关系图如下图所示:

在这里插入图片描述

之后,使用spline插值,解得与相位裕度+6相对应的频率w,并作为新的系统的截止频率。

然后开始模拟作图环节,需要在原有系统的幅频特性曲线上找到与wc相对应的幅值坐标,并将其镜像对称到第四象限,得到坐标点B,其中B的纵坐标的绝对值就是-20lg(b),找到wc对应幅值坐标的目的就在于求解倍频比的倒数b的具体值,这里比较考验灵活使用spline函数的各个参数

% 开始模拟作图
[Mag,phase,w0] = bode(sys_0);
mag_db = mag2db(Mag);
% syms LwA
% equation_Lwa = wc==spline(mag_db,w0,LwA);
% Lw_A = vpa(solve(equation_Lwa),3);
Lw_A = spline(w0,mag_db,double(wc));
% 求解倍频比
syms b
equation_b = -20*log10(b)==Lw_A;
b = double(vpa(solve(equation_b),2));

在MATLAB手册中查找spline函数的定义以及用法:

在这里插入图片描述

这里我们使用第一个功能,即spline(x,y,xx),返回的是在x,y形成的图像中,返回已知x值对于y的值;同样在串联超前校正的过程中也有相应的应用,那里用到的是已知y的值,返回对应x的值,所以前面的x,y要灵活运用位置,返回自己想得到的结果。

然后解算各个参数,构建新的传函,并画出bode图即可:

w2 = 0.1*wc;
% 以下两种方式计算的D点的频率相似,差不多
w1 = b*w2;
wD_1 = (wc*w2)/K;%这种计算方式是根据近似渐近线+全等三角形计算出来的
wD = vpa(w1,3);
% 构建新的传函
num_correct = [b/wD_1,1];
den_correct = [1/wD_1,1];
Gcs = tf(num_correct,den_correct);
figure
margin(sys_0);hold on 
margin(Gcs);hold on
G_star = series(sys_0,Gcs);
margin(G_star);hold on


(值得注意的是,在构建代码的过程中,b的数据类型是sym类型,因此与b有联系的w1,以及num_correct,den_correct都需要进行类型转换,否则sym类型数组不能直接导入t()函数中直接构建传递函数,因此将源头上的b进行强制类型转换成double类型)

在这里插入图片描述

得到的原有系统、校正装置和最终系统的bode图如图所示:

在这里插入图片描述

结果时满足之前提出的相位裕度>40,截止频率>2.3的指标,将系统模拟在simulink中进行验算,得到的结果时稳定的,并且得到传递函数如下图所示。

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值