这个例子展示了如何使用鲁棒控制工具箱™为主动悬架系统设计鲁棒控制器。这个例子描述了四分之一汽车悬架模型。然后,它计算an
用于标称系统的控制器,使用hinfsyn
命令。最后,该示例展示了如何使用μ-综合,为全不确定系统设计鲁棒控制器。
传统的被动悬架在车身和车轮之间使用弹簧和阻尼器。选择弹簧阻尼特性是为了强调几个相互冲突的目标之一,如乘客舒适度、道路处理和悬挂挠度。主动悬架允许设计师在底盘和车轮装配之间使用反馈控制器液压执行器来平衡这些目标。
本例使用了主动悬架系统的四分之一车型(见图1) (以千克)代表汽车底盘和质量 (公斤)代表车轮总成。春天 和阻尼器 代表放置在车身和车轮总成之间的被动弹簧和减震器。春天 对充气轮胎的可压缩性进行了建模。的变量 , , (均以米为单位)分别为车身移动、车轮移动和道路扰动。力 (千牛顿)应用于车身和车轮总成之间,由反馈控制,代表悬架系统的主动组件。
图1:主动悬架的四分之一车模型。
用符号 ,四分之一车型的线性化状态空间方程为:
构建状态空间模型qcar.
代表这些方程式。
%物理参数mb=300;%公斤mw = 60;%公斤bs = 1000;%n / m / sKs = 16000;%n / mkt=190000;%n / m%状态矩阵A = [0 1 0 0;[-ks -bs ks bs]/mb;......0 0 0 1;[ks bs -ks-kt -bs]/mw];B = [0 0;0 1 e3 / mb;0 0;(kt 1 e3) / mw);C = [1 0 0 0;1 0 -1 0;(2)):;D = [0 0; 0 0; B(2,:)]; qcar = ss(A,B,C,D); qcar.StateName = {‘车身行程(m)’;“身体韦尔(m / s)的;......‘车轮行程(m)’;‘车轮高度(米/秒)’};qcar。InputName = {“r”;“fs”};qcar.outputname = {“xb”;'SD';ab};
从执行机构到身体的行程和加速度的传递函数具有一个虚轴零,其固有频率为56.27 rad/s。这被称为轮胎跳频.
tzero(qcar({“xb”,ab},“fs”))
ans=2×1复合物-0.0000+56.2731i-0.0000-56.2731i
类似地,从致动器到悬架偏转的传递函数具有自然频率22.97 rad / s的假想轴零。这被称为响尾蛇频率.
零(qcar('SD',“fs”))
ans=2×1复合物0.0000 +22.9734i
道路扰动会影响汽车和悬架的运动。乘客舒适度与小的车身加速度有关。允许的悬架行程受到执行机构位移的限制。绘制从道路扰动和作动器力到车身加速度和悬架位移的开环增益。
bodemag (qcar ({ab,'SD'},“r”),'B'qcar ({ab,'SD'},“fs”),“r”, {100});传奇('道路干扰(R)',‘执行机构力(fs)’,“位置”,“西南”)标题({‘来自道路距离(r)和执行器力(fs)的增益’;'到车身加速(ab)和悬挂行程(sd)'})
由于存在虚轴零点,反馈控制无法改善对道路扰动的响应 人体加速度 在轮胎跳动频率下,从 悬架挠度 在震动空间频率。而且,因为这种关系 事实上,车轮的位置 大致如下 在低频(小于5号),乘客舒适和悬架偏转之间存在固有的折衷:在低频时的任何身体行程的减少将导致悬架偏转增加。
用于主动悬架控制的液压作动器之间连接着车身质量 和车轮组件质量 .标称致动器动态由一阶传递函数表示 最大位移为0.05米。
ActNom = tf(1,[1/60 1]);
这个名义模型只是近似的物理驱动器动力学。我们可以使用一组致动器模型来解释致动器和四分之一车模型中的建模误差和可变性。这个系列包括一个具有频率依赖的不确定性量的名义模型。在低频率,低于3 rad/s,模型可以从其标称值变化高达40%。在3 rad/s左右,百分比变化开始增加。在15 rad/s时不确定度超过100%,在大约1000 rad/s时达到2000%。加权函数 用频率调制不确定度的量。
Wunc=makeweight(0.40,15,3);unc=ultidyn(“unc”[1],“SampleStateDim”5);Act = ActNom*(1 + Wunc*unc);的行为。InputName =“你”;Act.OutputName=“fs”;
结果行为
为执行器的不确定状态空间模型。绘制20个样本值的波德响应曲线行为
并与标称值进行比较。
rng(“默认”)波德(行动,'B',作为名义价值,“r+”, logspace (3120))
主要控制目标是根据乘客舒适性和道路操纵性制定的,这与车身加速度有关 和悬架旅行 。影响控制设计的其他因素包括道路扰动的特性、反馈传感器测量的质量以及可用控制力的限制。使用 在合成算法中,我们必须将这些目标表达为一个要最小化的单一成本函数。如图2所示。
图2:干扰抑制公式。
反馈控制器使用测量值 悬挂行程的 和身体加速 来计算控制信号 驱动液压执行器。有三个外部干扰源:
道路扰动 ,建模为标准化信号 由加权函数形成 .为了模拟宽带道路偏转幅度为七厘米,我们使用恒重
两种测量的传感器噪声,建模为归一化信号 和 由加权函数形成 和 .我们用 和 分别模拟强度为0.01和0.5的宽带传感器噪声。在更现实的设计中,这些权重将与频率相关,以模拟位移和加速度传感器的噪声频谱。
控制目标可以重新解释为抗干扰性目标:最大限度地减少干扰的影响 控制努力的加权组合 ,中止旅行 ,身体加速度 .当使用 范数(峰值增益)来衡量“影响”,这相当于设计一个控制器,使其最小化 干扰输入的范数 错误信号 .
创建图2所示的权重函数,并对其I/O通道进行标记,以方便互连。使用高通滤波器 惩罚控制信号的高频内容,从而限制控制带宽。
载荷=ss(0.07);载荷为u=“d1”;Wroad.y=“r”;Wact = 0.8 * TF([1 50],[1 500]);wact.u =“你”;Wact.y=“e1”;Wd2=ss(0.01);Wd2.u=“d2”;Wd2。y =“Wd2”; Wd3=ss(0.5);Wd3.u=“d3”;Wd3.y=“Wd3”;
为道路干扰指定增益的闭环目标 悬架挠度 (操纵)和车身加速度 (舒适)。由于执行器的不确定性和虚轴零点,只寻求衰减干扰低于10 rad/s。
HandlingTarget = 0.04 * tf([1/8 1],[1/80 1]);ComfortTarget = 0.4 * tf([1/0.45 1],[1/150 1]);target = [HandlingTarget;ComfortTarget];bodemag (qcar ({'SD',ab},“r”)*满载,'B'目标,“r——”,{11000}),网格标题(“对道路扰动的响应”) 传奇(“开环”,“闭环目标”)
相应的性能权重 是这些舒适性和操纵性目标的倒数。为了研究乘客舒适性和道路操纵性之间的权衡,构建三组权重 对应三种不同的权衡:舒适度( )、平衡( ),以及处理( ).
%设计三分β=重塑([0.01 0.5 0.99],[113]);WSD = beta / handlingtarget;wsd.u ='SD';WSD.Y =‘e3’;WAB =(1-Beta)/ ComfortTarget;wab.u =ab;wab.y =‘e2’;
最后,使用连接
构建一个模型夸里奇
图2的框图。请注意,夸里奇
是三个模型的数组,每个设计点一个
.同时,夸里奇
是否不确定模型,因为它包含不确定执行器模型行为
.
sdmeas = sumblk (‘y1=sd+Wd2’);abmeas=sumblk(“y2 = ab + Wd3”);ICinputs={“d1”;“d2”;“d3”;“你”};i输出={“e1”;‘e2’;‘e3’;“日元”;“日元”};qcaric =连接(qcar(2:3,:),行动,Wroad, Wact, war, Wsd, Wd2, Wd3,......SDMEA、ABMEA、ICI输入、ICI输出)
qcaric=3x1不确定连续时间-状态-空间模型数组。每个模型有5个输出、4个输入、9个状态和以下不确定块:unc:不确定1x1 LTI,峰值增益=1,1次出现类型“qcaric.NominalValue”查看标称值,“get(qcaric)”查看所有属性,以及“qcaric.NominalValue”与不确定因素相互作用。
使用hinfsyn
计算A.
用于混合因子的每个值的控制器
.
ncont = 1;%一个控制信号,un mea = 2;%两个测量信号,sd和abK=ss(零(ncont,nmeas,3));gamma=zeros(3,1);对于我= 1:3 (K(:,:我)~,γ(i)) = hinfsyn (qcaric(:,:我),n mea, ncont);终止伽玛
伽玛=3×10.9405 0.6727 0.8892
三个控制器实现闭环控制 规范分别为0.94、0.67和0.89。建立相应的闭环模型,比较道路扰动的增益 对于被动和主动悬架。观察所有三个控制器是否将悬架挠度和车身加速度降低到低于空间频率(23 rad/s)的水平。
%闭环模型K.u={'SD',ab};K.Y =“你”; CL=连接(qcar,额定动作,K,“r”, {“xb”;'SD';ab});bodemag (qcar (:,“r”),'B'CL (:,: 1),‘r-。’,......CL (:,:, 2),“m -”。CL (:,: 3),“k -”。,{1140}),栅格图例(“开环”,“安慰”,“平衡”,“处理”,“位置”,“东南”)标题(“车身行程、悬挂挠度和因道路引起的车身加速度”)
为了进一步评估这三种设计,使用道路干扰信号进行时域模拟 代表高度5厘米的道路凸点。
%道路扰动t=0:0.0025:1;道路距离=0(尺寸(t));道路距离(1:101)=0.025*(1-cos(8*pi*t(1:101));%闭环模型Simk = Connect(QCAR,ACT.NOMINAL,K,“r”, {“xb”;'SD';ab;“fs”});%模拟p1=lsim(qcar(:,1),道路距离,t);y1=lsim(SIMK(1:4,1,1),道路距离,t);y2=lsim(SIMK(1:4,1,2),道路距离,t);y3=lsim(SIMK(1:4,1,3),道路距离,t);%绘图结果子图(211)绘图(t,p1(:,1),'B',t,y1(:,1),“r.”,t,y2(:,1),“m”。t y3 (: 1),“k”。,t,路角,‘g’)标题(“身体旅行”), ylabel ('x_b(m)')次要情节(212)情节(t, p1 (:, 3),'B',t,y1(:,3),“r.”,t,y2(:,3),“m”。,t,y3(:,3),“k”。,t,路角,‘g’)标题(“身体加速”), ylabel ('a_b(m / s ^ 2)')
子图(211)绘图(t,p1(:,2),'B',t,y1(:,2),“r.”, t, y2 (:, 2),“m”。,t,y3(:,2),“k”。,t,路角,‘g’)标题(“悬架挠度”),包含(“时间(s)”), ylabel (“s_d (m)的)次要情节(212)情节(t, 0(大小(t)),'B'、t、y₁(:4)“r.”,t,y2(:,4),“m”。,t,y3(:,4),“k”。,t,路角,‘g’)标题(“控制力”),包含(“时间(s)”), ylabel (‘f_s(kN)’) 传奇(“开环”,“安慰”,“平衡”,“处理”,'道路干扰',“位置”,“东南”)
观察,强调乘客舒适性的控制器的车身加速度最小,强调悬挂偏转的控制器的车身加速度最大。“平衡”设计实现了车身加速度和悬挂挠度之间的良好妥协。
到目前为止,你已经设计好了 满足系统性能目标的控制器义务执行器模型。如前所述,该模型仅为真实执行器的近似值,您需要确保在面对模型误差和不确定性时保持控制器性能。这称为强大的表现.
下一次使用
-synthesis,为整个系列的执行器模型设计一个实现鲁棒性能的控制器。利用不确定模型,利用musyn函数合成鲁棒控制器qcaric(:,:,2)
对应“均衡”表现(
).
[krob,rpmu] = musyn(qcaric(:,:,2),nmeas,ncont);
D-K迭代总结:----------------------------------------------------------------- 强劲的性能符合订单 ----------------------------------------------------------------- Iter K步峰μ适合D 1 1.193 1.125 1.139 4 2 3 0.9991 0.946 0.9559 1.091 - 1.025 1.033 - 4 4 4 0.9358 0.932 0.9348 4 5 6 0.9103 0.907 0.9096 0.9096 0.9057 0.9114 8 8 7 0.9091 - 0.9066最佳实现的健壮性能:0.906
用鲁棒控制器模拟路面颠簸的标称响应Krob
.响应与使用“平衡”方法获得的响应相似
控制器。
%闭环模型(标称)krob.u = {'SD',ab};Krob。y =“你”;Simkrob = Connect(QCar,Act.Nominal,Krob,“r”, {“xb”;'SD';ab;“fs”});%模拟p1=lsim(qcar(:,1),道路距离,t);y1=lsim(SIMKrob(1:4,1),道路距离,t);%绘图结果clf,次要情节(221)情节(t, p1 (: 1),'B',t,y1(:,1),“r”,t,路角,‘g’)标题(“身体旅行”), ylabel ('x_b(m)')子图(222)绘图(t,p1(:,3),'B',t,y1(:,3),“r”)标题(“身体加速”), ylabel ('a_b(m / s ^ 2)')子地块(223)图(t,p1(:,2),'B',t,y1(:,2),“r”)标题(“悬架挠度”),包含(“时间(s)”), ylabel (“s_d (m)的)次要情节(224)情节(t, 0(大小(t)),'B'、t、y₁(:4)“r”)标题(“控制力”),包含(“时间(s)”), ylabel (‘f_s(kN)’) 传奇(“开环”,“稳健设计”,“位置”,“东南”)
接下来,模拟从不确定模型集中随机选择的100个执行器模型对道路颠簸的响应行为
.
rng(“默认”), nsamp = 100;clf具有平衡h -∞控制器的不确定闭环模型CLU =连接(qcar法案,K (:,:, 2),“r”, {“xb”,'SD',ab}); lsim(usample(CLU、nsamp),'B',健身房。名义,“r”,路政署,t)职衔('标称“平衡”设计“) 传奇(“心烦意乱”,“名义上的”,“位置”,“东南”)
具有平衡鲁棒控制器的不确定闭环模型CLU =连接(Krob qcar,行动,“r”, {“xb”,'SD',ab}); lsim(usample(CLU、nsamp),'B',健身房。名义,“r”,路政署,t)职衔('强大的“平衡”设计“) 传奇(“心烦意乱”,“名义上的”,“位置”,“东南”)
鲁棒控制器Krob
由于模型不确定性而降低了可变性,并提供更一致的性能。
鲁棒控制器Krob
与工厂相比,具有相对较高的阶数。您可以使用模型简化函数来找到一个低阶控制器,以实现相同水平的鲁棒性能。使用减少
生成不同阶数的近似。
%创建缩小控制器数组NS =订单(Krob);StateOrders = 1: NS;基米-雷克南=减少(Krob StateOrders);
下一次使用robgain
计算每个降阶近似的稳健性能裕度。当闭环增益小于时,性能目标得到满足
.稳健的性能边际衡量的是在不降低性能的情况下,能够维持多少不确定性(超过
).余量为1或更多表示我们可以维持100%的指定不确定性。
%减少控制器的%计算鲁棒性能余量γ= 1;CLP =融通(qcaric (:,: 2), kr);对于k = 1:ns pm(k)= robgain(CLP(:,:,k),伽玛);终止%比较降阶和全阶控制器的鲁棒性能PMfull=PM(end.LowerBound);plot(StateOrders,[PM.LowerBound],'b-o',......StateOrders,repmat(PMfull,[1 NS]),“r”);网格标题(“强大的性能余量作为控制器订单的函数”) 传奇(“简化订单”,'完整订单',“位置”,“东南”)
您可以使用鲁棒性能高于1的最小控制器阶数。
或者,您可以使用斯文
直接调谐低阶控制器。这通常比整个订单控制器的A-Bouthiori减少更有效Krob
. 例如,调整三阶控制器以优化其鲁棒性能。
%创建可调的三阶控制器K =可调参数(“K”,3,非关税壁垒,非关税壁垒;闭环系统的稳健性能CL0=lft(qcaric(:,:,2),K);[CL,RP]=musyn(CL0);
D-K迭代总结:----------------------------------------------------------------- Robust performance Fit order ----------------------------------------------------------------- Iter K Step Peak MU D Fit D 1 1.189 1.104 1.12 10 2 1.076 1.062 1.073 10 3 0.9899 0.9762 0.9913 10 4 0.9229 0.9228 0.9341 10 5 0.9197 0.9156 0.925 10 6 0.92 0.9157 0.9226 10 Best achieved robust performance: 0.916
调整后的控制器具有良好的性能RP = 0.92
,非常接近Krob
.您可以使用
K3=getBlockValue(CL,“K”);BODE(K3)