此示例说明如何强大地调整用于在Simulink中建模的不确定质量弹簧阻尼系统的PID控制器。金宝app
图1中描绘的质量弹簧阻尼器由二阶微分方程建模
在哪里是施加质量的力量
是质量的水平位置。
图1:质量弹簧阻尼系统。
此系统以Simulink建模如下:金宝app
Open_System('rct_mass_spring_damper')
我们可以使用PID控制器来生成努力需要改变位置
。调整该PID控制器在物理参数时很容易
究竟知道。然而,这是在实践中很少的情况,因为许多因素包括不精确的测量,制造公差,操作条件的变化以及磨损和撕裂。此示例显示如何在调整期间考虑此类不确定性,以保持在预期值范围内的高性能
。
Simu金宝applink模型使用“最可能”或“名义”值:
使用“不确定的真实”(尿尿
)对象以模拟每个参数所采用的值范围。这里,不确定性被指定为与标称值的偏差百分比。
嗯=尿尿('M',3,'百分比',40);uc =尿尿('C',1,'百分比'20);英国=尿胃('K'2,'百分比',30);
首先调整标称参数值的PID控制器。在这里,我们使用两个简单的设计要求:
位置应跟踪步骤更改,使用1秒响应时间
滤波器系数在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)
标称响应符合响应时间要求,看起来很好。但它是多么强大的变化还是
要回答这个问题,请使用“块替换”功能SLTUNER.
创建质量弹簧阻尼系统的不确定闭环模型。块替换允许您在Simulink模型中指定特定块的线性化。金宝app在这里,我们使用它来替换酥脆的值通过不确定的值
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个随机选择的值在指定的不确定性范围内。观察一些参数组合的显着性能下降,振荡差,振荡差和长度稳定时间。
为了提高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),网格图例('标称调整'那'强大的调音')
这是通过绘制最坏情况的增益来确认到
作为频率的函数。注意近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.
)作为不确定参数的函数对于标称阻尼
。使用“不同参数”功能
SLTUNER.
在网格上创建一系列闭环模型涵盖其不确定性范围的值。
%指定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)')
此曲线表明,标称调谐对质量变化非常敏感或弹簧僵硬
,而强大的调谐基本上对这些参数非常不敏感。完成设计,使用
writeblockvalue.
将强大的PID增益应用于Simulink模型,并在Simulink中进行进金宝app一步的验证。
WriteBlockValue(UST)