経 緯
走行中のエンジンの状態をモニターする為の、動機、情報入手方法、ツール作成方法など紹介したものです。
【水温計故障】
M3で走行中に、エンジンが突然絶不調となりしばらくすると回復するトラブルが発生した為、ディーラに修理を依頼したが症状発生期間が短く(約1分)常に発生するとは限らなかったので、直らなかった。
そこで電子噴射式のエンジンに関して勉強し、原因を水温計のトラブルと推定して、水温計の配線を引っ張り出してメータを取り付け運転席でモニターすることにより、水温が高温になっていく最中にある温度帯になると断線状態となり、エンジンコンピュータ(ECU/DME)が低温と判断して、燃料を必要以上に濃くした為、絶不調となったことが分かった。
後日、ディーラで水温計(水温センサー)を交換して貰い、トラブルは解決した。
【配線確認】
エンジン動作中にECU各ピンの信号波形を計測し、洋書本屋から入手したBMW車の修理ハンドブック(M3に関しては殆ど書かれていないが)を参考に、ECU周りの配線を推定した。
その結果、ECUのCPUから一定周期で何らかのデータをシリアル通信で、エンジンルームのダイアグノーシスプラグに出力していることが分かった。
【プログラム簡易解読】
エンジンのオーバーホールをした時、その整備会社から複数のROMを渡されて違いを調査して欲しいと依頼されたのでROMのデータを見比べ、CPUの種類やプログラムとデータ領域の判別などを行った。
【CPU周りの回路確認】
CPUの種類が分かったことにより、ピンアサインから割り込みに使用している信号やA/Dコンバータで処理している信号が判明した。
また、CPUのシリアル入力端子がLowレベルに固定されていることが分かった。
【ECUモニター自作】
ECUの動作状態をモニターする為、必要なレジスタ番号をECUにシリアル出力し、シリアル入力したレジスタの値を解読して色々な形で表示できるECUモニターを自作した。
【エンジンシミュレータ自作】
ECUの良否判定、プログラムの解読やECUモニターのデバックをする時に実車を動作させて確認するのは大変なので、エンジンの動作を簡易模擬できるエンジンシミュレータを自作した。
【ECUの改造】
・CPUのシリアル入力端子からレジスタ番号を読み込んだ時、その時のレジスタに記録されている値をシリアル出力端子から書き出すようECUのプログラムを改造した。
・CPUのシリアル入力端子をECUモニターのシリアル出力信号でドライブできるよう、Lowレベルに固定されている回路を改造した。
・CPUのシリアル入出力端子とECUモニターのシリアル入出力端子を接続できるよう、ECUのシリアル入力回路を改造し配線とコネクタを追加した。
・ガソリンの種類(有鉛/無鉛、ハイオク/レギュラー)設定にPIN10及びPIN28をON/OFFすることで実施しているが、一度設定したら基本的に変更しないのでPIN28分はプログラムで設定することにし、PIN28の燃料種類設定入力を改造して、空燃比計のアナログ出力を接続することにより、空燃比(7~22程度)も他のセンサーと同様にA/Dできるようにした。だだし、この空燃比はエンジン制御には使用していない。
【プログラム解読】
エンジンシミュレータ、ECU及びECUモニターを接続し、エンジンシミュレータのボリュームやスイッチを変化させた時ECUのレジスタ値がどの様に変化するかモニターし、プログラムを解読した。(現在、3割程度解読完了)
【M3Analyzerプログラム作成】
GNSS(GPS)、可視カメラ及びECUモニターをパソコンに接続し、エンジン状況もモニターできるドライブレコーダもどきを作成した。
【ECUコンバータ自作】
ECUの動作状態をパソコンでモニターする為、必要なレジスタ番号をECUにシリアル出力し、シリアル入力したレジスタの値を解読してパソコンに出力できるECUコンバータを自作した。
【修理依頼】
E30M3の整備会社から動作不良のECUの修理依頼があり、不具合調査及び対策を実施した。