Loading [MathJax]/jax/output/HTML-CSS/jax.js

2017年4月14日金曜日

4ストロークエンジンの物理モデル

4ストロークのガソリンエンジンの物理モデリングをしてみました.
シミュレーションはMATLAB/Simulink,可視化ツールはProcessingです.

参考元はこのあたり.
双方ともに高知工科大学の磯村先生の文献です.

4 サイクルガソリンエンジンの動特性について

並列計算機によるエンジンのシミュレータ開発


以前にも倒立振子とかパーティクルフィルタでのグリッドマップマッチングとか2リンク平面マニピュレータとかのモデリングをやってきたのですが,そのどれとも色が違うなあ,ということで.

例によって,ラグランジュ法で運動方程式を立てます.
このあたりは参考文献の上の方が詳しいかな.


Engine

幾何学的関係

定義から,
sinϕ=rLsinθ
cos2ϕ=1sin2θ
代入して,
cos2ϕ=1(rL)2sin2θ
cosϕ=1(rL)2sin2θ


最初の式をtで微分して,
˙ϕcosϕ=rL˙θcosθ

˙ϕ=rLcosθcosϕ˙θ

˙ϕ=rLcosθ1(rL)2sin2θ˙θ

cosϕに関する式を代入すると,以下の関係が得られます.

˙ϕ2=(rL)2cos2θ1(rL)2sin2θ˙θ2


定義より,

x=(L+r)(Lcosϕ+rcosθ)

tで微分すると,

˙x=L˙ϕsinϕ+r˙θsinθ

˙ϕsinϕを代入して,

˙x=LrLcosθ1(rL)2sin2θrL˙θsinθ+r˙θsinθ

˙x=r˙θsinθ[1+rLcosθ1(rL)2sin2θ]

˙x2=r2˙θ2sin2θ[1+rLcosθ1(rL)2sin2θ]2


運動エネルギ

クランク軸の運動エネルギ
Tcr=12Icr˙θ2
ただし,Icrはクランク軸の慣性モーメントで,クランク軸は並進運動をしないため,回転運動の運動エネルギのみとなります.


ピストンの運動エネルギ
Tp=12Mp˙x2
ただし,Mpはピストンの質量で,ピストンは回転運動をしないため,並進運動のみの運動エネルギとなります.


コネクションロッドの運動エネルギ
Tcn=12(Icn˙ϕ2+Mcn˙x2)
ただし,IcnMcnはそれぞれコネクションロッドの慣性モーメントおよび質量です.


全運動エネルギ
T=Tcr+Tp+Tcn

T=12Icr˙θ2+12Mp˙x2+12(Icn˙ϕ2+Mcn˙x2)

T=12[Icr˙θ2+Icn˙ϕ2+(Mp+Mcn)˙x2]

˙ϕ2˙x2を代入すると,

T=12[Icr˙θ2+Icn(rL)2cos2θ1(rL)2sin2θ˙θ2+(Mp+Mcn)r2˙θ2sin2θ(1+rLcosθ1(rL)2sin2θ)2]

˙θでまとめると,以下の関係が得られます.

T=12[Icr+Icn(rL)2cos2θ1(rL)2sin2θ+(Mp+Mcn)r2sin2θ(1+rLcosθ1(rL)2sin2θ)2]˙θ2


ここで,

f(θ)=Icr+Icn(rL)2cos2θ1(rL)2sin2θ+(Mp+Mcn)r2sin2θ(1+rLcosθ1(rL)2sin2θ)2

とおくと,全運動エネルギTは以下に書き換えることができます.

T=12f(θ)˙θ2


ラグランジュ法

ラグランジアン

L=TU

ただし,位置エネルギUは無視できるため実際は,

L=T

となります.
ラグランジュ法では系全体の運動方程式は,

ddtL˙θLθ=Q

から求めることができます.


左辺第1項
L˙θ=f(θ)˙θ

ddtL˙θ=df(θ)dt˙θ+f(θ)¨θ


左辺第2項
Lθ=12f(θ)θ˙θ

ここで注意したいのですが,MATLAB/SimulinkではTime-domainでシミュレーションを実行するため,θでの微分項は少し使いづらいです.
(前サンプリング時刻のθと現在のサンプリング時刻のθの差で除算する必要があり,クランク角速度ゼロの状態ではゼロ割になってしまう)
このため,˙θdθ/dtとして,少し変形しています.

Lθ=12df(θ)dt

これで左辺は求まりました.


右辺
右辺は,爆発により生じるトルク(外力)です.
クランク軸に作用するトルクQは,幾何学的関係から以下となります.

Q=PAprsinθ

ただし,Pはシリンダ内圧力,Apはピストンの断面積です.

文献ではもう少し複雑な式になっていますが,上の式で合っているような気がします.

これで運動方程式は求まりました.


燃焼系

燃焼系はまともにモデリングするのは骨が折れるので,簡単化します.
具体的には,吸気,圧縮,膨張,排気にそれぞれの行程で以下の仮定を置いています.

  • 吸気
    シリンダ内圧力は大気圧(1気圧)で一定.
    管内摩擦も無視し,吸気行程が始まった瞬間からエンジンの慣性力に任せるままの運動となる.

  • 圧縮
    シリンダ内圧力は断熱圧縮
    気体の状態方程式により圧力が決まる.
    圧縮開始時の圧力は大気圧とする.(つまり吸気,排気によってシリンダ内部の圧力が初期状態に戻る)

  • 膨張
    シリンダ内圧力は断熱膨張
    圧縮行程の逆の動きをする.
    膨張開始時の圧力は定数とする.
    圧縮から膨張への切り替わり時(爆発時)には等積加熱の動作を行う.(微小時間で圧力が最大値まで上昇する)

  • 排気
    シリンダ内圧力は大気圧で一定.
    管内摩擦も無視する.
    エンジンの慣性力のみで動作する.

これらの仮定を基に,行程をモデル化しています.
クランク軸が2回転でサイクルのため,クランク軸角度π(rad)ごとに区分しています.


吸気 (0θ<π)

P=PAir

ただし,PAirは大気圧です.


圧縮 (πθ<2π)

P=PAir(VbdcApx+Vclr)κ

x=(L+r)(Lcosϕ+rcosθ)

x=(L+r)(L2r2sin2θ+rcosθ)

ただし,Vbdcは下死点でのシリンダ容積,Vclrは上死点での隙間容積,κは比熱比です.


膨張 (2πθ<3π)

P=PExp(VclrApx+Vclr)κ
x=(L+r)(L2r2sin2θ+rcosθ)

ただし,PExpは爆発時の圧力です.


排気 (3πθ<4π)

P=PAir


これで全ての式が導出できました.
これらをSimulinkで表現すると,次のような感じです.

全体
Overview


f(θ)の中身
f(theta)


シリンダ内圧力
Cylinder Pressure


圧縮行程
Compression


膨張行程
Expansion


θからxへの変換
Angle2Position

このモデルでシミュレーションした結果が,冒頭の動画です.
リンクによって拘束される系のダイナミクスは解いたことがなかったのでなかなか面白かったように思います.

通常だと下死点から始まるため,初期位置を爆発直後の位置にずらしています.
スタータとかを考慮する場合には燃焼部分を少しいじる感じでしょうか.

0 件のコメント:

コメントを投稿