【Lambda Control】 ラムダ クローズドループ制御

アイドリングでの燃調はメインマップを基にセカンドマップの他、流入空気温度補正、ISCVアクチュエーター開度補正で「14.7」に合わせ込んでいます。

しかしながら、どうやってもつじつまが合わない状況もあり、なかなか純正っぽく動かせていません。

そこで、ワイドバンドラムダセンサー入力を使い、クローズドループ制御で対応してみる事にしました。

※ちなみにこの制御は、アイドリング時のインジェクターパルス幅が「1.5 msec」以下では正常に機能しないとフォーラムに書かれていましたので、まずはそこから確認するのが良いと思われます。


【Lambda Control】 / 【Setup】

 

・Function
使用するセンサーを指定します。

・Rich Trim Limit
増量補正上限値。

・Lean Trim Limit
減量補正上限値。

・Long Term Filter
ラムダマップ全体に反映させる補正値。今回不使用です。

・Active Engine Temp
クローズドループ開始水温を設定。

・Diag Engine Temp
設定温度以下ではセンサー故障を除外。

・Sensor Selection
センサー数と使用センサーを指定。

・Recovery Delay
クローズドループがオフになり(オフの状況は後述)、復帰条件になってからオンになるまでの時間。

・Warm-up Delay
センサーウォームアップ中、ラムダコントロールをロックする時間。


【Lambda Control】 / 【Rate】


ココの設定値は、センサーの反応速度が大きく関係します。

ワタシの場合は触媒直前にセンサーがついていますので、エキマニからそこそこ離れています。
だからでしょうか、Fuel Overall Trim で増量(20%)した瞬間から安定するA/Fになるまでの時間を測ると、3秒近くかかっている事がわかりました。(アイドリング時)

Lambda Rate の上限値は「2.0sec」 なので微妙なところですが、なんとかこの数値でイケそうです。 


【Lambda Control】 / 【lambda Step】


更新周期における補正率。(%Trim)

デフォルトの80では増減の補正量が大きいからか、ラムダ=1を中心に濃い→薄い→濃い...とハンチングを起こします。

また数値を絞り過ぎると、ラムダマップの数値に補正される時間がかかるようになるので、5~20辺りで調整する必要がありました。

RateとStepをセットでチューニングしないと、上手くいかない印象です。


【参考】ラムダクローズドループOFF条件
・ラムダテーブルの値が「0」。
・ラムダセンサーウォームアップ中。
・インジェクタのパルス幅が1.5msec以下。
・加速増量補正中。
・レブリミッター作動中。
・トラクションコントロール作動中。
・ギアチェンジイグニッションカット作動中。
・オーバーランフューエルカット作動中。

 

【Diagnostics Errors】 ダイアグノシスのエラーログ

特に異常が無いのにエラーがちょくちょく出るので、センサーのエラー出力設定値を見極めるため、ログを確認してみました。

すると、出力される数値の意味が理解できず、Helpを見てもさっぱり(笑)

答えはmotecのフォーラムにありましたので、その辺りをまとめてみました。

 

ログ出力
Error Group 7 = 64


Error Group 7 = 192

 

出力された数値は、そのグループ(8項目)で出ているエラーを全部まとめて表示していますので、ナニが出ているかを下記の表に合わせて確認する必要があります。

1チャンネルには「1」、8チャンネルには「128」が割り当てられていますので、ログの数値と見比べてみると、

ログ前半は Error Group 7 「64」 で 「Lambda Sensor 1 Fault」
ログ後半は Error Group 7 「192」(64+128=192) で 「Lambda Sensor 1 Fault」+「Lambda Sensor 2 Fault」

が出ている事がわかります。


出力値と各チャンネルに割り当てられた数値の組み合わせで、どんなエラーが出ているかを判断する感じですね。

今回はラムダセンサーのエラー設定値がギリギリで出ているようなので、そこを変更して様子見ます。

 

 

【Accel Enrichment】 加速増量補正

【 Fuel Accel Sensitivity 】
テーブル数値は、 Accel Source の変化率に対し、増量補正する度合いを設定します。
(X軸:回転数 Y軸:Efficiency Point) 

数値を大きくすると、アクセルの踏み込み量が少なくても大きな補正値が適用され、加速増量のための燃料が多くなります。 
(変化が小さくても感知する→敏感) 

数値を小さくすると アクセルの踏み込み量に対しての補正値が小さくなり、加速増量が入りにくくなります。
(変化が大きくないと感知しない→鈍感) 


以下、ECU manager のヘルプより。
デフォルトテーブル値 ↓
        RPM 0 1000 2000 3000 4000 5000
Eff% 100 | 0   0    0    0    0    0
           80 | 0   0    0    0    0    0
           60 | 0   0    0    0    0    0
           40 | 5   4    3    2    1    0
           20 |10   8   6    4    2    0
             0 |15  12  9    6    3    0

 

【 Fuel Accel Clamp 】
テーブル数値は、加速増量される燃料量で、IJPU%です。

IJPUが「15」msecの場合、ここの値が「50」なら、15×50%で7.5msecとなります。
加速増量の補正値(量)は  Fuel Accel Sensitivity で設定されていますが、エンジンの回転数に応じて補正量の上限を決める値が Fuel Accel Clamp になるので、制限=Clampという表現になっているようです。


以下はECU manager のヘルプより。

Accel Clamp 調整のヒント 】
注意:加速燃料補給を調整する前に、燃料メインテーブルを完全に調整する必要があります。

この表の値を設定するには、最初に「Accel Sensitivity」を「50」の標準値に設定し、「Accel Decay」を標準値の「5」に設定します。

目的のRPMサイトを選択し、サイトに合わせてエンジンRPMを調整します。

スロットルを操作しエンジンレスポンスをチェックします。 

Accel Clampを調整し、テストを繰り返してください。また、異なる "Accel Decay"値も試してみてください。

スロットルを軽く動かしてエンジンの反応を確認し、「Accel Sensitivity」も調整します。

加速燃料補給は、通常は4000RPM以上は必要ありません。

デフォルトテーブル値 ↓
RPM  0 1000 2000 3000 4000 5000
     40  30    20    10     0     0

 

【Idle Control】 ISCVの設定と調整

ISCVの設定は、事前にこの係数を入れておけばOKというものではなく、アイドリング状態でのA/Fや点火時期がセッティングできていないと進めることが出来ません。

それができている前提でセットアップしてください。


初期設定(エンジン始動前)

【Auxiliary Output Functions / Auxiliary Out* – Idle Control / Parameters】

・Frequency
駆動周波数
* 250~400くらい
iscv_freq_thumb

・Polarity
duty 0% 時の極性 
* 0:Output Hi for 0% duty
 1:Output Lo for 0% duty

・Output Mode
motecがコントロールする極性
* 0:Low Side (swich to Ground)
  1:Hi Side (swich to Battery+)


【Idle Control】 /
【Setup】

・Proportional Gain
比例制御の設定値。
(Duty Cycle Control : % per 10RPM error)
*0.2

・Integral Gain
積分制御設定値。
ざっくりいうと、目標(基準)位置を維持する為の制御。
(Duty Cycle Control : 1%/sec per 10RPM error)
*0.1

・Derivative Gain
微分制御設定値。
応答が遅い制御では、PIにたいしてそれほど影響しないものなんだとか。
数値は入れておきます。
(Duty Cycle Control : 1% per 10RPM sec error)
*0.01

・dead-band
目標回転数を基準とした不感帯。
この範囲内は目標値から外れていないと認識します。
*10

・Active TP
PID制御「ON」となるスロットル開度。
*0.5

・Active Ground Speed
PID制御「ON」となる車速。
*10

・Active RPM
PID制御「ON」となる回転数。
設定値以下でアクティブとなります。
*1400

・RPM Filter
回転数のフィルター。脈動等考慮して設定します。
*5

・Air Con lncrease
エアコン負荷「ON」で増加させるDuty(%)。
*0

・Power Steering lincrease
パワステ負荷「ON」で増加させるDuty(%)。
*0

img_20140104T141917531


【Aim RPM】
目標回転数。
水温とユーザーチャンネル1の2Dマップで設定できます。
*860r.p.m. at 80℃

【Min Output】
アクチュエーター最小Duty。
*25

【Max Output】
アクチュエーター最大Duty。
*100
iscv_min_max_out2_thumb


【Min Integration Limit】
積分制御制限(最小・マイナス側)値。
Normal Position を基準とし、マイナス側の積分制御制限をどの程度にするかDutyで指定。
Normal Position と AimRPM のマッチングが取れていれば、それほど大きい数値にならないと思います。
*-10

【Max Integration Limit】
積分制御制限(最大・プラス側)値。
Normal Position を基準とし、プラス側の積分制御制限をどの程度にするかDutyで指定。
Normal Position と AimRPM のマッチングが取れていれば、それほど大きい数値にならないと思います。
*10

【Initial Position】
PID非制御時のアクチュエーターDuty。
横軸任意の水温で設定できます。
*34

【Normal Position】
PID制御時の基準位置。(アクチュエーターDuty)
水温とユーザーチャンネル1の2Dマップで設定できます。
目標回転数におけるアクチュエーターポジション値を設定。
*32


NA8C・ISCV設定手順

1.上記初期設定値(*)を入力の上、アイドリング状態で水温を80℃程にする。(水温等の増量補正が無い状態にする)


2.Proportional Gain=「0」、Integral Gain=「0」、Derivative Gain=「0」
こうする事でアクチュエーターポジションのPID制御がロックされますから、回転数にも変化があるかと。
Normal Position=Idle Actuator Pos である事と、Normal Positionの数値を上げると回転数が同期して上がる事を確認しておいてください。


3.Idle Normal Position値を調整し、Idle Aim RPM =「860r.p.m」で安定する値を探ります。
GEN号は、Idle Normal Position=「32.5」にすれば、「860r.p.m.」±10でアイドリングしていました。

水温でこの値は変わる可能性があるので、その辺りを見越した値(どちらかというと大きい方向だと思われます)に設定。


4.Idle Initial Position値は、設定したIdle Normal Position より大い値を入れておきます。


5.Idle Min Output値は、冷間補正時にAimRPMになる事を制限しない値にする必要があります。


6.アクセルON→OFFを繰り返し、Idle Actuator Pos の動きをチェック。


ワタシの場合、以下のようなやり方でセッティングしました。

「0」を頂点に±40くらいの目盛りをふったIdle Aim Error(目標回転数からのズレで、AimRPM=860r.p.m.で、860r.p.m.なら「0」を指します) のダイヤルゲージを表示。

アクセルをあおり、針が振れてから「0」点に収まる様子をよく見て適正値を探ります。
P・I値共、小さい値から大きくする方がわかりやすいです。
iscv_pid2
 

ログをチェックして、 こんな感じになっていたらOK。
1125_3

 


<参考>
以下はISCVをTest Outputで駆動した様子です。 

・駆動条件 
周波数 : 250Hz 
Duty : 20~80 

DutyはISC内のプランジャーが動き出すところを探り、「23」からスタート。 
徐々にDutyを上げていくと、「66」あたりで大きな共振音が発生し、プランジャーの動きが途端に悪くなります。 
そのまま数値を大きくすると次第に共振音が収まり、「80」でビシッと動きが止まります。 
Duty下げ方向も共振音発生は「66」で、60から23までは作動音も安定してプランジャーもスムーズに動きます。 

 

次はNBのISCV。 

・駆動条件 
周波数 : 270Hz 
Duty : 20~80 

 

アップ版 

【Gound Speed】 スピードセンサー

motecにスピードセンサーのパルス入力をしてやれば、ギアレシオの入力でギア表示ができたり、Giar Compという項目で燃料と点火時期を補正する事も可能なので、センサー取り付けを考えてみました。

NA8Cはミッションにスピードメーター用のケーブルが刺さり、車内のコンビネーションメーターにつながっています。 

そこからECUに車速パルスを送っているので、単純にそれをmotecに接続するつもりでした。

しかし、使っているセンサーが「リードスイッチ」というタイプになり、動作時のノイズがひどく、デジタル信号として使うことが難しい感じ。

NB1のアンチロックブレーキ用センサー流用も考えましたが、ナックル&ハブ交換の手間を考えると結構難しいので、設置も含めてお手軽にデジタル信号が出せるセンサーを探しました。

で、見つけたのが永井電子のスピードセンサー(No.6680)。 
割り込ますタイプでは「高いほう」と称される(笑)センサーです。

これはロードスターのクラセンと同じ「ホールセンサー」を使っていて、きれいなデジタル信号をシャフト1回転で8パルス出してくれます。

また、ミッションのスピードメーターケーブルに割り込ますので、リアタイアを浮かせば実走しなくてもセンサーの動作確認が出来、トータルで考えてもNBセンサー流用よりメリットが大きいかと。(高いけどw)

 

img_20140427T221621625


結線は電源とアース、信号出力線の3本です。
信号線入力を分岐し、2つのチャンネルに入力。 
【B10】DIG3 : Left Gound Speed 
【B11】DIG4 : Right Gound Speed 

センサー設定は下記の通り。  
img_20140427T221623515

Digital Input Functions は Dig In 3、Dig In4 とも同じ設定です。 

Calibration の設定数値についてですが、これはスピードセンサーには、1kmで637回転という規格があるようで、この数値を元に設定します。
ちなみに時速60km/hでシャフトは637r.p.m.で回転する事になりますね。 

で、calibration の入力値はどうなるかというと、0.1km(100m)走った時に入って来るパルス数を入力しますので、 
637/10×8(パルス)=509 
となるわけです。 

img_20140427T221624484


後は実走して、ナビなどの速度とmotecの表示を比較し、微調整すればいいでしょう。 


以上の設定で右、左の Gound Speed は表示されますが、リソースとして使いたいGound Speedはまだ出ません。 
それを出すには、 トラクションコントロールのパラメーター設定が必要です。 
img_20140427T221625296

 

テストはセンサーのシャフトをドリルでくわえて回転させました。 
img_20140427T221625812
img_20140427T222648328