Freedom Computer用アプリ作成の道 その11 | hiro0719jpのブログ

hiro0719jpのブログ

クルマのこと、パソコンのこと、旅のこと、食べることなどを 気ままに綴るので、気楽に寄ってってくださいー。

ハチロクのエンジンを制御してるフリーダムコンピューター(Freedom Computer)のサポートツールであるFCSSに代わるセッティングツール(FCCS)開発の続きです。

 

 

 

まずは、Visual Basic 6.0からVisual Basic .NET 2.0(Visual Basic 2008)への移植と、Vivo Tab Note 8の画面への対応です。

 

立ち上げ画面。

 

COMポートの選択、Freedom Computerとの接続と切断、テストコマンドの送信ができます。また、通信に要した時間を表示するので、どれくらいの周期でデータを収集できているかも把握できるようにしました。

 

テストコマンド送信は、普段は使いませんが、開発時にどんなコマンドを送ると、どんな戻り値が帰ってくるのかなどを調査する際には便利なので、残しています。

 

立ち上がりは、パラメータなどを読み込まず、素早く立ち上がるようにしました。

 

また、接続中は常にデータをロギングするようになっており、データ取りこぼしを防いでいます。結果、データが大量に溜まりますが・・・

 

データは、下記のようにcsv形式で保存されます。

 

 

オリジナルのFCSSが吐き出すデータは、ヘッダーもなくデータが並んでいるだけだったので、これならエクセルなどで解析がしやすいと思います。

 

次にデータ表示画面。

 

FCSSだと画面の切り替えが必要ですが、補正値やフラグなどを一目で確認できるようにしました。フォントやレイアウトも工夫して見やすくしましたが、表示項目も多いので、使いながら更に改良が必要かも。

 

次に自動MAP修正機能の追加(復活)です。過去ブログやソースを参考に作り、実際に使って改良した結果、このような形になりました。

 

目標A/Fと実A/Fを並べて棒グラフにすることで、目標に対するズレを視覚的に確認しやすくしました。

 

また、Freedom Computer本体でのフィードバック補正や学習をON/OFFするスイッチと並べることで、Freedom Computerでの学習とFCCSでの学習を使い分けながらセッティングを進められるようにしました。

 

また、フリーダムコンピューターでのフィードバック制御とFCSSでの学習は同時に出来ないようにしています。

 

フリーダムコンピューターのフィードバック、学習設定。

 

FCCSでの学習設定。

 

FCCSでの学習設定は、

 

  1. アイドリング時の学習をする/しないの選択
  2. 補正が大きい時やアクセル開度変化が大きい時には学習しなくする設定閾値
  3. 噴射マップとスロットルマップのどちらに反映するかを切り替える閾値
  4. 1回あたりの学習率
を変更できるようにしました。
 

1ですが、Dジェトロのエンジン制御は 一次遅れ系ということで アイドリングなどはどうしても多少のハンチングがあります。学習も一次遅れ系なので、ここに学習を入れると不安定になりやすいので、学習させたい時のみ学習できるようにしました。また、学習条件が揃ったら、背景の色が変化して分かるようにしました。

 

2ですが、マップは「標準時」の「定常時」にエンジンが必要とする燃料に合わせて作りたいので、過渡補正が入っている最中や、その直後の不安定な時間、暖機中やオーバーヒート時、高地、吸気温度が高いなどエンジンが想定している標準的な状態から外れているときには学習しないようにする必要があります。

 

そこで、補正値が ある閾値より大きい場合や、アクセル開度変化が大きいなど、過渡だと判定できる状態、また 高地や暖機中の補正が入っている状態では学習しないようにするため、その閾値を調整し、適切な状態でのみ学習するようにしました。これも、条件が成立したら背景の色が変わって分かるようにしました。

 

次に3ですが、4連スロットルの特性として、アクセルを少し開くだけで吸気管の負圧が発生しなくなってしまう(=すぐに大気圧付近になってしまう)というのがあります(圧力損失が少ないと言うことなので、良いことなのですが)。結果、あるアクセル開度以上では、負圧は殆ど変化せず、流入空気量だけが増えてゆくため、Dジェトロ方式での吸気量推定が難しくなります。

 

そこで、アクセル開度が小さい時は吸気管負圧に応じて噴射量を決め、それ以上ではアクセル開度に応じて噴射量を決められるといいのですが、フリーダムコンピューターの学習機能はこのようにはなっていません。そこで、これを実現するために、アクセル開度が小さい時には噴射マップ(吸気管負圧に応じて噴射量を決める)の学習をし、アクセル開度が大きい時にはスロットルマップ(アクセル開度に応じて噴射量を補正する)を学習する機能を実装しました。

 

ここでは、この噴射量マップとスロットルマップの学習を切り替える閾値を吸気管圧力で指定します。これも条件が成立したら、背景の色が変わることで、分かりやすくしました。

 

最後が4ですが、これはA/Fのズレをそのままマップに反映すると、何かの外乱があって正しくない場合などに補正しすぎてしまったり、一次遅れ系なのでハンチングする場合があるので、ズレ量の何%をマップに反映するかを設定します。例えば、学習率10%でズレ量が100だったとすると、10だけ学習することになるので、外乱などがなければ、10回学習すれば、目標A/Fと実A/Fが一致する計算になります。

 

 

皆さん、フリーダムコンピューターのセッティングで色々苦労していると思いますが、これを上手く使えば噴射量マップとスロットルマップを上手に作れるのではないかと思います。

 

実際、これを使って何日か通勤で走った所、今までにないくらい調子良くなりました!!

 

ドツボにハマるのは、この基本マップができてない状態で、加減速補正や、非同期噴射、水温補正、高地補正などを触ってしまった時です。

 

これやると、マップがダメなのか、補正が悪いのか分からなくなり、延々とマップや補正値をいじる羽目になり、なかなかセッティングが出ない状態になります。

 

よく、フリーダムコンピューターはセッティングが難しいとか、クセがあるなんて言われますが、原因はここにあると思っているので、まずはこの機能により、基本マップを作り込む所からスタートすると良いと思います。

 

基本マップが出来て初めて過渡のセッティングができますので、今後は 過渡セッティングツールを作って行こうと思っています。