这个例子展示了如何使用鲁棒控制工具箱™为主动悬架系统设计鲁棒控制器。这个例子描述了四分之一汽车悬架模型。然后,它计算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)';'vel(m / s)'};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 0.0000 -22.9734i
道路障碍影响汽车和悬架的运动。乘客舒适与小的身体加速有关。允许的悬挂行程受到致动器位移的限制。从道路干扰和致动器力绘制开环增益,对身体加速和悬架位移。
bodemag (qcar ({'ab'那'SD'},'r'),'B'qcar ({'ab'那'SD'},“fs”),'r',{1 100});传说('道路干扰(r)'那'执行器力量(FS)'那“位置”那“西南”)标题({'来自Dist(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%。加权函数 用于调节频率的不确定性量。
wenc = makeweight(0.40,15,3);Unc = Ultidyn(“unc”[1],“SampleStateDim”5);Act = ActNom*(1 + Wunc*unc);的行为。InputName ='U';act.outputname =.“fs”;
结果act
为执行器的不确定状态空间模型。绘制20个样本值的波德响应曲线act
并与标称值进行比较。
rng (“默认”)波德(行动,'B',act.nominalvalue,' r + ', logspace (3120))
主要控制目标在乘客舒适和道路处理方面制定,与身体加速有关 和悬架旅行 .影响控制设计的其他因素包括道路干扰的特性,反馈的传感器测量的质量以及可用控制力的限制。使用 在合成算法中,我们必须将这些目标表达为一个要最小化的单一成本函数。如图2所示。
图2:干扰抑制公式。
反馈控制器使用测量 悬挂行程的 和身体加速 来计算控制信号 驱动液压执行器。有三个外部干扰来源:
道路干扰 ,建模为归一化信号 由加权功能塑造 .为了模拟宽带道路偏转幅度七厘米,我们使用恒重
两种测量的传感器噪声,建模为归一化信号 和 通过加权功能形状 和 .我们使用 和 分别对强度为0.01和0.5的宽带传感器噪声进行建模。在更现实的设计中,这些权重将依赖于频率,以模拟位移和加速度传感器的噪声频谱。
控制目标可以重新解释为抗干扰性目标:最大限度地减少干扰的影响 控制努力的加权组合 ,中止旅行 ,身体加速度 .使用时 范数(峰值增益)来衡量“影响”,这相当于设计一个控制器,使其最小化 来自干扰投入的规范 错误信号 .
创建图2所示的权重函数,并对其I/O通道进行标记,以方便互连。使用高通滤波器 惩罚控制信号的高频内容,从而限制控制带宽。
Wroad = ss (0.07);Wroad。u =“d1”;wrad.y ='r';Wact = 0.8 * TF([1 50],[1 500]);wact.u ='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——”,{1,1000}),网格标题('回应道路干扰')传奇(“开环”那'闭环目标')
相应的性能权重 是这些舒适和操纵目标的反义词。为了调查乘客舒适度和道路处理之间的权衡,构建三套重量 对应三种不同的权衡:舒适( )、平衡( )及处理( ).
%设计三分β=重塑([0.01 0.5 0.99],[1 3]);WSD = Beta / Handlingtarget;wsd.u ='SD';WSD.Y =“e3”;WAB =(1-Beta)/ Comforttarget;wab.u ='ab';wab.y =“e2”;
最后,使用连接
构建一个模型qcaric.
图2的框图。请注意,qcaric.
是三个模型的数组,每个设计点一个
.同时,qcaric.
是否不确定模型,因为它包含不确定执行器模型act
.
sdmeas = sumblk ('y1 = sd + wd2');abmeas = sumblk (“y2 = ab + Wd3”);iCinpuls = {“d1”;'d2';'d3';'U'};icoutpuls = {“e1”;“e2”;“e3”;'y1';“日元”};qcaric =连接(qcar(2:3,:),行动,Wroad, Wact, war, Wsd, Wd2, Wd3,......sdmeas、abmeas ICinputs ICoutputs)
qcaric = 3x1不确定连续时间状态空间模型。每个模型有5个输出,4个输入,9个状态,以及以下不确定块:UNC:不确定1x1 lti,峰值增益= 1,1次出现“qcaric.nominalvalue”,以查看标称值,“get(qcaric)”到查看所有属性,以及“qcaric.unctia绘图”以与不确定的元素进行交互。
使用hinfsyn
计算A.
用于混合因子的每个值的控制器
.
ncont = 1;%一个控制信号,Un mea = 2;%两个测量信号,sd和abk = ss(零(ncont,nmeas,3));伽玛=零(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 ='U';CL = Connect(QCAR,ACT.NOMINAL,K,'r',{'xb';'SD';'ab'});bodemag (qcar (:,'r'),'B'CL (:,: 1),r -。那......CL (:,:, 2),“m -”。,cl(::,3),“k -”。,{1,140}),网格传奇(“开环”那“安慰”那“平衡”那'处理'那“位置”那“东南”)标题(“车身行程、悬挂挠度和因道路引起的车身加速度”)
为了进一步评估三个设计,使用道路干扰信号执行时域模拟 代表高度5厘米的道路凸点。
%道路干扰t = 0:0.0025:1;Roaddist =零(尺寸(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), roaddist, t);日元= lsim (SIMK (1:4, 1, 1), roaddist, t);y2 = lsim (SIMK (1:4, 1, 2), roaddist, t);y3 = lsim (SIMK (1:4, 1, 3), roaddist, t);%绘图结果子图(211)绘图(t,p1(:,1),'B',t,y1(:,1),'r。',t,y2(:,1),“m”。t y3 (: 1),“k”。,t,dropdist,‘g’)标题(“身体旅行”), ylabel ('x_b(m)')子图(212)绘图(t,p1(:,3),'B',t,y1(:,3),'r。',t,y2(:,3),“m”。,t,y3(:,3),“k”。,t,dropdist,‘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,dropdist,‘g’)标题(“悬架挠度”),包含(“时间(s)”), ylabel (“s_d (m)的)子图(212)绘图(t,零(大小(t)),'B'、t、y₁(:4)'r。',t,y2(:,4),“m”。,t,y3(:,4),“k”。,t,dropdist,‘g’)标题(“控制力”),包含(“时间(s)”), ylabel (f (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 ='U';Simkrob = Connect(QCar,Act.Nominal,Krob,'r',{'xb';'SD';'ab';“fs”});%模拟p1 = lsim (qcar (: 1), roaddist, t);Y1 = LSIM(Simkrob(1:4,1),Roaddist,T);%绘图结果clf,次要情节(221)情节(t, p1 (: 1),'B',t,y1(:,1),'r',t,dropdist,‘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 (kN)”)传奇(“开环”那'强大的设计'那“位置”那“东南”)
接下来,从不确定模型集中随机选取100个作动器模型,模拟路面颠簸的响应act
.
rng (“默认”), nsamp = 100;clf具有平衡h -∞控制器的不确定闭环模型CLU =连接(qcar法案,K (:,:, 2),'r',{'xb'那'SD'那'ab'});LSIM(USAMPLE(CLU,NSAMP),'B',clu.nominal,'r',路边,t)标题('标称“平衡”设计“)传奇('扰乱'那“名义”那“位置”那“东南”)
具有平衡鲁棒控制器的不确定闭环模型CLU =连接(Krob qcar,行动,'r',{'xb'那'SD'那'ab'});LSIM(USAMPLE(CLU,NSAMP),'B',clu.nominal,'r',路边,t)标题('鲁棒“平衡”设计“)传奇('扰乱'那“名义”那“位置”那“东南”)
鲁棒控制器Krob
由于模型不确定性而降低了可变性,并提供更一致的性能。
鲁棒控制器Krob
与工厂相比有较高的次序。您可以使用模型缩减函数来找到实现相同鲁棒性能水平的低阶控制器。使用减少
生成不同阶数的近似。
%创建缩小阶控制器数组NS =订单(Krob);StateOrders = 1: NS;基米-雷克南=减少(Krob StateOrders);
下一次使用robgain
计算每个降阶近似的稳健性能裕度。当闭环增益小于时,性能目标得到满足
.稳健的性能边际衡量的是在不降低性能的情况下,能够维持多少不确定性(超过
).1或更多的边距表明我们可以维持100%的指定不确定性。
每个减少控制器的%计算鲁棒性能余量伽玛= 1;CLP = LFT(QCaric(:,:,2),KRED);对于k = 1:ns pm(k)= robgain(CLP(:,:,k),伽玛);结束%比较降阶和全阶控制器的鲁棒性能PMFULL = PM(结束).lowerbound;绘图(役,[PM.LowerBound],“这”那......役,repmat(pmfull,[1 ns]),'r');网格标题(“强大的性能余量作为控制器订单的函数”)传奇('减少订单'那'完整订单'那“位置”那“东南”)
您可以使用强大的性能高于1的最小控制器顺序。
或者,您可以使用斯文
直接调谐低阶控制器。这通常比全阶控制器的A-Bonderiori减少更有效Krob
.例如,调整三阶控制器以优化其强大的性能。
%创建可调的三阶控制器k = TunableSS(“K”,3,ncont,nmeas);闭环系统的稳健性能CL0 =融通(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.9702 0.9874 10 4 0.9226 0.9222 0.9333 10 5 0.9189 0.9153 0.9212 10 6 0.9199 0.9159 0.9255 10 Best achieved robust performance: 0.915
调整后的控制器具有性能RP = 0.92
,非常接近那个Krob
.您可以看到它的Bode响应使用
k3 = getblockValue(cl,“K”);BODE(K3)