主要内容

发动机转速模型线性化

此示例说明如何针对多种输出条件对发动机转速模型进行线性化。

发动机转速模型

打开模型。

mdl = 'scdspeed';
open_system(mdl)

对于此示例,您将从点火提前角和节气门开度输入到发动机转速输出求解线性模型。此操作针对以下三种转速条件进行:2000、3000 和 4000 rpm。

查找工作点

创建一个由三个工作点设定组成的数组。

opspec = operspec(mdl,[3 1]);

由于该 Simulink® 模型没有任何根级输入端口,因此 opspec 不包含任何输出设定。您可以使用 addoutputspec 函数为模型中的给定信号添加输出设定。

向 rad/s to rpm 模块的输出添加一个输出设定。

opspec = addoutputspec(opspec,'scdspeed/rad//s to rpm',1);

对于每个设定,指明输出值是已知的,并指定输出值。将已知的转速值设置为 2000、3000 和 4000 rpm。

opspec(1).Outputs.Known = 1;
opspec(1).Outputs.y = 2000;
opspec(2).Outputs.Known = 1;
opspec(2).Outputs.y = 3000;
opspec(3).Outputs.Known = 1;
opspec(3).Outputs.y = 4000;

查看针对第三种工况的设定对象。

opspec(3)
ans = 


 Operating point specification for the Model scdspeed.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
     x         Known    SteadyState     Min         Max        dxMin       dxMax   
___________ ___________ ___________ ___________ ___________ ___________ ___________
                                                                                   
(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
   0.543       false       true        -Inf         Inf        -Inf         Inf    
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
  209.48       false       true        -Inf         Inf        -Inf         Inf    

Inputs: 
----------
  u   Known  Min   Max 
_____ _____ _____ _____
                       
(1.) scdspeed/Throttle  perturbation
  0   false -Inf   Inf 

Outputs: 
----------
        y               Known              Min               Max             Period       PeriodicTolerance
_________________ _________________ _________________ _________________ _________________ _________________
                                                                                                           
(1.) scdspeed/rad//s to rpm
      4000              true              -Inf               Inf               -1              0.0001      

使用 findop 函数搜索符合这些设定的运行点。

opt = findopOptions('DisplayReport','off');
op = findop(mdl,opspec,opt);

查看针对第三种工况所得到的工作点。

op(3)
ans = 


 Operating point for the Model scdspeed.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
   x   
_______
       
(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
0.4731 
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
418.879

Inputs: 
----------
  u   
______
      
(1.) scdspeed/Throttle  perturbation
5.8292

模型线性化

要对模型进行线性化,请首先指定 throttle 模块和 Spark Advance 模块输出处的线性化输入点。

io(1) = linio('scdspeed/throttle (degrees)',1,'input');
io(2) = linio('scdspeed/Spark Advance',1,'input');

接下来,指定 rad/s to rpm 模块输出处的线性化输出点。

io(3) = linio('scdspeed/rad//s to rpm',1,'output');

针对每种工况对模型进行线性化。

sys = linearize(mdl,op,io);

绘制所得线性模型的波特幅值响应。

bodemag(sys)

关闭模型。

bdclose(mdl)

另请参阅

| | |

主题