数字运动控制系统的调谐
这个例子展示了如何使用控制系统工具箱™来调整数字运动控制系统。
运动控制系统
所考虑的运动系统如下所示。
图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
上面所示的传递函数:
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
的波德响应G
,C
,l
:
获取调优块值(按顺序,块在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 = 1570
rad / 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”)
目前的地块
这一次,混合响应非常接近它的离散时间近似,不需要进一步调整陷波滤波器。
另请参阅
looptune (slTuner)
(金宝appSimulink控制设计)