主要内容

数字运动控制系统的调谐

这个例子展示了如何使用控制系统工具箱™来调整数字运动控制系统。

运动控制系统

所考虑的运动系统如下所示。

图1:数字运动控制硬件

该设备可以是某些生产机器的一部分,用于将一些负载(夹具、工具、喷嘴或任何您能想象到的东西)从一个角度移动到另一个角度,然后再返回。此任务是“生产周期”的一部分,必须完成以创建每个产品或批次产品。下载188bet金宝搏

数字控制器必须调整,以最大限度地提高机器的生产速度,而不影响精度和产品质量。为此,我们首先在Simulink®中使用惯性和柔性轴的四阶模型对控制系统建模:金宝app

open_system (“rct_dmc”

“可调谐数字控制器”由串联增益和超前/滞后控制器组成。

图2:数字控制器

由于工厂中存在接近350 rad/s的灵活模式,调优变得复杂:

线性化(“rct_dmc”“rct_dmc /植物模型”);波德(G, {10 1 e4}),网格

补偿器的调优

我们正在寻求在最小超调的角度位置上对步进命令的0.5秒响应时间。这对应于大约5 rad/s的目标带宽。的looptune命令提供了一种方便的方法来调优固定结构补偿器,就像这个应用程序中的一个。使用looptune,首先实例化slTuner接口,从Simulink中自动获取控制结构。金宝app注意,感兴趣的信号已经在Simulink模型中标记为线性分析点。金宝app

ST0 = slTuner(“rct_dmc”, {“获得”Leadlag的});

下一个使用looptune调整补偿器参数,使目标增益交叉频率为5 rad/s:

测量=测量位置的;控制器输入百分比控制=Leadlag的;控制器输出%ST1 = looptune(ST0,控制,测量,5);
最终:峰值增益= 0.979,迭代= 19实现目标增益值TargetGain=1。

最终值小于或接近1表示成功。检查增益和超前/滞后滤波器的调谐值:

showTunable(死神)
Block 1: rct_dmc/Tunable Digital Controller/Gain = D = u1 y1 1.869e-05名称:Gain静态增益。----------------------------------- 块2:rct_dmc /可调数字控制器/ Leadlag = 3.855 + 6.322  --------------- s + 13.35名称:Leadlag连续时间传递函数。

设计验证

要验证设计,请使用slTuner接口,以快速访问感兴趣的闭环传递函数,并比较调优前后的响应。

T0 = getIOTransfer(ST0,“参考”测量位置的);T1 = getIOTransfer(ST1,“参考”测量位置的);step(T0,T1),网格图例(“原始”“调”

调优后的响应显著减少了超调量,满足了响应时间的要求。然而,这些模拟是使用连续时间超前/滞后补偿器(looptune因此,我们需要在Simulink中使用领先/滞后补偿器的数字实现进一步验证设计。金宝app使用writeBlockValue将调谐值应用于Simulink模型,并自动将超前/滞后补偿器离散到金宝appSimulink中指定的速率。

writeBlockValue(死神)

您现在可以用数字控制器模拟连续时间工厂的响应:

sim卡(“rct_dmc”);%登录“yout”变量的角位置T = youout .time;Y = youout .signals.values;step(T1),等等,plot(t,y,“r——”)传说(“连续”“混合动力(模型)金宝app”
目前的地块

仿真结果非常吻合,数字领先/滞后系数可以从Simulink中的“领先/滞后”块中读取。金宝app

调优附加陷波滤波器

接下来尝试将控制带宽从5 rad/s增加到50 rad/s。由于工厂共振接近350 rad/s,超前/滞后补偿器不再足以获得足够的稳定裕度和小的超调量。一种补救方法是添加陷波滤波器,如图3所示。

图3:带陷波滤波器的数字控制器

要调优此修改后的控件体系结构,请创建slTuner实例中包含三个可调块。

ST0 = slTuner(“rct_dmcNotch”, {“获得”Leadlag的“缺口”});

默认情况下,“Notch”块参数化为任何二阶传递函数。保留缺口结构

$ $ N (s) = {s ^ 2 + 2 \ zeta_1 \ omega_n s + \ omega_n ^ 2 \ / s ^ 2 + 2 \ zeta_2 \ omega_n s + \ omega_n ^ 2}, $ $

指定系数$\omega_n, \zeta_1, \zeta_2$作为实参数并创建参数化模型N上面所示的传递函数:

Wn = realp“wn”, 300);Zeta1 = realp(“zeta1”1);zet2 = realp(“zeta2”1);zeta1。最小值= 0;zeta1。最大值= 1;% 0 <= zeta1 <= 1zeta2。最小值= 0;zeta2。最大值= 1;% 0 <= zeta2 <= 1N = tf([1 2*zeta1*wn wn^2],[1 2*zeta2*wn wn^2]);%可调陷波滤波器

然后将该参数化缺口模型与Simulink模型中的“缺口”块关联起来。金宝app因为控制系统是连续时间调优的,所以即使“notch”块本身是离散的,也可以使用陷波滤波器的连续时间参数化。

setBlockParam (ST0“缺口”N);

下一个使用looptune以50 rad/s的目标交叉频率联合调整“增益”,“Leadlag”和“Notch”模块。为了消除来自装置共振的残余振荡,指定一个目标环路形状,滚降超过50 rad/s时为-40 dB/decade。

用几个频率点指定目标环的形状频率= [5 50 500];增益= [10 1 0.01];TLS = TuningGoal。LoopShape (“缺口”的朋友(收益,频率));测量=测量位置的;控制器输入百分比控制=“缺口”;控制器输出%ST2 = looptune(ST0,控制,测量,TLS);
最终:峰值增益= 1.05,迭代= 60

最终增益接近于1,表明满足了所有要求。将闭环阶跃响应与之前的设计进行比较。

T2 = getIOTransfer(ST2,“参考”测量位置的);clf step(T0,T1,T2,1.5),网格图例(“原始”“领先/落后”“领先/滞后+缺口”

为了验证陷波滤波器按预期执行,计算总补偿器C还有开环响应l的波德响应GCl

获取调优块值(按顺序,块在ST2.TunedBlocks中列出)[g,LL,N] = getBlockValue(ST2,“获得”Leadlag的“缺口”);C = N * LL * g;L = getLoopTransfer(ST2,“缺口”1);bode(G,C,L,{1e1,1e3}),网格图例(‘G’“C”“L”

这个波德图证实了植物共振已经被正确地“剔除”了。

离散陷波滤波器

再次使用writeBlockValue离散化调优的超前/滞后和陷波滤波器,并将它们的值写回Simulink。金宝app比较MATLAB和Simulink的响应:金宝app

writeBlockValue (ST2) sim卡(“rct_dmcNotch”);T = youout .time;Y = youout .signals.values;step(T2),等等,绘制(t,y,“r——”)传说(“连续”“混合动力(模型)金宝app”
目前的地块

Simu金宝applink响应显示出较小的剩余振荡。陷波滤波器离散化是可能的原因,因为陷波频率接近奈奎斯特频率π/ 0.002 = 1570rad / s。默认情况下,使用ZOH方法对缺口进行离散化。将其与在缺口频率处预翘曲的Tustin方法进行比较:

wn =潮湿(N);陷波滤波器固有频率的%Ts = 0.002;离散陷波滤波器采样时间的%Nd1 = c2d(N,Ts,“zoh”);Nd2 = c2d(N,Ts,“tustin”c2dOptions (“PrewarpFrequency”wn (1)));clf, bode(N,Nd1,Nd2)“连续”“用ZOH离散化”《与塔斯汀离散化》...“位置”“西北”

ZOH法失真较大,应采用预翘曲Tustin法。为此,为陷波滤波器块指定所需的速率转换方法:

setBlockRateConversion (ST2“缺口”“tustin”wn (1)) writeBlockValue (ST2)

writeBlockValue现在使用Tustin预warp在陷波频率离散陷波滤波器,并将其写回Simulink。金宝app验证一下,这样就消除了振荡。

sim卡(“rct_dmcNotch”);T = youout .time;Y = youout .signals.values;step(T2),等等,绘制(t,y,“r——”)传说(“连续”“混合动力(模型)金宝app”
目前的地块

直接离散时间调优

或者,您可以在离散时间直接调优控制器,以避免陷波滤波器的离散化问题。为此,指定Simulink模型应该在0.002秒的控制器采金宝app样时间线性化和调优:

ST0 = slTuner(“rct_dmcNotch”, {“获得”Leadlag的“缺口”});ST0。Ts = 0.002;

为了防止高增益控制和饱和,添加限制从参考到控制信号(Notch块输出)增益的要求。

GL = TuningGoal。获得(“参考”“缺口”, 0.01);

现在以指定的采样率重新调优控制器,并验证调优后的开闭环响应。

ST2 = looptune(ST0,控制,测量,TLS,GL);%闭环响应T2 = getIOTransfer(ST2,“参考”测量位置的);clf step(T0,T1,T2,1.5),网格图例(“原始”“领先/落后”“领先/滞后+缺口”
最终:峰值增益= 1.04,迭代= 43

%开环响应[g,LL,N] = getBlockValue(ST2,“获得”Leadlag的“缺口”);C = N * LL * g;L = getLoopTransfer(ST2,“缺口”1);bode(G,C,L,{1e1,2e3}),网格图例(‘G’“C”“L”

结果与连续时间调优控制器得到的结果相似。现在在Simulink中对照连续时间植物验证数字控制器。金宝app

writeBlockValue (ST2) sim卡(“rct_dmcNotch”);T = youout .time;Y = youout .signals.values;step(T2),等等,绘制(t,y,“r——”)传说(“离散”“混合动力(模型)金宝app”
目前的地块

这一次,混合响应非常接近它的离散时间近似,不需要进一步调整陷波滤波器。

另请参阅

(金宝appSimulink控制设计)

相关的话题