hinfstruct
本示例使用hinfstruct
调优固定结构控制器的命令<年代pan class="inlineequation">
约束。
的hinfstruct
命令扩展了经典<年代pan class="inlineequation">
合成(见hinfsyn
)到固定结构控制系统。此命令适用于已经习惯使用hinfsyn
工作流。如果你不熟悉<年代pan class="inlineequation">
合成或发现增强植物和加重功能吓人,使用systune
和looptune
代替。看到<一个href="//www.tatmou.com/au/help/control/ug/tuning-control-systems-with-systune.html" class="a">与SYSTUNE调谐控制系统为systune
这个例子的对应物。
本例使用硬盘驱动器中的头盘组件(HDA)的九阶模型。该模型捕获HDA中的前几个灵活模式。
负载<年代pan style="color:#A020F0">hinfstruct_demoG波德(G)、网格
我们使用如下所示的反馈回路来定位头部在正确的轨道上。该控制结构由PI控制器和返回路径的低通滤波器组成。头的位置y
应该跟踪步骤变化吗r
响应时间约为1毫秒,很少或没有超调,没有稳态误差。
图1:控制结构
在图1的控制结构中有两个可调元件:PI控制器<年代pan class="inlineequation"> 和低通滤波器
使用tunablePID
类来参数化PI块并指定过滤器<年代pan class="inlineequation">
作为一个依赖于可调实参数的传递函数<年代pan class="inlineequation">
.
C0 = tunablePID (<年代pan style="color:#A020F0">“C”,<年代pan style="color:#A020F0">“π”);<年代pan style="color:#228B22">%可调π一个= realp (<年代pan style="color:#A020F0">“一个”1);<年代pan style="color:#228B22">%滤波器系数F0 = tf(a,[1 a]);<年代pan style="color:#228B22">参数化的%过滤器
环路整形是一种频域技术,用于加强对响应速度、控制带宽、滚转和稳态误差的要求。其思想是为开环响应指定一个目标增益轮廓或“环路形状”<年代pan class="inlineequation"> .这种应用程序的合理环路形状应该具有积分作用和大约1000 rad/s的交叉频率(期望响应时间0.001秒的倒数)。这表明了以下循环形状:
wc = 1000;<年代pan style="color:#228B22">%的目标交叉s =特遣部队(<年代pan style="color:#A020F0">“年代”);LS = (1 + 0.001 * s / wc) / (0.001 + s / wc);bodemag (LS, {1 e1, 1 e5}),网格,标题(<年代pan style="color:#A020F0">“目标回路形状”)
请注意,我们选择了双固有的双稳定的实现,以避免使用边缘稳定极点和不恰当的逆的技术困难。为了调整<年代pan class="inlineequation">
和<年代pan class="inlineequation">
与hinfstruct
,则必须将目标环路形状化为对闭环增益的约束。有一种系统的方法是测量反馈回路,如下所示:
增加测量噪声信号n
使用目标循环形状LS
和它的倒数来过滤错误信号e
和白噪声源西北
.
图2:闭环公式
如果<年代pan class="inlineequation">
为的闭环传递函数(r,西北)
来电子战(y)
,增益约束
确保下列理想的性能:
在低频(w
在高频(w>wc)时,开环增益保持在规定的增益以下LS
闭环系统具有足够的稳定裕度
闭环阶跃响应超调小。
因此,我们可以专注于调优<年代pan class="inlineequation"> 和<年代pan class="inlineequation"> 执行<年代pan class="inlineequation"> .
在MATLAB中,可以使用连接
命令模式<年代pan class="inlineequation">
将固定组件和可调组件按图2的框图连接:
%标记块I/ oWn = 1 / LS;Wn。u =<年代pan style="color:#A020F0">“西北”;Wn。y =<年代pan style="color:#A020F0">“n”;我们= LS;我们。u =<年代pan style="color:#A020F0">“e”;我们。y =<年代pan style="color:#A020F0">“电子战”;C0。u =<年代pan style="color:#A020F0">“e”;C0。y =<年代pan style="color:#A020F0">“u”;F0。u =<年代pan style="color:#A020F0">“yn”;F0。y =<年代pan style="color:#A020F0">“。”;<年代pan style="color:#228B22">%指定求和连接Sum1 = sumblk (<年代pan style="color:#A020F0">'e = r - yf');Sum2 = sumblk (<年代pan style="color:#A020F0">'yn = y + n');<年代pan style="color:#228B22">把积木连接在一起T0 =连接(G, Wn, C0, F0 Sum1, Sum2, {<年代pan style="color:#A020F0">“r”,<年代pan style="color:#A020F0">“西北”},{<年代pan style="color:#A020F0">“y”,<年代pan style="color:#A020F0">“电子战”});
这些命令构建了一个广义状态空间模型T0
的<年代pan class="inlineequation">
.这个模型依赖于可调块C
和一个
:
T0。块
ans =<年代pan class="emphasis">结构体字段:C: [1x1 tunablePID] a: [1x1 realp]
请注意,T0
捕获图2框图的以下“标准形式”,其中包含可调优组件<年代pan class="inlineequation">
与固定的动力学分离。
图3:磁盘驱动器环路整形的标准形式
我们现在可以使用了hinfstruct
调整PI控制器<年代pan class="inlineequation">
和过滤<年代pan class="inlineequation">
用于图1的控制体系结构。为了降低局部极小值的风险,运行三个优化,其中两个是从随机初始值开始的C0
和F0
.
rng (<年代pan style="color:#A020F0">“默认”) opt = hinfstructOptions(<年代pan style="color:#A020F0">“显示”,<年代pan style="color:#A020F0">“最后一次”,<年代pan style="color:#A020F0">“RandomStart”5);T = hinfstruct (T0,选择);
最后:峰值增益= 3.88,最后迭代= 67:峰值增益= 597,迭代= 187一些闭环极点略微稳定(衰变率接近1 e-07)最后:峰值增益= 596,迭代= 180一些闭环极点略微稳定(衰变率接近1 e-07)最后:峰值增益= 3.88,最后迭代= 66:最终:峰值增益= 1.56,迭代= 91
最佳闭环增益为1.56,因此约束<年代pan class="inlineequation">
几乎是满意的。的hinfstruct
命令返回调优的闭环传输<年代pan class="inlineequation">
.使用showTunable
的调谐值<年代pan class="inlineequation">
和滤波系数<年代pan class="inlineequation">
:
showTunable (T)
C = 1 Kp + Ki *——s, Kp = 0.000846, Ki = 0.0103----------------------------------- a = 5.49e+03
使用getBlockValue
的调优值<年代pan class="inlineequation">
和使用getValue
对过滤器进行评估<年代pan class="inlineequation">
的调优值<年代pan class="inlineequation">
:
C = getBlockValue (T)<年代pan style="color:#A020F0">“C”);F = getValue (F0 T.Blocks);<年代pan style="color:#228B22">%从T传播调谐参数到F特遣部队(F)
ans =从输入yn到输出yf: 5486 -------- s + 5486连续时间传递函数。
为了验证设计,绘制开环响应图L = F * G * C
并与目标环路形状进行比较LS
:
波德(LS,<年代pan style="color:#A020F0">“r——”F, G * C *,<年代pan style="color:#A020F0">“b”1 e6}、{1 e1),网格,标题(<年代pan style="color:#A020F0">的开环反应),传说(<年代pan style="color:#A020F0">“目标”,<年代pan style="color:#A020F0">“实际”)
0dB交叉频率和整体环路形状符合预期。稳定性边距可以通过右键单击并选择<年代trong class="emphasis bold">特征菜单。该设计具有24dB增益裕度和81度相位裕度。根据参考图绘制闭环阶跃响应r
定位y
:
步骤(反馈(G * C、F)),网格,标题(<年代pan style="color:#A020F0">“闭环反应”)
当响应没有超调时,由于第一个共振峰,会有一些残余的抖动G
.您可以考虑在前向路径中添加陷波滤波器,以消除这些模式的影响。
假设你用这个<一个href="matlab:open_system('rct_diskdrive')" target="_blank">金宝app仿真软件模型表示控制结构。如果您已经安装了Simu金宝applink Control Design,您可以按如下方式从这个Simulink模型中调整控制器增益。先标记信号r, e, y, n
如Simulink模型中的线性分析点。金宝app
的实例slTuner
接口和标记的Simulink块金宝appC
和F
可调:
ST0 = slTuner (<年代pan style="color:#A020F0">“rct_diskdrive”,{<年代pan style="color:#A020F0">“C”,<年代pan style="color:#A020F0">“F”});
由于滤波器<年代pan class="inlineequation">
有一个特殊的结构,显式指定如何参数化F
布洛克:
一个= realp (<年代pan style="color:#A020F0">“一个”1);<年代pan style="color:#228B22">%滤波器系数setBlockParam (ST0<年代pan style="color:#A020F0">“F”特遣部队([1]));
最后,使用getIOTransfer
推导闭环传递函数的可调模型<年代pan class="inlineequation">
(见图2)
%计算闭环传输(r,n) -> (y,e)可调模型T0 = getIOTransfer (ST0, {<年代pan style="color:#A020F0">“r”,<年代pan style="color:#A020F0">“n”},{<年代pan style="color:#A020F0">“y”,<年代pan style="color:#A020F0">“e”});<年代pan style="color:#228B22">%在n和e通道增加权重功能T0 = blkdiag(1,LS) * T0 * blkdiag(1,LS);
现在,您已经准备好对控制器增益进行调优hinfstruct
:
rng(0) opt = hinfstructOptions(<年代pan style="color:#A020F0">“显示”,<年代pan style="color:#A020F0">“最后一次”,<年代pan style="color:#A020F0">“RandomStart”5);T = hinfstruct (T0,选择);
最后:峰值增益= 3.88,最后迭代= 67:峰值增益= 596,迭代= 168一些闭环极点略微稳定(衰变率接近1 e-07)最后:峰值增益= 597,迭代= 174一些闭环极点略微稳定(衰变率接近1 e-07)最后:峰值增益= 3.88,最后迭代= 71:最终:峰值增益= 1.56,迭代= 90
验证您获得与MATLAB方法相同的调谐值:
showTunable (T)
C = 1 Kp + Ki *——s, Kp = 0.000846, Ki = 0.0103----------------------------------- a = 5.49e+03