Main Content

エンジン速度モデルの線形化

この例では、エンジン速度モデルを複数の出力条件で線形化する方法を示します。

エンジン速度モデル

モデルを開きます。

mdl = 'scdspeed';
open_system(mdl)

この例では、点火進角とスロットル角の入力から、出力のエンジン速度までの線形モデルを求めます。これを 3 つの速度の条件で行います。2000 rpm、3000 rpm、および 4000 rpm です。

操作点の検出

3 つの操作点の仕様の配列を作成します。

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

この Simulink® モデルにはルートレベルの入力端子がないため、opspec に出力仕様は含まれません。関数 addoutputspec を使用して、モデル内の任意の信号の出力仕様を追加できます。

rad/s to rpm ブロックの出力に出力仕様を追加します。

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

それぞれの仕様で、出力値が既知であることを示し、出力値を指定します。既知の速度値を 2000 rpm、3000 rpm、および 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;

3 つ目の操作条件の仕様オブジェクトを表示します。

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 
_____ _____ _____ _____
                       
(1.) scdspeed/rad//s to rpm
4000  true  -Inf   Inf 

関数 findop を使用して、これらの仕様を満たす操作点を求めます。

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

3 つ目の操作条件に対する結果の操作点を表示します。

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)

参考

| | |

関連するトピック