今回はこれまでと大きく異なり、身近な自動車等に使われている、ピストン・シリンダ式エンジン(レシプロエンジン)のモデルを作ってみることにした。と言っても実は作成動機はこの記事のモデリングの際にP-51Dの発動機とレシプロエンジンに多少触れて興味が沸いたというものだったりするが。
ピストン・シリンダ式の発動機(レシプロエンジン)は、過去に扱ったガスタービンで各コンポーネントで各熱力学プロセスが発生し、多数のコンポーネントが繋ぎ合わさって熱サイクルが組み上げられていたのと異なり、ピストン&シリンダという実質1つのコンポーネントで総ての熱力学プロセスが過渡的に発生し、熱サイクルが組み上がる。そのため、ピストンとシリンダ内の挙動を真面目にモデリングしようとすると1つの複雑なモデルが必要でありハードルが高いし、間欠的な流体やシャフトの挙動の予想を必要としない性能予測やサイジングといった用途には過剰なモデルとなる。
そこで、第一歩として、熱サイクルによる動力発生を計算し、その結果を平均化してfluid portとmechanical frangeに反映させるコンポーネントを作成することとした。本記事ではその熱サイクル計算部分をモデル化する。
記事を通して言いたいこと(結論)
例によって、冒頭で述べておく。
- レシプロエンジン平均化モデルの内部パーツとなる、Ottoサイクルの計算を行うコンポーネントを作成した。そして定性的に妥当な挙動を示している。
モデル化対象(とその周辺について)
ガソリンエンジン(火花着火式ガソリン燃焼レシプロエンジン)
レシプロエンジンと一口に言っても、点火方式、燃料、ストロークの数などにより非常に多種多様なエンジンが存在する。本記事では、最も一般的な(筈)ガソリンを火花着火で燃焼させるエンジンを取り扱う。まだピストン・シリンダという実際のパーツはモデリングしないので関係無いが、4ストロークで動作するものが一般的だ。
ガソリンエンジンについての解説は Wikipediaの記事 や専門書籍に任せるが、簡単に仕組みを述べておく。
シリンダ内に取り込んだ作動流体(通常は空気と燃料の混合気)をピストンが圧縮する。スパークプラグが火花を放ち燃料を燃焼させる。高温・高圧の燃焼ガスがピストンを押し膨張する。そして膨張後の燃焼ガスを排気してシリンダ内に新たな混合気を取り込む。この繰り返しが行われる。圧縮ではピストンが混合気に仕事をすることになるが、それには膨張時に取り出した仕事の一部が使われる。つまり、膨張時に取り出せた仕事から圧縮に供する仕事を差し引いたものがエンジンから出力される自由に使える仕事となる。各行程の動作条件(ex. 等容なのか等圧なのか)や、複数の行程が同時に行われたりといった差異があれど、基本的に総ての内燃レシプロエンジンはこれらを繰り返して回転機械仕事を生み出す。
そして、ガソリンレシプロエンジンの熱力学サイクル、流体を介して燃料のエネルギを仕事に変換する仕組み、は次項で述べる「オットーサイクル」と呼ばれるものとなる。
自動車用ガソリンエンジンの設計
[Kindle版] Engineering Fundamentals of the Internal Combustion Engine: Pearson New International Edition (English Edition)
4気筒インラインガソリンエンジンモデル構築キット、フルメタル組み立てミニエンジンモデル教育金型玩具キット (4気筒)
オットーサイクル
前述した通り、ガソリンレシプロエンジンの熱力学サイクルはオットーサイクルと呼ばれるものとなる(正確には、近似であり流体の状態変化は完全にオットーサイクルと一致する訳ではない)。詳細は Wikipedia: オットーサイクルや熱力学の専門書籍に任せるが、このサイクルは、断熱圧縮・等容加熱・断熱膨張・等容排熱の4プロセスから成る。
断熱圧縮。流体には仕事が成されるだけであり、熱の出入りは無い圧縮。ピストンの上昇。実際にはシリンダ壁を通して熱は逃げるが無視する。
等容加熱。着火から燃焼終了まで、シリンダ内容積は一定。実際にはシリンダは絶え間なく動いているが、シリンダが下がる速度に対して燃焼が拡がり進行する方が格段に早い(内部で爆発が起きているイメージ)ため、容積が変わらないとみなす。
断熱膨張。流体から仕事が取り出されるのみで、熱の出入りが無い膨張。ピストンの下降。シリンダ壁からの熱逃げなどは無視する。
等容排熱。シリンダ内容積一定で、膨張終了後残った熱を系(シリンダ内空間)から排出する。実際には膨張後、ピストンが1往復(ストロークx2)して膨張後ガスの押し出しと新しい混合気の吸引を行うが、容積が一定のまま、膨張後終了状態から熱を捨てて圧縮前状態に戻るとみなす。
ここで、上図のp-V線図もしくはT-S線図のサイクルが成す閉領域の面積がサイクルから取り出される仕事となる。もしくは、文献等で見ることが無いが、U(内部エネルギ)-S(エントロピ)線図を書けば、膨張プロセスと圧縮プロセスの落差の差もサイクルから取り出される仕事となる。
「1」の流体状態をインプットして、この1巡の状態変化と取り出される仕事を計算するコンポーネントが今回の作成目標だ。
シミュレーションモデル
- 圧縮・膨張プロセスは等エントロピー。シリンダが動くことで生じる摩擦等の損失は無視する。
- 燃焼効率は1で固定。投入された燃料の持つ熱量は総て作動流体の内部エネルギ上昇に変換される。よって、燃料過多時の燃え残りや、燃焼過少時の吹き消えは一切考慮しない。
- 燃焼前の温度が高過ぎると発生する、自己着火によるノッキングは再現しない。
- サイクルを通して作動流体の成分は一切変化しない。点火前後で、作動流体が燃料混合空気から空気と燃焼生成物質の混合ガスへと変化するが、これは再現しない。
- モデルのフルパス: PropulsionSystem.Examples.ThermodynamicCycles.OttoCycleIdeal00_ex01
- githubのライブラリページリンク
Diagramとコンポーネントの構造
作成モデルのdiagramは下図の通り。平均化ピストン・シリンダコンポーネントの内部で計算部品として使うことを想定しており、物理的なconnectorは皆無。inputとoutputも定まっているので、blockクラスとして作成。
ピストンのdisplacementや圧縮比といった、シミュレーション中は値が固定されるinputは本来ならparameterとすれば良いが、今回は純粋にinputを受け取ってoutputを出すblockとして作るので、すべてreal input connectorを介して与える造りとしている。
シミュレーション中に値が換わりうるinput variablesとして、圧縮前状態「1」の流体状態量と燃料混合比を受け取る。後々ピストン・シリンダを作成する時に使うであろうvariablesとして、output connectorを介して膨張後状態「4」の流体状態量と1サイクルで取り出された仕事が出力される。加えて、燃料消費量や最高到達温度など、参照したり何かに使われそうなvariablesもoutput conncector経由で出力しておく。
前提/仮定
オットーサイクルをコンポーネント化するにあたり、シンプルに済ませるために以下の前提を置いている。
モデル情報
シミュレーション実行
それでは計算を実行してざっと挙動を観ていこう。
- 作動流体状態「1」の圧力(=吸気圧力)
- 作動流体状態「1」の圧力(=吸気温度)
- 燃料濃度
- サイクルからの取出し仕事
- 各状態における作動流体の圧力
- 各状態における作動流体の温度
- 膨張仕事>投入熱量 の判別フラグ
- 熱効率
- 比エンタルピ vs. 比エントロピ
- 比内部エネルギ vs. 比エントロピ
- 温度 vs. 比エントロピ
- 圧力 vs. 比体積
Input
まずはInputの値・動きが意図通りか、inpurtが反映されるvariablesを確認。
ランプ状に上昇させる。エンジンに馴染みが有れば予想出来る通り、吸気圧上昇による仕事増加(エンジン出力上昇)を確認する。
ランプ状に上昇させる。こちらもエンジンに馴染みが有れば当然かもしれないが、吸気温度が高いと取り出せる仕事が減少(エンジン出力低下)するのを確認する。
ランプ状に減じる(0に近い極めて希薄なところまで)。燃焼後と膨張後(排気)の温度が低下し、取り出される仕事が減少(エンジン出力低下)することを確認する。
Output Variables
主要なoutputの挙動を確認してゆく。ただ、考察はモデルの動きが妥当なものかを確かめる程度で済まし、サイクルの挙動そのものや、その挙動から何が導き言えるかといった詳しい熱力学的考察は省略する。そう言った記事はパラスタを交えて別途立てたいと考えている。
予想通りの挙動。吸気圧上昇に合わせて増加、吸気温度上昇に合わせて減少、さらに混合気希薄化に伴って減少してほぼ0へと向かっている。
挙動自体は予想通りだが、状態「2」「3」の圧力上昇の度合いと、吸気温度上昇時の「2」の圧力がほぼ変わらないのに「3」の圧力が激減することは興味深い。これを見るだけでも、過給機を搭載して吸気圧を上昇させたくなる気持ちが解る(特に航空用ガソリンレシプロエンジンは、燃費云々ではなく、エンジンを大きくせずに出力を得たいので過給機搭載が多い)。なお、状態「1」の圧力が上昇していないように見えるが、これはplotのスケーリングのため。fluidState_1.pのみをplotすれば上昇しているのが見える。
これも予想通りの挙動。興味深いのは膨張後「4」の温度が圧縮後よりも高いという点。”排気が熱い”のは当然なのだが、ピスで押し込んで仕事を与えた後の状態よりも温度が高いというのは驚きだ。専門書等の例題などに付いている模式図ではない、実際のサイクルから作成されたリアルなT-s線図を意識して観ていれば計算などせずとも気付けた筈ではあるが。。。燃焼で与えた熱量のうち、かなり多くが仕事ではなく排熱として捨てられてしまうことを示しており、勿体無いと感じる所だ。
計算機能とは直接関係無いが、膨張(「3」→「4」)で得られる仕事が、加熱(「2」→「3」)で投入した熱量を上回っているかどうかを判別して知らせるフラグを設けておいた。
投入した熱量より多くの仕事が得られるのは物理的の有り得ないと考えられるかも知れないが、そうではない。この判別に使われているのはサイクルからの取出し仕事ではなく、膨張で取り出される仕事だ。圧縮で作動流体には仕事が与えられ、そこに燃焼による熱量が足される。そして、膨張で取り出される仕事はその総和よりは小さい。特別何かが発生する境目ではない筈で、飽くまで作者が興味でモニターするために設けたものだ。ちなみに、このフラグが立つのと前項の温度「2」「4」の上下関係が入れ替わるのは同じタイミングとなっている。(厳密には内部エネルギの「2」「4」の上下関係が入れ替わるタイミングと一致する。)
サイクルからの取出し仕事と、燃料による熱量投入量の比を熱効率と定義している。
吸気圧を上げても熱効率は変わらない点、混合気を希薄にすると熱効率が上昇する点が興味深い。今回は考察を省略するが、ピストン・シリンダコンポーネントを作成してエンジンシステムのシミュレーションが可能になった折には挙動を様々に変えて背後で何が起きているのかを考察しよう。
下記は参考までに、時刻5 [s] でのh-s, p-v, T-s, u-s線図を描画してみたものとなる。これらを観ても作成したオットーサイクルコンポーネントは妥当に動いていそうだ。
なお、等圧線(h-s, T-s, u-s線図)と等エントロピ線(p-v線図)は、本コンポーネントにこれらを描くための配列をvariableとして生成する機能を設けてあり、その結果を抽出してplotした。決して、”それらしい線”を別途手作業で付け加えた訳ではない。(*ただし、OpenModelicaには下図を直接描く機能はなく、結果csvファイルから自前でplotを作る必要は有る。)
これらをざっと観ると、燃焼時に圧力が上昇してくれるのは、出来るだけ多くエネルギを取り出すという観点から「得」であり、逆に排熱時に圧力が下がる(膨張後の圧力が外気より高い)のは「損」であると感じられる。
後書き・まとめ
冒頭で述べたことの繰り返しとなるが、
- レシプロエンジン平均化モデルの内部パーツとなる、Ottoサイクルの計算を行うコンポーネントを作成した。そして定性的に妥当な挙動を示している。
- また、挙動確認のためのinput振りを行い、結果をざっとみるだけで、サイクルについて言える事が幾つも出てきた。今後パラスタを行って、結果の変化を詳しく考察する記事を建てたいところだ。
コメント