主要内容

大量弹簧阻尼系统的强大调整

此示例说明如何强大地调整用于在Simulink中建模的不确定质量弹簧阻尼系统的PID控制器。金宝app

金宝app大规模春天阻尼系统的模拟模型

图1中描绘的质量弹簧阻尼器由二阶微分方程建模

$$ m \ ddot {x} + c \ dot {x} + k x = f $$

在哪里$ F $.是施加质量的力量$ x $是质量的水平位置。

图1:质量弹簧阻尼系统。

此系统以Simulink建模如下:金宝app

Open_System('rct_mass_spring_damper'

我们可以使用PID控制器来生成努力$ F $.需要改变位置$ x $。调整该PID控制器在物理参数时很容易$ m,c,k $究竟知道。然而,这是在实践中很少的情况,因为许多因素包括不精确的测量,制造公差,操作条件的变化以及磨损和撕裂。此示例显示如何在调整期间考虑此类不确定性,以保持在预期值范围内的高性能$ m,c,k $

不确定性建模

Simu金宝applink模型使用“最可能”或“名义”值$ m,c,k $

$$ m = 3,\; \;c = 1,\; \;k = 2。$$

使用“不确定的真实”(尿尿)对象以模拟每个参数所采用的值范围。这里,不确定性被指定为与标称值的偏差百分比。

嗯=尿尿('M',3,'百分比',40);uc =尿尿('C',1,'百分比'20);英国=尿胃('K'2,'百分比',30);

标称调整

首先调整标称参数值的PID控制器。在这里,我们使用两个简单的设计要求:

  • 位置$ x $应跟踪步骤更改,使用1秒响应时间

  • 滤波器系数$ n $在PID控制器中不应超过100。

这些要求表示为调整目标:

req1 = tuninggoal.tracking('r''X',1);req2 = tuninggoal.controllerpoles('控制器',0,0,100);

创建一个SLTUNER.用于在Simulink模型中调整“控制器”块的界面,并使用金宝appSystune.调整PID收益并最佳符合两个要求。

st0 = sltuner('rct_mass_spring_damper''控制器');ST = SYTUNE(ST0,[REQ1 REQ2]);
Final:Soft = 1.02,硬= -Inf,迭代= 44

采用getiotransfer查看闭环步骤响应。

tnom = getiotransfer(st,'r''X');步骤(Tnom)

标称响应符合响应时间要求,看起来很好。但它是多么强大的变化$ m,c,k $还是

鲁棒性分析

要回答这个问题,请使用“块替换”功能SLTUNER.创建质量弹簧阻尼系统的不确定闭环模型。块替换允许您在Simulink模型中指定特定块的线性化。金宝app在这里,我们使用它来替换酥脆的值$ m,c,k $通过不确定的值UM,UC,英国在上面定义。

blocksubs(1).name ='rct_mass_spring_damper / mass';blocksubs(1).Value = 1 / um;blocksubs(2).name ='rct_mass_spring_damper / damping';blocksubs(2).Value = UC;blocksubs(3).name ='rct_mass_spring_damper / spring刚度';Blocksubs(3).Value = UK;UST0 = SLTUNER('rct_mass_spring_damper''控制器',blocksubs);

为了评估名义调谐的稳健性,将调谐的PID增益应用于(未核准)不确定模型UST0.并模拟“不确定”闭环响应。

%标称调谐(st)的%将结果应用于不确定的闭环模型UST0setblockValue(UST0,GetblockValue(ST));tnom = getiotransfer(UST0,'r''X');RNG(0),步骤(TNOM,25),网格

绘图显示闭环响应与标称调谐的PID用于20个随机选择的值$ m,c,k $在指定的不确定性范围内。观察一些参数组合的显着性能下降,振荡差,振荡差和长度稳定时间。

强大的调整

为了提高PID控制器的稳健性,使用不确定的闭环模型重新调整它UST0.而不是名义闭环模型ST0.。由于存在尿尿模型中的组件,Systune.自动尝试最大限度地提高性能全部的不确定性范围。这使得最小化“软”调谐目标的最坏情况值req1.req2.

UST0 = SLTUNER('rct_mass_spring_damper''控制器',blocksubs);UST = SYSTUNE(UST0,[REQ1 REQ2]);
软:[1.02,4.9],硬:[-inf,-inf],迭代= 44软:[1.03,1.41],硬:[-inf,-inf],迭代= 32柔软:[1.04,1.04],硬:[-inf,-inf],迭代= 21 final:soft = 1.04,硬= -inf,迭代= 97

强大的性能仅比标称性能略差,但相同的不确定闭环仿真显示了标称设计的显着改进。

trob = getiotransfer(UST,'r''X');RNG(0),步骤(TNOM,TROB,25),网格图例('标称调整''强大的调音'

这是通过绘制最坏情况的增益来确认$ r $$ x $作为频率的函数。注意近1 rad / s附近的衰减谐振。

CLF子图(121),WCSigmaplot(TNOM,{1E-2,1E2}),网格集(GCA,'ylim',[ -  20 10]),标题('标称调整')子图(122),WCSigmaplot(TROB,{1E-2,1E2}),网格集(GCA,'ylim',[ -  20 10]),标题('强大的调音'), 传奇('离开'

除了一个关键差异之外,两个PID控制器的比较显示了类似的行为。名义上调谐的PID过度依赖于“取消”(摘录)的植物谐振,这不是在共振频率上存在不确定性的鲁棒策略。

cnom = getblockvalue(st,'控制器');crob = getblockValue(UST,'控制器');CLF,BODE(CNOM,CROB),网格传奇('标称调整''强大的调音'

有关进一步的洞察力,请绘制性能指数(“软”调谐目标的最大值REQ1,REQ2.)作为不确定参数的函数$ m,k $对于标称阻尼$ c = 1 $。使用“不同参数”功能SLTUNER.在网格上创建一系列闭环模型$ m,k $涵盖其不确定性范围的值。

%指定6×6网格(M,K)值的线性化MS = Linspace(UM.Range(1),UM.Range(2),6);ks = linspace(UK.Range(1),UK.Range(2),6);[ms,ks] = ndgrid(ms,ks);Params(1).name ='M';Params(1).Value = MS;Params(2).name ='K';Params(2).Value = Ks;stp = sltuner('rct_mass_spring_damper''控制器',params);%评估名义上调谐PID的(m,k)网格上的性能指数setblockValue(STP,'控制器',cnom)[〜,f1] = egavgoal(REQ1,STP);[〜,F2] = egAvgoal(REQ2,STP);fnom = max(f1,f2);%评估(m,k)网格上的性能指数用于强大的pidsetblockValue(STP,'控制器',crob)[〜,f1] = evalgoal(REQ1,STP);[〜,F2] = egAvgoal(REQ2,STP);frob = max(f1,f2);%比较两个性能表面CLF子图(211),冲浪(MS,KS,FNOM)XLabel('M'),Ylabel('K'),Zlabel('表现'), 标题('标称调谐(c = 1)')子图(212),冲浪(MS,KS,FROB),设置(GCA,'zlim',[1 2])Xlabel('M'),Ylabel('K'),Zlabel('表现'), 标题('强大调整(c = 1)'

此曲线表明,标称调谐对质量变化非常敏感$ m $或弹簧僵硬$ k $,而强大的调谐基本上对这些参数非常不敏感。完成设计,使用writeblockvalue.将强大的PID增益应用于Simulink模型,并在Simulink中进行进金宝app一步的验证。

WriteBlockValue(UST)

相关例子

更多关于