波特图(Bode Plot)是一种用于描述线性控制系统频率响应的图形表示方法,通常用于分析和设计控制系统。它以控制系统的传递函数(或频域传递函数)为基础,将系统的幅频特性(振幅-频率响应)和相频特性(相位-频率响应)以图形的方式展示出来。可以根据波特图理解和评估系统的稳定性、性能和鲁棒性。
波特图可以指导控制器的设计。通过调整控制器的参数,可以改变系统的频率响应,以满足特定的性能要求。波特图提供了反馈信息,帮助选择合适的控制器类型和参数,以达到期望的控制效果。本文使用串联超前校正、串联滞后校正、滞后-超前校正及PID校正,进行控制器的设计。
三频段理论:
低频段↔系统稳态误差,对应系统的开环增益K,系统型别v:
中频段↔系统动态性能 ,对应系统的幅值穿越频率 ,相角交界频率 ,影响系统的幅值裕度h与相角裕度γ,进而也决定了系统的调节时间、峰值时间和超调量等参数:(以二阶系统为例)
希望
高频段↔系统抗干扰能力
频率法串联校正
控制系统串联校正是一种用于改善控制系统性能的校正方法。在控制系统中,由于传感器、执行器、信号传输等因素的影响,系统可能出现响应速度慢、精度不高、稳定性差等问题。串联校正通过在控制系统中插入合适的校正环节,对系统进行调整和校正,以提高系统的响应和控制性能。
串联超前校正
利用超前网络的相角超前特性,将最大的超前角度补偿到系统的幅值穿越频率处,提高系统的相角裕度,进而提升系统稳定性
超前网络传递函数:
幅频曲线最大高度:第一个转折频率为
相角的表达式:
最大相角的频率:
带入相角表达式求出最大相角:
可得:
串联超前校正
- 超前网络特点:相角超前,幅值增加
- 一级超前网络最大超前角为60度
- 最有效的
,取太大高频段会拉高,影响抗干扰能力
超前校正步骤:
给定设定指标(
- 根据稳态精度
确定校正以前的开环增益K - 画出校正前系统
的幅频特性曲线 ,确定幅值穿越频率 ,计算相角裕度 ,如果 , 均不足 - 确定最大超前角:
- 作图设计:写出校正装置的传递函数
- 得到校正后的传递函数:
,并验证幅值穿越频率与相角裕度是否满足要求
例:以知某单位反馈系统的开环传递函数为
要求:
解:系统传递函数
- 根据稳态误差要求确定K:
- 做
的波特图:
得到幅值穿越频率:
计算得到相角裕度:
- 采用超前校正:
计算参数a:
-
确定校正装置的传递函数
,利用原始系统与-8.8dB线的交点,确定新的幅值穿越频率 ,并根据公式 确定T的取值,进而得到超前校正的两个转折频率 与 ,可以确定校正系统的传递函数 校正之后的系统相角裕度为61.2度,满足要求:
校正前后的nyquist曲线如下图,相角裕度变大,幅值裕度为infdB,满足指标要求。
串联超前校正效果:
- 保持低频段,满足稳态精度
- 改善中频段,
↑, ↑ 动态性能提高 - 抬高高频段,抗高频干扰能力降低
串联滞后校正
利用滞后网络幅值衰减特性挖掘系统自身的相角储备,减小幅值穿越频率,获得自身相角储备,同时压低高频段幅值,损失快速性,改善均匀性,提高了高频抗干扰能力。
滞后网络传递函数:
幅频曲线最大高度:第一个转折频率为
相角的表达式:
为了减少校正后系统相角裕度损失,将新的截止频率定为第二个转折频率的10倍:
串联滞后校正
- 滞后网络特点:相角滞后,幅值衰减
- 一级滞后网络
后10dec处相角最大损失为
滞后校正步骤:
给定设定指标(
- 根据稳态精度
确定校正以前的开环增益K - 画出校正前系统
的幅频特性曲线 ,确定幅值穿越频率 ,计算相角裕度 ,如果 有余, 不足(或严重不足) - 绘制曲线(挖掘系统储备):
- 作图设计:写出校正装置的传递函数
- 得到校正后的传递函数:
,并验证幅值穿越频率与相角裕度是否满足要求
例:以知某单位反馈系统的开环传递函数为
要求:
解:系统传递函数
- 确定增益
,型别v=1,注意:这里是K要沿着边界进行设计,K太大会造成幅值曲线高,那么校正时会造成校正装置的转折频率过小,即时间常数T过大,可能在物理系统中无法实现。
- 做
的波特图:
得到幅值穿越频率:
计算得到相角裕度:
指标要求:
- 采用滞后校正:取
使:
作
校正之后的系统相角裕度为44.8度,满足要求:
校正前后的nyquist曲线如下图,相角裕度变大,幅值裕度为14.1dB,满足指标要求。
串联滞后校正效果:
- 保持低频段,满足稳态精度
- 降低中频段,
↓, ↑ 损失快速性,改善均匀性 - 压低高频段,高频抗干扰能力提高
串联滞后-超前校正
综合利用滞后网络幅值衰减、超前网络相角超前的特性,改造开环频率特性,提高系统性能
滞后-超前网络传递函数:
可变换为:(注意前面有系数,这里忽略了,但画图不可忽略,否则会造成幅频曲线高度变化)
滞后-超前校正步骤:
给定设定指标(
-
根据稳态精度
确定校正以前的开环增益K -
画出校正前系统
的幅频特性曲线 ,确定幅值穿越频率 ,计算相角裕度 ,如果相角裕度需要补偿大于60度(超前拉不起来),且在 处的相角储备也不够(滞后储备不足),使用滞后-超前校正 -
确定校正后系统的幅值穿越频率为
,当前频率为滞后网络储备相角裕度所能提供的最大值 确定最大超前角:
-
作图设计:写出校正装置的传递函数
-
得到校正后的传递函数:
,并验证幅值穿越频率与相角裕度是否满足要求
例:以知某单位反馈系统的开环传递函数为
要求:
解:系统传递函数
- 根据稳态误差要求确定K,v=1:
- 做
的波特图:
得到幅值穿越频率:
计算得到相角裕度:
指标要求:
如果使用超前校正:
如果使用滞后校正:
当
- 采用滞后-超前校正,取
进行设计,在储备的 基础上进行相角补偿。
作
校正之后的系统相角裕度为37.9度,满足要求:
校正前后的nyquist曲线如下图,相角裕度变大,幅值裕度为11.5dB,满足指标要求。
串联滞后-超前校正效果:
- 保持低频段,满足稳态精度
- 降低中频段,
~, ↑ ,相角裕度增大 - 保持高频段,高频抗干扰能力不变
串联PID校正
PID校正网络传递函数:
例:以知某单位反馈系统的开环传递函数为
设计PID控制器,要求:
解:
- 根据频域指标与时域指标的转换图:
- 做
的波特图:
得到幅值穿越频率:
计算得到相角裕度:
指标要求:
求在
要补偿的度数大于60度,超前网络不行,储备相角裕度不足,滞后也不行
- 采用PID校正,取
进行设计:
确定第二个转折频率
得到传递函数:
作
校正之后的系统相角裕度为64.6度,满足要求:
校正前后的nyquist曲线如下图,相角裕度变大,幅值裕度为inf,满足指标要求。
频域指标与时域指标的转换
【自动控制原理(胡寿松)234页】:
代码
串联超前校正
clear all;
close;
% 定义传递函数
numerator = [10];
denominator = [1, 1, 0];
B=bodeoptions;
% 创建传递函数模型
sys = tf(numerator, denominator);
%画波特图
bode(sys);
hold on;
psi_m=50/180*pi;
a=(1+sin(psi_m))/(1-sin(psi_m));
H=20*log10(a);
half_H=-H*0.5;
% 使用 bode 函数来获取频率和幅值数据
[mag,phase,wout] = bode(sys);
magdB = 20*log10(mag);
% 找到幅频曲线上幅值最接近 half_H 的频率
[~, index] = min(abs(magdB - half_H));
L=length(wout);
freq_new= wout(index);
T=1/(sqrt(a)*freq_new);
% 定义传递函数
G_c_numerator = [a*T, 1];
G_c_denominator = [1*T, 1];
% 创建传递函数模型
G_csys = tf(G_c_numerator, G_c_denominator);
bode(G_csys);
new_sys=G_csys*sys;
bode(new_sys);
set(findobj(gcf,'type','line'),'linewidth',2);
ax=findobj(gcf,'type','axes');
phase_ax=ax(1);
mag_ax=ax(2);
ax_xlim=phase_ax.XLim;
mag_ylim=mag_ax.YLim;
phase_ylim=phase_ax.YLim;
% hold(mag_ax,'on')
hold on;
plot(mag_ax,[ax_xlim(1) ax_xlim(2)],[0 0],'Color', 'b','LineWidth',1, 'LineStyle', '--');
plot(mag_ax,[freq_new freq_new],[mag_ylim(1) mag_ylim(2)],'Color', 'm','LineWidth',1, 'LineStyle', '--');
plot(phase_ax,[freq_new freq_new],[phase_ylim(1) phase_ylim(2)],'Color', 'm','LineWidth',1, 'LineStyle', '--');
plot(mag_ax,[ax_xlim(1) ax_xlim(2)],[half_H half_H],'Color', 'k','LineWidth',1, 'LineStyle', '--');
% 添加图例
legend(mag_ax,'原始系统', '超前校正', '校正后系统');
figure(2);
margin(new_sys);%Gm幅值裕度 Pm相角裕度 Wcg穿越频率 Wcp剪切频率
figure(3);
% 绘制纳伊斯特图
nyquist(sys);
hold on;
nyquist(new_sys);
legend('原始系统', '校正后系统');
% 设置图形标题
title('Nyquist Plot');
串联滞后校正
clear all;
close all;
% 定义传递函数的分子和分母
numerator = 30;
denominator = [1/50 3/10 1 0]; % 分母表示为(s)(s/5+1)(s/10+1)
G = tf(numerator, denominator);
% 绘制波特图
bode(G);
psi_c=46;
deg_m=-180+psi_c;
% 使用 bode 函数来获取频率和幅值数据
bode_w= linspace(0.1, 10, 1000);
[mag,phase,wout] = bode(G,bode_w);
magdB = 20*log10(mag);
[~, index] = min(abs(0 - magdB));
w_c= wout(index);
% 找到最接近deg_m的index
[~, index] = min(abs(phase - deg_m));
freq_new= wout(index);
b=freq_new/30;
T=10/(b*freq_new);
% 定义传递函数
G_c_numerator = [b*T, 1];
G_c_denominator = [1*T, 1];
hold on;
% 创建传递函数模型
G_c = tf(G_c_numerator, G_c_denominator);
bode(G_c);
new_sys=G_c*G;
bode(new_sys);
set(findobj(gcf,'type','line'),'linewidth',2);
ax=findobj(gcf,'type','axes');
phase_ax=ax(1);
mag_ax=ax(2);
ax_xlim=phase_ax.XLim;
mag_ylim=mag_ax.YLim;
phase_ylim=phase_ax.YLim;
hold on;
plot(mag_ax,[ax_xlim(1) ax_xlim(2)],[0 0],'Color', 'b','LineWidth',1, 'LineStyle', '--');
plot(mag_ax,[freq_new freq_new],[mag_ylim(1) mag_ylim(2)],'Color', 'm','LineWidth',1, 'LineStyle', '--');
plot(phase_ax,[freq_new freq_new],[phase_ylim(1) phase_ylim(2)],'Color', 'm','LineWidth',1, 'LineStyle', '--');
plot(mag_ax,[w_c w_c],[mag_ylim(1) mag_ylim(2)],'Color', 'k','LineWidth',1, 'LineStyle', '--');
plot(phase_ax,[w_c w_c],[phase_ylim(1) phase_ylim(2)],'Color', 'k','LineWidth',1, 'LineStyle', '--');
% 添加图例
legend(mag_ax,'原始系统', '滞后校正', '校正后系统');
figure(2);
margin(new_sys);%Gm幅值裕度 Pm相角裕度 Wcg穿越频率 Wcp剪切频率
figure(3);
% 绘制纳伊斯特图
nyquist(G);
hold on;
nyquist(new_sys);
legend('原始系统', '校正后系统');
% 设置图形标题
title('Nyquist Plot');
串联滞后-超前校正
clear all;
close all;
% 定义系统传递函数
G = tf([126], [1/600, 7/60, 1,0]);
% 绘制波特图
bode(G);
freq_new=20;
[Gm,Pm,Wcg,Wcp] = margin(G);
[mag,phase,wout] = bode(G);
magdB = 20*log10(mag);
[~, index] = min(abs(20 - wout));
lag_deg= phase(index)+180;
%
% % 找到最接近deg_m的index
% [~, index] = min(abs(phase - deg_m));
% freq_new= wout(index);
phi_m=(35-lag_deg+6)/180*pi;
a=(1+sin(phi_m))/(1-sin(phi_m));
% a=3.4;
sqrt_a=sqrt(a);
Tb=sqrt_a/freq_new;
Ta=1/(0.1*freq_new);
w0=Wcp^2/freq_new;
b=w0*Tb;
% 定义传递函数
% 构建系统传递函数
G_c = tf([1/(1/Ta),1], [1/(1/(b*Ta)),1]) * tf([1/(1/Tb),1], [1/(a/Tb),1]);
% G_c_1 = tf([2, 1], [0.343, 1]) * tf([10.18, 1], [37, 1]);
hold on;
bode(G_c);
new_sys=G_c*G;
bode(new_sys);
set(findobj(gcf,'type','line'),'linewidth',2);
ax=findobj(gcf,'type','axes');
phase_ax=ax(1);
mag_ax=ax(2);
ax_xlim=phase_ax.XLim;
mag_ylim=mag_ax.YLim;
phase_ylim=phase_ax.YLim;
hold on;
plot(mag_ax,[ax_xlim(1) ax_xlim(2)],[0 0],'Color', 'b','LineWidth',1, 'LineStyle', '--');
plot(mag_ax,[freq_new freq_new],[mag_ylim(1) mag_ylim(2)],'Color', 'm','LineWidth',1, 'LineStyle', '--');
plot(phase_ax,[freq_new freq_new],[phase_ylim(1) phase_ylim(2)],'Color', 'm','LineWidth',1, 'LineStyle', '--');
plot(mag_ax,[Wcp Wcp],[mag_ylim(1) mag_ylim(2)],'Color', 'k','LineWidth',1, 'LineStyle', '--');
plot(phase_ax,[Wcp Wcp],[phase_ylim(1) phase_ylim(2)],'Color', 'k','LineWidth',1, 'LineStyle', '--');
% 添加图例
legend(mag_ax,'原始系统', '滞后校正', '校正后系统');
figure(2);
margin(new_sys);%Gm幅值裕度 Pm相角裕度 Wcg穿越频率 Wcp剪切频率
figure(3);
% 绘制纳伊斯特图
nyquist(G);
hold on;
nyquist(new_sys);
legend('原始系统', '校正后系统');
% 设置图形标题
title('Nyquist Plot');
串联PID校正
clear all;
close all;
num = 10; % 分子多项式系数
den = conv(conv([1 1], [1/5 1]), [1/30 1]); % 分母多项式系数
G = tf(num, den); % 创建传递函数模型
bode(G);
% grid on;
freq_new=15;
[Gm,Pm,Wcg,Wcp] = margin(G);
[mag,phase,wout] = bode(G);
magdB = 20*log10(mag);
[~, index] = min(abs(15 - wout));
lag_deg= phase(index)+180;
phi_m=(65-lag_deg+6)/180*pi;
w2=freq_new/tan(phi_m);
w0=Wcp^2/freq_new;
w1=w0/w2;
num = [1/(w1*w2), (w1+w2)/(w1*w2), 1]; % 分子多项式系数
den = [1, 0]; % 分母多项式系数
G_c = tf(num, den); % 创建传递函数对象
hold on;
bode(G_c);
new_sys=G_c*G;
bode(new_sys);
set(findobj(gcf,'type','line'),'linewidth',2);
ax=findobj(gcf,'type','axes');
phase_ax=ax(1);
mag_ax=ax(2);
ax_xlim=phase_ax.XLim;
mag_ylim=mag_ax.YLim;
phase_ylim=phase_ax.YLim;
hold on;
plot(mag_ax,[ax_xlim(1) ax_xlim(2)],[0 0],'Color', 'b','LineWidth',1, 'LineStyle', '--');
plot(mag_ax,[freq_new freq_new],[mag_ylim(1) mag_ylim(2)],'Color', 'm','LineWidth',1, 'LineStyle', '--');
plot(phase_ax,[freq_new freq_new],[phase_ylim(1) phase_ylim(2)],'Color', 'm','LineWidth',1, 'LineStyle', '--');
plot(mag_ax,[Wcp Wcp],[mag_ylim(1) mag_ylim(2)],'Color', 'k','LineWidth',1, 'LineStyle', '--');
plot(phase_ax,[Wcp Wcp],[phase_ylim(1) phase_ylim(2)],'Color', 'k','LineWidth',1, 'LineStyle', '--');
% 添加图例
legend(mag_ax,'原始系统', 'PID校正', '校正后系统');
%
figure(2);
margin(new_sys);%Gm幅值裕度 Pm相角裕度 Wcg穿越频率 Wcp剪切频率
figure(3);
% 绘制纳伊斯特图
nyquist(G);
hold on;
nyquist(new_sys);
legend('原始系统', '校正后系统');
% 设置图形标题
title('Nyquist Plot');
参考
- 史忠科,卢京潮.自动控制原理[M].西北工业大学出版社,1998.
- 【频域分析中的三频段理论】https://blog.csdn.net/qq_39554681/article/details/89459784
评论(1)
您还未登录,请登录后发表或查看评论