此示例显示如何线性化发动机速度模型。
打开模型。
SCDSPEED
该示例生成输出发动机速度的线性模型,以及在输入的火花前进和节流阀之间。Findop命令将在2000,3000和4000 RPM的稳态条件下计算操作点。
使用命令创建操作点规范对象
opspec = operspec('scdspeed')
模型SCDSPEED的操作点规范。(在时间t = 0评估的时变组分)状态:----------(1.)SCDSPEED /油门&歧管/进气歧管/ P0 = 0.543 BAR规范:DX = 0,初始猜测:0.543(2.)SCDSPEED /车辆动态/ W = T // J W0 = 209 RAD // S Spec:DX = 0,初始猜测:209输入:----------(1.)SCDSPEED/油门扰动初始猜测:0输出:无----------
接下来,指定所需的操作条件。将车辆动态的第一个输出端口固定为2000,3000和4000 RPM。使用命令addoutputspec来执行此操作。
opspec = addoutputspec(opspec,'scdspeed / rad / s到rpm',1);
设置第一个操作规范
opspec.output.known = 1;opspec.outputs.y = 2000;
搜索符合此规范的操作点
OP(1)=查找('scdspeed',opspec);
操作点搜索报告:------------------------------------操作点搜索模型SCDSPEED的报告。(在时间t = 0评估的时变组分)成功满足操作点规范。各国:---------(1.)SCDSPEED /油门和歧管/进气歧管/ P0 = 0.543 BAR X:0.544 DX:2.66E-13(0)(2.)SCDSPEED /车辆动态/w = T//J w0 = 209 rad//s x: 209 dx: -8.48e-12 (0) Inputs: ---------- (1.) scdspeed/Throttle perturbation u: 0.00382 [-Inf Inf] Outputs: ---------- (1.) scdspeed/rad//s to rpm y: 2e+03 (2e+03)
现在,搜索3000和4000 rpm的剩余工作点
opspec.outputs.y = 3000;OP(2)=查找('scdspeed',opspec);opspec.outputs.y = 4000;OP(3)=查找('scdspeed',opspec);
操作点搜索报告:------------------------------------操作点搜索模型SCDSPEED的报告。(在时间t = 0评估的时变组分)成功满足操作点规范。州:---------(1.)SCDSPEED /油门和歧管/进气歧管/ P0 = 0.543 BAR X:0.49 DX:-5.14E-15(0)(2.)SCDSPEED /车辆动态/w = T//J w0 = 209 rad//s x: 314 dx: 4.57e-13 (0) Inputs: ---------- (1.) scdspeed/Throttle perturbation u: 2.94 [-Inf Inf] Outputs: ---------- (1.) scdspeed/rad//s to rpm y: 3e+03 (3e+03) Operating point search report: --------------------------------- Operating point search report for the Model scdspeed. (Time-Varying Components Evaluated at time t=0) Operating point specifications were successfully met. States: ---------- (1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar x: 0.473 dx: 1.13e-11 (0) (2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s x: 419 dx: -1.49e-10 (0) Inputs: ---------- (1.) scdspeed/Throttle perturbation u: 5.83 [-Inf Inf] Outputs: ---------- (1.) scdspeed/rad//s to rpm y: 4e+03 (4e+03)
操作点现在准备用于线性化。首先使用命令指定输入和输出点:
IO(1)= Linio('SCDSPEED /油门(度)',1,'输入');IO(2)= Linio('SCDSPEED / SPARK ADVAIN',1,'输入');IO(3)= Linio('scdspeed / rad / s到rpm',1,'输出');
线性化模型,并对每个条件绘制Bode幅度响应。
sys =线性化('scdspeed',op,io);Bodemag(SYS)
关闭模型。
bdclose('scdspeed')