这个示例使用systune
调整PID控制器时设定点跟踪和干扰抑制之间的权衡。
调整1-DOF PID控制器时,通常无法同时实现良好的跟踪和快速扰动。假设控制带宽是固定的,更快的扰动抑制需要带宽内部的更多增益,只能通过增加交叉频率附近的斜率来实现。因为较大的斜率意味着较小的相位余量,这通常在对设定值变化的响应中进行更长的过冲。
图1:1- dof PID调谐的权衡。
这个示例使用systune
探索这种折衷并为您的应用程序找到正确的折衷方案。另请参阅pidtool
了解实现这种权衡的更直接的方法(参见Controller Options下的“Design Focus”)。
考虑图2中的PID环,在目标输入处有负载扰动。
图2:PID控制回路。
在这个例子中,我们使用植物模型
目标控制带宽为10 rad / s。创建可调谐PID控制器并将其导数滤波器时间常数固定到(带宽的10倍),以便曲调(比例,积分和衍生增益)只有三个收益。
= zpk(-1,[-1 -2],10);C = tunablePID (“C”,“pid”);C.TF.Value = 0.01;c.tf.free = false;%修复tf = 0.01
构建一个可调模型T0
闭环转移r
来y
.使用“分析点”块来标记位置u
干扰进入的地方。
ls =分析点(“u”);T0 =反馈(G * LS * C,1);t0.u =“r”;T0。y ='是';
开环响应的增益是反馈循环行为的关键指标。控制带宽内的开环增益应高(大于一个),以确保良好的干扰抑制,并且应在控制带宽外部的低(小于一个)对测量噪声和未拼接的植物动态不敏感。因此,使用三个要求来表达控制目标:
“跟踪”要求指定响应时间约为0.2秒以进行步骤更改r
“MaxloopGain”要求强制推出-20 dB /十年的滚动超过交叉频率10 rad / s
“MinLoopGain”要求在低于0.1 rad/s的频率下调整积分增益。
s =特遣部队(“年代”);wc = 10;目标交叉频率%%跟踪r1 = tuninggoal.tracking(“r”,'是'2 / wc);%带宽和滚动R2 = TuningGoal。MaxLoopGain (“u”、wc / s);%抗干扰性R3 = TuningGoal.minloopgain(“u”、wc / s);r3.focus = [0 0.1];
用systune
调整PID收益以满足这些要求。将带宽和干扰拒绝目标视为硬约束,并优化对这些约束的跟踪。
T1 = systune(T0,R1,[R2 R3]);
Final: Soft = 1.12, Hard = 0.9998, Iterations = 157
确认所有三个要求几乎都满足了。蓝色的曲线是实现的值,黄色的斑块表示违反需求的区域。
图('位置',[100,100,560,580])ViewGoAL([R1 R2 R3],T1)
为了深入了解跟踪和抗干扰之间的权衡,将[0,0.1]rad/s频段的最小环路增益增加一个因子.重新调整PID增益的值.
%增加因子2的循环增益α= 2;R3。MinGain =α* wc / s;T2 = systune(T0,R1,[R2 R3]);
Final: Soft = 1.17, Hard = 0.99954, Iterations = 115
%增加因数4的循环增益α= 4;R3。MinGain =α* wc / s;T3 = systune(T0,R1,[R2 R3]);
Final: Soft = 1.25, Hard = 0.99994, Iterations = 166
比较步骤命令的响应r
以及阶跃干扰d
进入工厂输入u
.
图中,步骤(T1、T2、T3, 3)标题('设定点跟踪')传说('\ alpha = 1',“\α= 2”,'\ alpha = 4')
%计算从u到y的闭环传输d1 = getiotransfer(t1,“u”,'是');D2 = getIOTransfer (T2,“u”,'是');D3 = getIOTransfer (T3,“u”,'是');步骤(D1、D2、D3 10)标题(“抗干扰”)传说('\ alpha = 1',“\α= 2”,'\ alpha = 4')
注意扰乱拒绝如何改善α
增加,但在设定的跟踪中的超调的增加。绘制三个设计的开环响应,并记下交叉前的斜率(0dB)增加α
.
l1 = getLooptransfer(t1,“u”);L2 = getLoopTransfer (T2,“u”);L3 = getLoopTransfer (T3,“u”);Bodemag(L1,L2,L3,{1E-2,1E2}),网格标题(的开环反应)传说('\ alpha = 1',“\α= 2”,'\ alpha = 4')
哪种设计是最合适的取决于你要调优的反馈循环的主要目的。
如果您无法妥协跟踪以改善干扰抑制,请考虑使用2-DOF架构。2-DOF PID控制器能够快速扰动抑制,而在设定点跟踪中的过冲显着增加。
图3:2-DOF PID控制环路。
使用tunablePID2
对象来参数化二自由度PID控制器,并构造可调模型T0
图3中闭环系统的
c = tunablepid2(“C”,“pid”);C.TF.Value = 0.01;c.tf.free = false;%修复tf = 0.01T0 =反馈(G * LS * C,1,2,1,+ 1);t0 = t0(:,1);t0.u =“r”;T0。y ='是';
接下来调整2-DOF PI控制器,以获得之前尝试过的最大环路增益().
%带宽内最小环路增益(用于抑制干扰)α= 4;R3。MinGain =α* wc / s;%调谐2自由度PI控制器T4 = systune(T0,R1,[R2 R3]);
Final: Soft = 1.09, Hard = 0.91898, Iterations = 70
比较1-DOF和2-DOF的设定点跟踪和抗扰特性.
CLF,步骤(T3,“b”T4,“g——”4)标题('设定点跟踪')传说(“1-DOF”,二自由度的)
D4 = getIOTransfer (T4,“u”,'是');步骤(D3,“b”D4,“g——”4)标题(“抗干扰”)传说(“1-DOF”,二自由度的)
对步骤扰动的响应是相似的,但是2-DOF控制器在对设定值变化的响应中消除过冲。您可以使用showTunable
比较1-DOF和2-DOF控制器中的调谐增益。
showTunable (T3)%1-DOF PI
C = 1 s Kp + Ki *——+ Kd * -------- s Tf*s+1, Kp = 9.51, Ki = 14.9, Kd = 0.89, Tf = 0.01
showTunable (T4)%二自由度π
C = 1 s u = Kp (b*r-y) + Ki——(r-y) + Kd -------- (C *r-y) s Tf*s+1, Kp = 6.18, Ki = 21.3, Kd = 0.897, Tf = 0.01, b = 0.688, C = 1.23