本例展示了如何使用鲁棒控制工具箱™为主动悬架系统设计鲁棒控制器。本例描述了四分之一车悬架模型。然后,计算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 1e3/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);'车轮长度(米/秒)'};qcar。InputName = {“r”;“fs”};qcar。OutputName = {“xb”;“sd”;“ab”};
从执行机构到身体行程和加速度的传递函数具有虚轴零,固有频率为56.27 rad/s。这叫做tire-hop频率.
tzero (qcar ({“xb”,“ab”},“fs”))
ans =2×1复杂-0.0000 +56.2731i -0.0000 -56.2731i
同样,从执行器到悬架挠度的传递函数具有虚轴零,固有频率为22.97 rad/s。这叫做rattlespace频率.
0 (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”, {100});传奇(“道路干扰(r)”,执行力(fs),“位置”,“西南”)标题({从道路面积(r)和执行器力(fs)获得的增益;对车身加速(ab)和悬挂行程(sd)})
由于虚轴零点的存在,反馈控制不能改善路面扰动的响应 对身体加速度 在轮胎跳动的频率,从 悬架偏转 在响动空间频率。而且,因为关系 事实上,车轮的位置 大约是 在低频(小于5 rad/s)时,乘客的舒适性和悬挂挠度之间存在固有的权衡:在低频时,任何身体行程的减少都会导致悬挂挠度的增加。
用于主动悬架控制的液压执行器连接在车身质量之间 和车轮装配质量 .公称作动器动力学用一阶传递函数表示 最大位移0.05 m。
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 =“u”;的行为。OutputName =“fs”;
结果行为
是执行器的不确定状态空间模型。的20个样本值的波德响应行为
并与票面价值进行比较。
rng (“默认”)波德(行动,“b”,行动。NominalValue,' r + ', logspace (3120))
主要控制目标是根据乘客舒适度和道路操控性制定的,这与车身加速度有关 以及悬挂式旅行 .影响控制设计的其他因素包括道路扰动的特性、传感器反馈测量的质量以及可用控制力的限制。使用 在综合算法中,我们必须将这些目标表达为一个要最小化的单一代价函数。这可以按照图2所示的方式进行。
图2:干扰抑制公式。
反馈控制器使用测量 悬架旅行 还有身体加速度 计算控制信号 驱动液压执行机构。干扰有三种外部来源:
道路干扰 ,建模为标准化信号 由加权函数形成的 .为了模拟7厘米级的宽带道路挠度,我们使用恒重
两种测量的传感器噪声,建模为归一化信号 而且 由加权函数形成 而且 .我们使用 而且 对强度分别为0.01和0.5的宽带传感器噪声进行建模。在更现实的设计中,这些权重将依赖于频率来建模位移和加速度传感器的噪声频谱。
控制目标可以被重新解释为抗干扰性目标:尽量减少干扰的影响 控制努力的加权组合 ,悬挂行程 ,和体加速度 .当使用 Norm(峰值增益)来衡量“影响”,这相当于设计一个最小化的控制器 扰动输入的范数 错误信号 .
创建图2的加权函数,并标记它们的I/O通道,以方便互连。使用高通滤波器 惩罚控制信号的高频内容,从而限制控制带宽。
宽度= ss(0.07);Wroad。u =“d1”;Wroad。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]);目标= [HandlingTarget;ComfortTarget];bodemag (qcar ({“sd”,“ab”},“r”) * Wroad,“b”目标,“r——”,{1,1000}),网格标题(“应对道路干扰”)传说(“开环”,“闭环目标”)
相应的性能权重 是这些舒适和处理目标的倒数。为了研究乘客舒适度和道路操控性之间的权衡,构建三组权重 对应三种不同的权衡:舒适( ),平衡( ),以及处理( ).
%三个设计点Beta =重塑([0.01 0.5 0.99],[1 1 3]);Wsd = beta / HandlingTarget;Wsd。u =“sd”;Wsd。y =“e3”;Wab = (1-beta) / ComfortTarget;war。u =“ab”;war。y =“e2”;
最后,使用连接
构建一个模型qcaric
图2的框图。请注意,qcaric
是由三个模型组成的数组,每个模型对应一个设计点吗
.同时,qcaric
不确定的模型,因为它包含不确定的执行器模型行为
.
Sdmeas = sumblk('y1 = sd+Wd2');('y2 = ab+ w3 ');ICinputs = {“d1”;“d2”;“d3”;“u”};ICoutputs = {“e1”;“e2”;“e3”;“日元”;“日元”};qcaric =连接(qcar(2:3,:),Act, Wact,Wab,Wsd,Wd2, w3,...sdmeas、abmeas ICinputs ICoutputs)
Qcaric = 3x1不确定连续时间状态空间模型数组。每个模型有5个输出,4个输入,9个状态,以下不确定块:unc:不确定1x1 LTI,峰值增益= 1,1次出现Type "qcaric。NominalValue”查看标称值,“get(qcaric)”查看所有属性,以及“qcaric。不确定性”与不确定元素相互作用。
使用hinfsyn
计算
控制器的每个值的混合因子
.
Ncont = 1;% 1个控制信号,uNmeas = 2;%两个测量信号,sd和abK = ss(零(ncont,nmeas,3));Gamma = 0 (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”};梁龙骥=“u”;CL = connect(qcar,Act。名义,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));Roaddist (1:101) = 0.025*(1-cos(8*pi*t(1:101)));闭环模型SIMK = connect(qcar,Act。名义,K,“r”, {“xb”;“sd”;“ab”;“fs”});%模拟P1 = lsim(qcar(:,1),roaddist,t);y1 = 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、y₁(:1),“r”。, t, y2 (: 1),“m”。t y3 (: 1),“k”。t roaddist‘g’)标题(“身体旅行”), ylabel (“x_b (m)的(t,p1(:,3),“b”、t、y₁(:3)“r”。, t, y2 (:, 3),“m”。t y3 (:, 3),“k”。t roaddist‘g’)标题(“身体加速”), ylabel (“a_b (m / s ^ 2)”)
次要情节(211)情节(t, p1 (:, 2),“b”、t、y₁(:,2),“r”。, t, y2 (:, 2),“m”。t y3 (:, 2),“k”。t roaddist‘g’)标题(“悬架挠度”),包含(“时间(s)”), ylabel (“s_d (m)的) subplot(212) plot(t,零(大小(t)),“b”、t、y₁(:4)“r”。, t, y2 (:, 4),“m”。t y3 (:, 4),“k”。t roaddist‘g’)标题(“控制力”),包含(“时间(s)”), ylabel (f (kN)”)传说(“开环”,“安慰”,“平衡”,“处理”,“道路干扰”,“位置”,“东南”)
观察到,强调乘客舒适性的控制器的车身加速度最小,而强调悬挂挠度的控制器的车身加速度最大。“平衡”设计实现了车身加速度和悬挂偏转之间的良好妥协。
到目前为止你已经设计好了 控制器的性能目标名义上的致动器模型。如前所述,该模型只是真实执行器的近似值,您需要确保在面对模型错误和不确定性时保持控制器性能。这叫做强劲的性能.
下一个使用
-综合设计控制器,实现了整个系列的执行器模型的稳健性能。采用不确定模型,利用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 5 4 0.9358 0.932 0.9348 0.9096 0.9057 0.9114 8 6 7 8 0.9103 0.907 0.9096 0.9091 0.9066 0.9094 6最好实现健壮的性能:0.906
用鲁棒控制器模拟路面颠簸的标称响应Krob
.他们的反应与“平衡”组的反应相似
控制器。
%闭环模型(标称)Krob。U = {“sd”,“ab”};Krob。y =“u”;SIMKrob = connect(qcar,Act。Krob名义,“r”, {“xb”;“sd”;“ab”;“fs”});%模拟P1 = lsim(qcar(:,1),roaddist,t);y1 = lsim(SIMKrob(1:4,1),roaddist,t);%绘图结果Clf, subplot(221) plot(t,p1(:,1),“b”、t、y₁(:1),“r”t roaddist‘g’)标题(“身体旅行”), ylabel (“x_b (m)的(t,p1(:,3),“b”、t、y₁(:3)“r”)标题(“身体加速”), ylabel (“a_b (m / s ^ 2)”(t,p1(:,2),)“b”、t、y₁(:,2),“r”)标题(“悬架挠度”),包含(“时间(s)”), ylabel (“s_d (m)的) subplot(224) plot(t, 0 (size(t)),“b”、t、y₁(:4)“r”)标题(“控制力”),包含(“时间(s)”), ylabel (f (kN)”)传说(“开环”,“稳健设计”,“位置”,“东南”)
接下来,从不确定模型集中随机选取100个致动器模型,模拟对路面颠簸的响应行为
.
rng (“默认”), nsamp = 100;clf平衡h∞控制器的不确定闭环模型CLU = connect(qcar,Act,K(:,:,2),“r”, {“xb”,“sd”,“ab”});lsim (usample (CLU, nsamp),“b”,健身房。名义,“r”、roaddist t)标题(“名义上的“平衡”设计”)传说(“不安”,“名义”,“位置”,“东南”)
不确定闭环平衡鲁棒控制器模型CLU = connect(qcar,Act,Krob,“r”, {“xb”,“sd”,“ab”});lsim (usample (CLU, nsamp),“b”,健身房。名义,“r”、roaddist t)标题(“稳健的平衡设计”)传说(“不安”,“名义”,“位置”,“东南”)
鲁棒控制器Krob
减少由于模型不确定性而产生的可变性,并提供更一致的性能。
鲁棒控制器Krob
与工厂相比有相对较高的秩序。您可以使用模型约简函数来找到实现相同级别鲁棒性能的低阶控制器。使用减少
生成各种阶的近似。
创建降阶控制器数组NS = order(Krob);StateOrders = 1:NS;Kred = reduce(Krob,StateOrders);
下一个使用robgain
计算每个降阶近似的鲁棒性能裕度。当闭环增益小于时,达到性能目标
.稳健的性能裕度衡量的是在不降低性能的情况下可以维持多大的不确定性(超过
).裕度为1或更多表示我们可以维持100%的指定不确定性。
计算每个减少的控制器的鲁棒性能裕度Gamma = 1;CLP = lft(qcaric(:,:,2),Kred);为k=1:NS PM(k) = robgain(CLP(:,:,k),gamma);结束比较降阶控制器和全阶控制器的鲁棒性能。PMfull = PM(end).LowerBound;情节(StateOrders[点。下界),“这”,...StateOrders repmat (PMfull [1 NS]),“r”);网格标题(鲁棒性能裕度作为控制器顺序的函数)传说(“降阶”,“全部订单”,“位置”,“东南”)
可以使用鲁棒性能大于1的最小控制器顺序。
或者,您可以使用musyn
直接调优低阶控制器。这通常比全阶控制器的后验约简更有效Krob
.例如,调优三阶控制器以优化其鲁棒性能。
创建可调的三阶控制器K =不可调(“K”3 ncont n mea);优化闭环系统CL的鲁棒性能CL0 = lft(qcaric(:,:,2),K);[CL,RP] = musyn(CL0);
D-K迭代总结 : ----------------------------------------------------------------- 强劲的性能符合订单 ----------------------------------------------------------------- Iter K步峰μD适合10 2 D 1 1.189 1.104 1.12 1.076 1.062 1.073 10 3 0.9899 0.9762 0.9913 10 4 6 10 5 0.9197 0.9156 0.925 0.9229 0.9228 0.9341 0.92 0.9157 0.9226十佳实现健壮的性能:0.916
调优后的控制器具有性能RP = 0.92
的值非常接近Krob
.你可以看到它的波德响应使用
K3 = getBlockValue(CL,“K”);波德(K3)