PID Tuning for Setpoint Tracking vs. Disturbance Rejection MATLAB_help文档DeepSeek翻译
设定点跟踪与抗扰性能的PID整定权衡
本示例使用 systune 来探讨在整定 PID 控制器时,设定点跟踪与抗扰性能之间的权衡。
PID 整定权衡
在整定单自由度(1-DOF)PID 控制器时,通常无法同时实现良好的跟踪性能和快速的抗扰性能。假设控制带宽是固定的,更快的抗扰性能需要在带宽内具有更高的增益,而这只能通过增加穿越频率附近的斜率来实现。由于更大的斜率意味着更小的相位裕度,这通常会导致设定点变化的响应出现更大的超调。

本示例使用 systune 来探索这种权衡,并为您的应用找到合适的折衷方案。您也可以使用 PID 调节器 应用程序来进行此类权衡。有关更多信息,请参阅 调节 PID 控制器以侧重参考跟踪或抗扰性能(PID 调节器)。
整定设置
考虑图 2 所示的 PID 控制回路,其在被控对象输入端存在负载扰动。

对于此示例,我们使用被控对象模型
G ( s ) = 10 ( s + 5 ) ( s + 1 ) ( s + 2 ) ( s + 10 ) . G(s) = { 10 (s+5) \over (s+1) (s+2) (s+10) } . G(s)=(s+1)(s+2)(s+10)10(s+5).
目标控制带宽为 10 rad/s。创建一个可调 PID 控制器,并将其微分滤波器时间常数固定为 T f = 0.01 T_f=0.01 Tf=0.01(带宽的 10 倍),这样只剩下三个增益需要整定(比例、积分和微分增益)。
G = zpk(-5,[-1 -2 -10],10);
C = tunablePID(‘C’,‘pid’);
C.Tf.Value = 0.01; C.Tf.Free = false; % 固定 Tf=0.01
构建从 r 到 y 的闭环传递函数的可调模型 T0。使用一个"分析点"模块来标记扰动输入的位置 u。
LS = AnalysisPoint(‘u’);
T0 = feedback(GLSC,1);
T0.u = ‘r’; T0.y = ‘y’;
开环响应 L = G C L = GC L=GC 的增益是反馈回路行为的关键指标。开环增益在控制带宽内应较高(大于 1)以确保良好的抗扰性能,在控制带宽外应较低(小于 1)以对测量噪声和未建模的被控对象动态不敏感。因此,使用三个要求来表达控制目标:
- "跟踪"要求:指定对 r 的阶跃变化响应时间约为 0.2 秒
- "最大环路增益"要求:强制在穿越频率 10 rad/s 之后以 -20 dB/十倍频程滚降
- "最小环路增益"要求:调整 0.1 rad/s 以下频率的积分增益。
s = tf(‘s’);
wc = 10; % 目标穿越频率
% 跟踪
R1 = TuningGoal.Tracking(‘r’,‘y’,2/wc);
% 带宽和滚降
R2 = TuningGoal.MaxLoopGain(‘u’,wc/s);
% 抗扰性能
R3 = TuningGoal.MinLoopGain(‘u’,wc/s);
R3.Focus = [0 0.1];
单自由度 PID 控制器整定
使用 systune 来整定 PID 增益以满足这些要求。将带宽和抗扰性能目标视为硬约束,并在这些约束下优化跟踪性能。
T1 = systune(T0,R1,[R2 R3]);
最终结果:软约束 = 1.12,硬约束 = 0.9998,迭代次数 = 155
验证是否几乎满足所有三个要求。蓝色曲线是达到的值,黄色高亮区域表示违反要求的区域。
figure(‘Position’,[100,100,560,580])
viewGoal([R1 R2 R3],T1)

跟踪与抗扰性能权衡
为了深入理解跟踪与抗扰性能之间的权衡,将频带 [0,0.1] rad/s 内的最小环路增益增加 α \alpha α 倍。针对 α = 2 , 4 \alpha=2,4 α=2,4 的值重新整定 PID 增益。
% 将环路增益增加 2 倍
alpha = 2;
R3.MinGain = alpha*wc/s;
T2 = systune(T0,R1,[R2 R3]);
最终结果:软约束 = 1.17,硬约束 = 0.99954,迭代次数 = 115
% 将环路增益增加 4 倍
alpha = 4;
R3.MinGain = alpha*wc/s;
T3 = systune(T0,R1,[R2 R3]);
最终结果:软约束 = 1.25,硬约束 = 0.99994,迭代次数 = 166
比较对阶跃指令 r 和进入被控对象输入 u 的阶跃扰动 d 的响应。
figure, step(T1,T2,T3,3)
title(‘设定点跟踪’)
legend(‘\alpha = 1’,‘\alpha = 2’,‘\alpha = 4’)

% 计算从 u 到 y 的闭环传递函数
D1 = getIOTransfer(T1,‘u’,‘y’);
D2 = getIOTransfer(T2,‘u’,‘y’);
D3 = getIOTransfer(T3,‘u’,‘y’);
step(D1,D2,D3,10)
title(‘抗扰性能’)
legend(‘\alpha = 1’,‘\alpha = 2’,‘\alpha = 4’)

请注意,随着 alpha 增加,抗扰性能如何改善,但代价是设定点跟踪的超调增加。绘制三种设计的开环响应,并注意穿越频率(0dB)之前的斜率如何随 alpha 增加。
L1 = getLoopTransfer(T1,‘u’);
L2 = getLoopTransfer(T2,‘u’);
L3 = getLoopTransfer(T3,‘u’);
bodemag(L1,L2,L3,{1e-2,1e2}), grid
title(‘开环响应’)
legend(‘\alpha = 1’,‘\alpha = 2’,‘\alpha = 4’)

哪种设计最合适取决于您正在整定的反馈回路的主要目的。
双自由度 PID 控制器整定
如果您不能为了改善抗扰性能而牺牲跟踪性能,请考虑改用双自由度(2-DOF)架构。双自由度 PID 控制器能够实现快速的抗扰性能,而不会显著增加设定点跟踪的超调。

使用 tunablePID2 对象参数化双自由度 PID 控制器,并构建图 3 中闭环系统的可调模型 T0。
C = tunablePID2(‘C’,‘pid’);
C.Tf.Value = 0.01; C.Tf.Free = false; % 固定 Tf=0.01
T0 = feedback(GLSC,1,2,1,+1);
T0 = T0(:,1);
T0.u = ‘r’; T0.y = ‘y’;
接下来,针对之前尝试的最大环路增益( α = 4 \alpha = 4 α=4)整定双自由度 PI 控制器。
% 带宽内的最小环路增益(用于抗扰性能)
alpha = 4;
R3.MinGain = alpha*wc/s;
% 整定双自由度 PI 控制器
T4 = systune(T0,R1,[R2 R3]);
最终结果:软约束 = 1.09,硬约束 = 0.86731,迭代次数 = 66
比较 α = 4 \alpha = 4 α=4 时单自由度和双自由度设计的设定点跟踪和抗扰性能。
clf, step(T3,‘b’,T4,‘g–’,4)
title(‘设定点跟踪’)
legend(‘1-DOF’,‘2-DOF’)

D4 = getIOTransfer(T4,‘u’,‘y’);
step(D3,‘b’,D4,‘g–’,4)
title(‘抗扰性能’)
legend(‘1-DOF’,‘2-DOF’)

对阶跃扰动的响应相似,但双自由度控制器消除了设定点变化响应中的超调。您可以使用 showTunable 来比较单自由度和双自由度控制器中整定后的增益。
showTunable(T3) % 单自由度 PI
C =
1 s
Kp + Ki * — + Kd * --------
s Tf*s+1
with Kp = 9.51, Ki = 14.9, Kd = 0.89, Tf = 0.01
Name: C
Continuous-time PIDF controller in parallel form.
showTunable(T4) % 双自由度 PI
C =
1 s
u = Kp (br-y) + Ki — (r-y) + Kd -------- (cr-y)
s Tf*s+1
with Kp = 5.55, Ki = 20, Kd = 0.853, Tf = 0.01, b = 0.678, c = 1.3
Name: C
Continuous-time 2-DOF PIDF controller in parallel form.
另请参阅
systune
相关主题
版权标注与来源说明
本文译文对应的原文内容,均来源于 MathWorks 官方网站(https://www.mathworks.com/)及官方帮助中心,原文版权均独家归属MathWorks 公司所有。
译文系基于原文进行的非官方翻译,仅为方便个人学习、理解MathWorks相关产品(含MATLAB等)的功能、操作及技术细节而制作,不代表MathWorks公司官方立场,也不构成官方翻译版本。
建议使用者优先查阅官方原文。
更多推荐



所有评论(0)