Main Content

Triggered Subsystem を使用したエンジン タイミングのモデル化

この例では、Triggered Subsystem を使用して 4 気筒火花点火内燃エンジンのスロットルからクランクシャフト出力までをモデル化する方法を示します。この例では、sldemo_engine モデルは [1] に基づいています。

sldemo_engine モデルは、Valve Timing および Combustion サブシステムで Triggered Subsystem ブロックを使用します。この例では、4 気筒すべてのタスクが、気筒ごとに 1 セットの 4 つのブロック セットではなく、1 つのブロック セットを使用して実装されています。

モデルを開きます。

open_system('sldemo_engine')

Top level of the engine model.

直列 4 気筒 4 ストローク エンジンでは、クランクシャフトが 180°回転すると、連続する各気筒の点火が分離されます。この分離は、各気筒が 1 クランク回転おきに点火することを意味します。このモデルでは、吸気、圧縮、燃焼、および排気の行程が同時に発生します (任意の時点で、1 つの気筒がそれぞれのフェーズにあります)。圧縮を考慮するために、各吸気充填量の燃焼は、吸気行程の最後から 180°のクランク回転分だけ遅延されます。

このモデルでは、Integrator ブロックは、Throttle and Manifold サブシステム内にある Intake Manifold ブロックで気筒の質量空気流量を蓄積します。Valve Timing サブシステムは、特定の回転位置に対応するパルスを生成してクランク角度、空燃質量を管理し、Compression サブシステムの実行をトリガーします。Compression サブシステムは Unit Delay ブロックを使用して、吸気と各空燃充填量の燃焼間に 180°(1 イベント期間) の遅延を挿入します。

1 つの気筒について完全な 4 行程サイクルを考えてみましょう。以下に各行程の機能について説明します。

  • 吸気行程 - この行程中に、インテーク マニホールドが開き、混合気を吸入します。ピストンが上死点 (TDC) から下死点 (BDC) まで移動し、クランク シャフトが 180°回転します。このモデルでは、Throttle and Manifold サブシステム内の Intake Manifold サブシステムがマニホールドからの質量流量を積分します。

  • 圧縮行程 - この行程では、インテーク マニホールドが閉じ、クランク シャフトの 180°回転によって空燃充填量が圧縮されます。ピストンが BDC から TDC まで移動します。圧縮により、混合気の温度が上昇し、燃焼プロセスが促進されます。

  • 燃焼行程 - スパーク プラグが混合気に点火します。気筒内の混合気の燃焼によって圧力が生じ、ピストンが TDC から BDC に移動します。この行程中にクランク シャフトが 180°回転し、トルクが発生します。

  • 排気行程 - 排気行程中、ピストンはクランク シャフトの 180°の回転によって BDC から TDC に移動します。ピストン ヘッドが TDC に達すると、エキゾースト マニホールドが開き、気筒から排気されます。このモデルでは、Throttle and Manifold サブシステム内の Integrator ブロックがリセットされ、この気筒の次の 4 行程 (720°) のサイクルに備えます。

Valve Timing

Valve Timing サブシステムは、バルブのタイミング (開閉) を制御し、点火をトリガーし、エンジンのクランク シャフトの角度位置に基づいてクランク シャフト角度をリセットします。Valve Timing サブシステムには、Reset Crank Angle on Rising EdgeReset Piston Air Mass on Falling Edge という 2 つの Triggered Subsystem ブロックが含まれています。

Reset Piston Air Mass on Falling Edge は、クランクシャフトが TDC から BDC に移動するときにトリガーされ、離散バルブ イベントを介して混合気をインテーク マニホールドから気筒に移動します。この移動プロセスは、吸気の流れ、トルクの発生および加速の連続時間プロセスと同時に発生します。

クランクシャフト角度が 180°を超えると Reset Crank Angle on Rising Edge がトリガーされ、角度が 0°にリセットされます。

Valve Timing subsystem controls valve timing and resets crank angle

Compression

Compression サブシステムは、圧縮行程中のエンジンのダイナミクスを表します。このサブシステムは、ブロックの Trigger 端子で正のトリガー値を受け取るとトリガーされます。Unit Delay ブロックで、積分器の状態をサンプリングします。この値、つまり蓄積された質量充填量は、燃焼中に使用するために Compression サブシステムの出力で利用できます。

Subsystem block that is triggered based on a positive ignition trigger

Throttle and Manifold

エンジンのスロットル本体は、Throttle and Manifold サブシステムによってモデル化されます。

Throttle and Manifold subystem models the throttle body of the engine

Throttle

Throttle サブシステムは、スロットル プレート角度 (θ)、マニホールド圧 (Pm)、および大気圧 (Pamb) を入力として使用します。インテーク マニホールドでの混合気吸入率 (m˙ai) は、次の 2 つの関数の積として表すことができます。

  • スロットル プレート角度の経験的関数

  • 気圧とマニホールド圧の関数

マニホールド圧が低い (真空度が高い) 場合、スロットル本体を通過する流速は音速であるため、スロットル角度の関数のみになります。このモデルでは、以下の圧縮性方程式で切り替え条件を使用して、こうした低圧挙動を考慮します。

方程式 1

m˙ai=f(θ)g(Pm)=mass flow rate into manifold (g/s)

f(θ)=2.821-0.05231θ+0.10299θ2-0.00063θ3

g(Pm)=1; if PmPamb/2

g(Pm)=2PambPmPamb-Pm2; if Pamb/2PmPamb

g(Pm)=-2PmPmPamb-Pamb2; if PambPm2Pamb

g(Pm)=-1; if Pm2Pamb

m˙aimass flow rate into manifold (g/s); 

θthrottle angle (deg);

Pmmanifold pressure (bar); 

Pambambient (atmospheric) pressure (bar);

上記の個々の方程式は、Fcn ブロックを使用して組み込まれます。Switch ブロックは、圧力比をその切り替えしきい値と比較することによって、流れが音速であるかどうかを判断します。音速域では、流速はスロットル位置のみの関数になります。流れの方向は、Sign ブロックで決定されているように、圧力の高い方から低い方へです。MinMax ブロックは圧力比が常に 1 以下になるようにします。

Throttle Subsystem

インテーク マニホールド

Throttle and Manifold サブシステムには、Intake Manifold サブシステムが含まれています。このサブシステムは、スロットル流量入力とエンジン速度 (N) を入力として使用します。インテーク マニホールドはマニホールド圧 (P˙m) の微分方程式としてモデル化されます。入ってくる質量流量と出ていく質量流量の差は、時間に対する空気質量の正味の変化率を表しています。理想気体の法則によると、この量は、マニホールド圧の時間導関数に比例しています。

ただし、[1] のモデルとは異なり、このモデルには排気再循環 (EGR) が組み込まれていません。

方程式 2

P˙m=RTVm(m˙ai-m˙ao)

Rspecific gas constant; 

Ttemperature (K); 

Vmmanifold volume (m3); 

m˙aomass flow rate of air out of the manifold (g/s); 

P˙mrate of change of manifold pressure (bar/s);

モデルがマニホールドから気筒に送り込む混合気の質量流量は、次の経験式で記述されます。この質量流量 (m˙ao) は、マニホールド圧 (P˙m) とエンジン速度 (N) の関数です。

方程式 3

m˙ao=-0.366+0.08979NPm-0.0337NPm2+0.0001N2Pm

Nengine angular speed (rad/s); 

Pmmanifold pressure (bar); 

気筒に送り込まれる合計混合気充填量を算出するために、シミュレーションでは、インテーク マニホールドからの質量流量を積分し、各吸気行程イベントの最後にこれをサンプリングします。このサンプリングにより、吸気行程後、圧縮前に各気筒内に存在する合計空気質量が算出されます。

Intake Manifold サブシステムは、方程式 2 で表されたスロットル ダイナミクスをモデル化するために使用されます。方程式 2 の微分方程式はインテーク マニホールド圧をモデル化します。Simulink Function ブロックは、気筒への質量流量、つまり、マニホールド圧とエンジン速度の関数を計算します (方程式 3)。

Intake Manifold Subsystem

燃焼

燃焼行程中にトルクが発生します。Combustion サブシステムは、方程式 4 で表された、4 つの変数を使用した燃焼プロセスおよびトルク発生をモデル化します。このモデルは Mux ブロックを使用してこれらの変数をベクトルにまとめ、方程式 Torqueeng を組み込んだ Fcn ブロックに入力を提供します。

方程式 4

N˙engine angular acceleration (rad/s2); 

mamass of air in cylinder for combustion (g); 

(AF)air to fuel ratio; 

σspark advance (degrees before top - dead - center); 

Torqueengtorque produced by the engine (Nm); 

Torqueeng=-181.3+379.36ma+21.91(AF)-0.85(AF)2+0.26σ-0.0028σ2+

+0.027N-0.000107N2+0.00048Nσ+2.55σma-0.05σ2ma

Combustion subsystem that models the combustion and torue generation process

Engine Dynamics

Engine Dynamics サブシステムは、負荷トルク Tload と発生トルク Teng を使用して、エンジン速度 (N) とクランク角度を計算します。Tload は、Drag Torque サブシステムでステップ関数を使用して計算されます。エンジン速度は方程式 JN˙=Torqueeng-Torqueload を使用して計算されます。ここで、J はエンジン回転慣性モーメント (kgm2) です。

Engine Dynamics subsystem computes crank angle and engine speed

モデルのシミュレーションと結果の可視化

関数 plot を使用してモデルのシミュレーションと結果の可視化を行います。

sim('sldemo_engine'); 

次の既定の入力値がシミュレーションで使用されます。

Throttle=8.97 (deg) if t<5

Throttle=11.93 (deg) if t5

Load=25 (Nm) if t2 or t8

Load=20 (Nm) if 2<t8

Simulink® は、シミュレートされたエンジン速度と、シミュレーションを駆動するスロットル コマンド、およびこれを妨げる負荷トルクを返します。

モデルはこのデータをベース ワークスペースの構造体 sldemo_engine_output に記録します。

PlotHandle = plot(sldemo_engine_output.get('LoadTorque').Values.Time, ...
               sldemo_engine_output.get('LoadTorque').Values.Data, 'g', ...
               sldemo_engine_output.get('ThrottleAngle').Values.Time, ...
               sldemo_engine_output.get('ThrottleAngle').Values.Data, 'b'  );
title('Open-Loop Simulation Inputs: Load Torque and Throttle Angle vs Time');
xlabel('Time (sec)'); ylabel('Engine Speed (rad/sec)');
set(gca,'Color','w','XGrid','On','XColor',[0 0 0],...
                    'YGrid','On','YColor',[0 0 0]);
axis([0 10 5 30]);
h= legend('Load Torque (Nm)','Throttle Angle (deg)','Location','northeast');
set(h,'TextColor','k','Color','none'); 

PlotHandle = plot(sldemo_engine_output.get('EngineSpeed').Values.Time, ...
                  sldemo_engine_output.get('EngineSpeed').Values.Data,'g'  );
title('Open-Loop Simulation Results: Engine Speed Control');
xlabel('Time (sec)'); ylabel('Engine Speed (rad/sec)');
set(gca,'Color','w','XGrid','On','XColor',[0 0 0],...
                    'YGrid','On','YColor',[0 0 0]);
axis([0 10 1500 3500]);
h = legend('Engine Speed (rpm)','Location','northeast');
set(h,'TextColor','k','Color','none');

参考

| | | | | |

関連するトピック

参照

[1] Crossley, P. R., and J. A. Cook. “A Nonlinear Engine Model for Drivetrain System Development.” International Conference on Control 1991. Control ’91 1991, pp. 921–25 vol.2. IEEE Xplore, DOI.org (Crossref), https://ieeexplore.ieee.org/abstract/document/98573.

[2] The Simulink Model. Developed by Ken Butts, Ford Motor Company. Modified by Paul Barnard, Ted Liefeld and Stan Quinn, MathWorks®, 1994 — 7."

[3] Moskwa, John J., and J. Karl Hedrick. “Automotive Engine Modeling for Real Time Control Application.” 1987 American Control Conference, 1987, pp. 341–46. IEEE Xplore, DOIː 10.23919/ACC.1987.4789343.

[4] Powell, B. K., and J. A. Cook. “Nonlinear Low Frequency Phenomenological Engine Modeling and Analysis.” 1987 American control conference, 1987, pp. 332–40. IEEE Xplore, DOIː 10.23919/ACC.1987.4789342.

[5] Weeks, Robert W., and John J. Moskwa. “Automotive Engine Modeling for Real-Time Control Using MATLAB/SIMULINK.” SAE transactions, vol. 104, 1995, pp. 295–309. JSTOR, https://www.jstor.org/stable/44473229.