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: 
----------
      <strong>x</strong>       <strong>Known</strong>    <strong>SteadyState</strong>    <strong>Min</strong>     <strong>Max</strong>    <strong>dxMin</strong>    <strong>dxMax</strong>
    <strong>______</strong>    <strong>_____</strong>    <strong>___________</strong>    <strong>____</strong>    <strong>___</strong>    <strong>_____</strong>    <strong>_____</strong>

(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: 
----------
    <strong>u</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdspeed/Throttle  perturbation
    0    false    -Inf    Inf

Outputs: 
----------
     <strong>y</strong>      <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>____</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(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: 
----------
      <strong>x</strong>   
    <strong>______</strong>

(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
    0.4731
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
    418.88

Inputs: 
----------
      <strong>u</strong>   
    <strong>______</strong>

(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)

参考

| | |

関連するトピック