ターボコンプレッサ・ターボチャージャーのマッチング
今回はターボ機械シリーズ②で紹介したガスタービンマッチングの続き、単段マッチングになります。ツール紹介の短編で、使い方の説明のみになります。
マッチングのやり方や原理については下記記事を読んでみてくださいね!
- 愛車のカスタムをしていてて社外タービンを載せたいけど、サイズが分からない
- MoTeCなどのフルコンをいじっててターボ化を検討中
- ターボマッチングの作業で具体的にどのような計算をしているのか知りたい
- 今回の記事のレーティング:
最近ターボチャージャーの案件が多くて、チューニングショップなどからお話を頂く機会も出てきました。
そこで簡単に市販ターボチャージャー選定をするためのツールを用意したので、紹介したいと思います。
おおお!このツールを使えばターボメーカーが公開しているコンプレッサとタービンマップから自分の作りたいエンジンに最適な組み合わせが簡単に見つけることができるぞ!
ツールの使い方
python環境が必要になります、ここでは使い方マニュアルのみの紹介です。詳細はgithubを参照お願いします。
ツールは下記にて共有しています。
https://github.com/Gertrud-Violett/TurboTools/tree/main/PowerMatching
ツールの機能とできること
生値でcsvで公開されてることは少ないから、図表から頑張って読み取るしかないんだぜ、、、大変だけど、マップが読めればもうこのツールはほとんど使いこなせるはずだ!
具体的には下記のような流れで計算を行っています。
- コンプレッサ要求をparams_n.tomlから読み取る:流量、圧力比
- コンプレッサマップcmap_1.csvから要求達成可能なコンプレッサ回転数 (=軸回転数 = タービン回転数) を決める
- params_n.tomlから初期空燃比AFRを読み取り、燃焼器に適用、タービン入り口温度を推定する。
- タービン入り口温度、流量、回転数から、タービン流量と膨張比を決める
- タービン動力から余剰動力を計算し、合計エンタルピーと比較する
- 動力余剰の場合、AFRモードでは空燃比を増やし、Bypassモードではタービンバイパス流量を増やす。
- 3~6をタービン動力が平衡するまで回帰計算する。
入力項目は4つあり、Inputフォルダの中に入っています。
- setup.ini: 計算全体の設定
- params_1.toml: n段目の空力諸元の設定ファイル。単段のため、1しか使いません。多段の場合、例えば2段目はparams_2.tomlという名前にします。
- cmap_1csv:1段目コンプレッサのマップ
- tmap_1.csv:1段目タービンのマップ
計算用のコードは2つです。
- StageCalc.py: 各段の入出力を計算します。コンプレッサ→(燃焼器)→タービンといった流れです。メインから自動的に呼び出されるサブルーチンのため、特にいじる必要はありません。
- SingleStage_Matching.py: 単段マッチング用メイン。こちらを動かします。
出力ファイルは計算モードにより2通りでます:
- Result_Bypass_hogehoge.toml: バイパス流量マッチングモードの結果。hogehogeの部分はsetup.iniで設定した名前になります。
- Result_AFR_hogehoge.toml: 空燃比マッチングモードの結果
入力ファイルの書き方
各設定ファイルの内容と書き方です。Inputフォルダに保存して使います。
setup.ini
[Settings]
Initial rpm: 計算に使う初期回転数。特に何の値でも構いませんが、cmapの範囲内に入っている必要があります。
Analysis Name: ケース名称。何でもOK
Input filename: paramsがデフォルト。入力tomlファイルの名称変更する場合
Matching Mode (Bypass or AFR):マッチングモードの選択です。Bypassモードでは、タービン動力で余ったエンタルピーは、ウェストゲートから廃棄される前提で計算します。出力結果として、バイパス流量が得られます。AFRモードでは空燃比を調整し、タービン動力必要分な燃料噴射量なります。出力結果としてAFRが得られます。
[Environment Variables]
humidity [0-1]: 湿度の設定。基本は0(乾燥空気)です。湿り空気の機能はまだ実装していません。
params_n.toml
1段目の設定ファイル。
[Compressor]:コンプレッサ関係の諸元
AmbientPressure: コンプレッサ入り口圧力。全圧で入力
AmbientTemperature:コンプレッサ入り口温度。全圧で入力
Weight: インペラ重量 (ここでは使用していないので何でも構いません。)
Inertia: インペラ回転方向慣性モーメント (ここでは使用していないので何でも構いません。)
gamma = 1.395 比熱比。変更不要。
Flow: 狙い流量、kg/s
PRC: 狙い圧力比 kg/s
BleedRatio: ブリード比。流量のうち燃焼器には送らない量 (1:100%バイパス、0:0%)
[Combustor]:燃焼器関係
CombustionTemp_T1t: 推定燃焼温度。ガス定数の計算等に使うため最初はざっくりで十分です。
CombustordeltaP: 燃焼器圧損。燃焼器の入り口と出口での圧力低下
AirFuelRatio:初期空燃比。AFRモードの場合は上書き、Bypassモードでは継承されます。
FuelLatentHeatLHV: 燃料の低位発熱量 MJ/kg
TempEfficiency:温度効率。実測燃焼温度がある場合、合わせ込みに使います。(理論温度1000℃に対して実測900℃の場合、温度効率は0.9になります)
[Turbine]: タービン関係
Weight: タービン重量
Inertia: タービン回転方向慣性モーメント
BackPressure: 想定排気圧力。排気ダクト等で圧損がある場合入力。マッチング計算上では排圧が余るため、差分は動圧に変換されるものとします。
BleedRatio:タービンブリード比。意図的に一部の排気をタービンからバイパスする場合に使用。
[Shaft]: 軸関係
Weight: 軸重量
Inertia: 軸慣性モーメント
MechLoss: 機械的損失。ベアリングフリクションなどで失われる軸動力の割合。
[Calculation]:計算オプション
Step: 回転数の刻み解像度。100と入れると100rpm刻みでマッチングされます。
PowRes: 計算が収束したと判断されるコンプレッサとタービンの動力差、kW。目安としてタービン動力の1%程度。
PRCRes: 計算が収束したと判断されるコンプレッサ圧力比。値が小さいほど計算に時間がかかります。
WtRes: 計算内部で使うステップ補正係数。デフォルトは0.1
cmap_1.csv
1段目コンプレッサマップです。
- NC*:修正回転数
- PRC:コンプレッサ圧力比
- WC*: 修正流量
- EtaC:コンプレッサ効率
tmap_1.csv
1段目タービンマップです。
- NT*:修正回転数
- PRT: タービン膨張比
- WT*: 修正流量
- EtaT:タービン効率
計算方法
python 3.10以上が必要です。また事前に必要ライブラリはすべてインストールしておいてください。
実行はメインを回すだけです。設定ファイルがおかしいとエラーが出て止まります。
>python SingleStage_Matching.py
また、マップの精度によっては、下記のようなエラーを吐くものの、計算は収束します。これはinterpolation (近似)の精度が不十分であるという警告で、計算結果が保証できません、というものになります。。。
ですがあくまで数学的な話なので、実測マップを入れた場合は実用上はほとんど問題とはなりません。出力結果があまりにもおかしな値の場合 (タービン効率が30%になった)などの場合、マップがおかしくなっていないか確認してみてください。
RuntimeWarning: No more knots can be added because the number of B-spline
coefficients already exceeds the number of data points m.
Probable causes: either s or m too small. (fp>s)
kx,ky=1,1 nx,ny=10,11 m=66 fp=0.008899 s=0.000000
warnings.warn(RuntimeWarning(_iermess2[ierm][0] + _mess))
入力諸元によっては計算が収束せず、永遠と動いてしまうことがあります。そのような時はparams_n.tomlのCalculationの部分の諸元をいじってみてください。
またコンプレッサ、タービンのサイズがあまりに違いすぎると永遠と流量が合わないため、現実的なサイズで試してみてください。
出力の見方
計算が回るとOutputフォルダに.toml形式のテキストファイルが生成されます。AFRモードでもBypassモードでも同じ項目が出力されますが、値が変わります。また、それぞれAFR、Bypassとファイル名が変わります。
[Compressor]
“Power[kW]” :コンプレッサ要求動力。
“Corrected Flow rate Wc*” :コンプレッサ修正流量
“Speed RPM”:マッチングの結果の軸回転数
“Outlet Pres[kPaA]” :コンプレッサ出口圧力:初期狙い値になっていない場合計算失敗です。
“Outlet Temp[degC]” :コンプレッサ出口温度。アルミインペラで200℃、チタンで400℃程度が上限の目安。
“Pres Ratio PRC” :コンプレッサ圧力比
“Comp Efficiency” :コンプレッサ断熱効率
“Air Flow[kg/s]” :コンプレッサ実流量
“Turbine Pressure Ratio P2c/P1t” :コンプレッサ出口とタービン入り口の圧力比
[Turbine]
“Enthalpy[kW]”:タービンが使える全エンタルピ。燃焼器から出てくるエンタルピ
“Turbine Power[kW]” :タービン消費動力。実際にタービンで使われる動力。機械的損失も含まれます。
“Speed RPM” :タービン回転数 = 軸回転数
“Inlet Pres.[kPa]” :タービン入り口圧力
“Inlet Temp[C]” :タービン入り口温度
“Outlet Pres[kPa]Tot” :タービン出口圧力。全圧
“Outlet Temp[degC]” :タービン出口温度。全温
“Pres Ratio PRT” :タービン圧力比
“Turb Efficiency” :タービン効率
“Total Flow[kg/s]” :タービン合計流量。バイパス含む合計流量
“Turbine Flow[kg/s]” : タービン流量
“Bypass Ratio” :タービンバイパス流量。ウェストゲートから排気される流量。AFRモードの場合はほぼ0に近く、Bypassモードでは動力達成のために自動的に必要流量が出力されます。
[“Shaft&Combustor”]
“Fuel Flow [kg/s]” :燃焼器の燃料流量
“Turbine Required Flow[kg/s]” :タービン必要流量
“Corrected Flow rate[kg/s]” :タービン修正流量
“Theoretical T1t[degC]” :燃焼器理論温度
“Mechanical Loss [kW]” :軸動力機械的損失。
AFR :実空燃比。AFRモードの場合はここが自動調整され、バイパスを最小化するように燃料流量が絞られます。
ぱっと見難しそうだったけど、実際に扱ってるのはエンジンの吸気や排気の流量や圧力か、、、!データロガーで調べられる値だな!
これで次のタービンキットの選定もできそうだぜ。。。
駆け足でしたが、ツールの使い方は以上です!ここでは自家用車のカスタムを想定した単段ターボチャージャー向けのものを紹介しましたが、StageCalc.pyのStageクラスを何回か叩いてあげれば多段コンプレッサやガスタービンでも使用可能です。
これらについては計算収束の手法も必要になってくるため、また別の機会に。。。!
本日も読んで下さってありがとうございます。お疲れ様でした。良きチューニングライフを!
2022/10/19
バッチ入力モード、csv入出力モードに対応しました!詳細はgithubを参照お願いします。