该实例说明了如何在Simulink中对不确定质量-弹簧-阻尼系统的PID控制器进行鲁棒整定。金宝app
图1所示的质量-弹簧-阻尼器由二阶微分方程建模
在哪里是施加质量的力量为质量的水平位置。
图1:质量-弹簧-阻尼系统。
此系统以Simulink建模如下:金宝app
Open_System(“rct_mass_spring_damper”)
我们可以使用PID控制器来生成努力需要改变立场.调整该PID控制器在物理参数时很容易是已知的。然而,由于测量不精确、制造公差、操作条件变化和磨损等诸多因素,在实际应用中很少出现这种情况。这个示例展示了如何在调优过程中考虑这种不确定性,以便在预期值的范围内保持高性能.
Simu金宝applink模型使用“最可能”或“标称”的值:
使用“不确定的真实”(尿尿
)对象建模每个参数可能采用的值范围。这里的不确定性被指定为与标称值的百分比偏差。
嗯=尿尿('M',3,“比例”, 40);加州大学=尿素的(“c”,1,“比例”20);英国=尿胃('K'2,“比例”, 30);
首先调整PID控制器的标称参数值。这里我们使用两个简单的设计要求:
位置应该用1秒的响应时间跟踪步骤更改吗
滤波器系数在PID控制器中不应超过100。
这些要求表示为调整目标:
Req1 = TuningGoal。跟踪(“r”,'X',1);req2 = tuninggoal.controllerpoles(“控制器”, 0, 0100);
创建一个slTuner
接口用于调优Simulink模型中的“Controller”块,并使用金宝appsystune
调整PID收益并最佳符合两个要求。
st0 = sltuner(“rct_mass_spring_damper”,“控制器”);ST = SYTUNE(ST0,[REQ1 REQ2]);
Final:软= 1.02,硬= -Inf,迭代= 44
用getIOTransfer
来查看闭环阶跃响应。
tnom = getiotransfer(st,“r”,'X');步骤(Tnom)
标称响应符合响应时间要求,看起来很好。但它是多么强大的变化?
要回答这个问题,请使用“块替换”功能slTuner
创建质量弹簧阻尼系统的不确定闭环模型。块替换允许您在Simulink模型中指定特定块的线性化。金宝app在这里,我们使用它来替换酥脆的值通过不确定的值UM,UC,英国
在上面定义。
blocksubs(1)。Name =“rct_mass_spring_damper /质量”;blocksubs(1).Value = 1 / um;blocksubs(2).name =“rct_mass_spring_damper /阻尼”;blocksubs(2).Value = UC;blocksubs(3).name ='rct_mass_spring_damper / spring刚度';blocksubs(3)。值=英国;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]);
Soft: [1.02,4.9], Hard: [-Inf,-Inf], Iterations = 44 Soft: [1.03,1.41], Hard: [-Inf,-Inf], Iterations = 32 Soft: [1.04,1.04], Hard: [-Inf,-Inf], Iterations = 21 Final: Soft = 1.04, Hard = -Inf, Iterations = 97
鲁棒性能仅略低于标称性能,但相同的不确定闭环仿真表明,较标称设计有显著改善。
Trob = getIOTransfer(科大,“r”,'X');rng(0), step(Tnom,Trob,25), grid legend('标称调整','强大的调音')
这是通过绘制最坏情况的增益来确认来作为频率的函数。注意在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(圣,“控制器”);Crob = getBlockValue(科大,“控制器”);clf, bode(Cnom,Crob), grid legend('标称调整','强大的调音')
有关进一步的洞察力,请绘制性能指数(“软”调谐目标的最大值REQ1,REQ2
)作为不确定参数的函数对于标称阻尼.使用“不同参数”功能slTuner
在网格上创建一系列闭环模型涵盖其不确定性范围的值。
%指定6×6网格(M,K)值的线性化女士= linspace (um.Range (1) um.Range (2), 6);uk.Range ks = linspace (uk.Range (1), (2), 6);(女士,ks) = ndgrid (ms, ks);参数(1)。Name ='M';参数(1)。值=女士;参数(2)。Name ='K';参数(2)。值= ks;STP = slTuner (“rct_mass_spring_damper”,“控制器”、参数);在(m,k)网格上评估常规PID的性能指标setBlockValue (STP,“控制器”[~,F1] = evalGoal(Req1,STP);(~, F2) = evalGoal (Req2 STP);Fnom = max (F1、F2);%在(m,k)网格上评估性能指标,实现鲁棒PIDsetBlockValue (STP,“控制器”,crob)[〜,f1] = evalgoal(REQ1,STP);(~, F2) = evalGoal (Req2 STP);frob = max(f1,f2);%比较两个性能表面clf subplot(211), surf(ms,ks,Fnom) xlabel('M'),Ylabel('K'),Zlabel('表现')、标题('标称调谐(c = 1)') subplot(212), surf(ms,ks,Frob), set(gca,“ZLim”,[1 2])Xlabel('M'),Ylabel('K'),Zlabel('表现')、标题('强大调整(c = 1)')
这张图表明,标称调谐对质量的变化非常敏感或弹簧僵硬,而强大的调谐基本上对这些参数非常不敏感。完成设计,使用WrithblockValue.
将强大的PID增益应用于Simulink模型,并在Simulink中进行进金宝app一步的验证。
writeBlockValue(科大)