这个例子展示了如何对多个输出条件下的发动机转速模型进行线性化。
打开模型。
mdl =“scdspeed”;open_system (mdl)
对于本例,您可以找到从火花推进和油门角输入到输出发动机转速的线性模型。您可以在三种速度条件下这样做:2000、3000和4000 rpm。
创建一个包含三个操作点规格的数组。
Opspec = operspec(mdl,[31]);
由于Simulink金宝app®模型没有任何根级导入,opspec
不包含任何输出规格。方法为模型中的给定信号添加输出规范addoutputspec
函数。
在rad/s to rpm模块的输出中添加一个输出规格。
Opspec = addoutputspec(Opspec,'scdspeed/rad//s to rpm'1);
对于每个规范,表明输出值是已知的,并指定输出值。将已知的转速值设置为2000、3000和4000 rpm。
opspec (1) .Outputs。已知= 1;opspec (1) .Outputs。Y = 2000;opspec .Outputs(2)。已知= 1;opspec .Outputs(2)。Y = 3000;opspec (3) .Outputs。已知= 1;opspec (3) .Outputs。Y = 4000;
查看第三种情况的规格对象。
opspec (3)
ans = scdspeed型号的工作点规范。(时变分量在时间t=0时求值)---------- < 强x > < /强> < >强知道< /强> < >强稳态< /强> < >强Min < /强> <强> Max < /强> < >强dxMin < /强> < >强dxMax < /强> <强> __ < /强> <强> ___ < /强> <强劲 >___________ 强> <强> ___ < /强> <强> ___ < /强> <强> ___ < /强> <强> ___ < / >强(1)scdspeed /油门&歧管/进气歧管/ p0 = 0.543条0.543假真的负无穷到正无穷负无穷到正无穷(2)scdspeed /车辆动力学/ w = T / / J w0 = 209 rad / 209.48 / sfalse true -Inf Inf -Inf输入:---------- u 已知 Min Max _ _____ ____ ___ (1.) scdspeed/Throttle扰动0 false -Inf输出:---------- < 强> y < /强> < >强知道< /强> < >强Min < /强> <强> Max < /强> <强> ___ < /强> <强> ___ < /强> <强> ___ < /强> <强> ___ < / >强(1)scdspeed / rad / / s 4000 rpm真正负无穷到正无穷
搜索符合这些规格的操作点findop
函数。
opt = findopOptions(“DisplayReport”,“关闭”);Op = findop(mdl,opspec,opt);
查看第三种工况下产生的工作点。
op (3)
ans =型号scdspeed的工作点。(时变组件在时间t=0评估)状态:---------- x ______ (1.) scdspeed/节流阀和进气管/p0 = 0.543 bar 0.4731 (2.) scdspeed/车辆动力学/w = t //J w0 = 209 rad//s 418.88输入:---------- u ______ (1.) scdspeed/节流阀摄动5.8292
为了使模型线性化,首先在节流阀和火花推进模块的输出处指定线性化输入点。
Io (1) = linio(1)“scdspeed /油门(度)”, 1“输入”);Io (2) = linio(2)scdspeed /点火提前的, 1“输入”);
接下来,在rad/s到rpm块的输出处指定线性化输出点。
Io (3) = linio(3)'scdspeed/rad//s to rpm', 1“输出”);
对每个操作条件的模型进行线性化。
Sys = linearize(mdl,op,io);
绘制得到的线性模型的波德震级响应。
bodemag(系统)
关闭模型。
bdclose (mdl)