可能ならばノートPCとマイコンシミュレータで車輌につながったアダプタと通信してデバッグする方が効率が良いのですが、今回ははじめからマイコンにプログラムしての実験.と言うのも、この先オモチャとして使えるかどうかはあるコマンドの結果によるので、PCを持ち出すといった手間をかけずにまずは手っ取り早く通信可否を調べたかったからです. それを、実現するのが即席マイコン基板と 0100,0120,0140 の3つのOBDリクエストコマンドになります.
OBD2で診断できる大枠の項目(Modeと呼ばれる)を簡単に紹介すると、下記で示した0x01~0x0Aまでの全10項目になります.主に使うのは、Mode0x01 の ”現在ステータス” や、Mode0x03, Mode0x07 といったトラブルコードの参照になるのかな.
MODE
$01. Show current data
$02. Show freeze frame data
$03. Show stored Diagnostic Trouble Codes
$04. Clear Diagnostic Trouble Codes and stored values
$05. Test results, oxygen sensor monitoring (non CAN only)
$06. Test results, other component/system monitoring (for CAN only)
$07. Show pending Diagnostic Trouble Codes (detected during current or last driving cycle)
$08. Control operation of on-board component/system
$09. Request vehicle information
$0A. Permanent DTC's (Cleared DTC's)
さて、黒っ9が一番ほしーデータはもちろんMode0x01の現在ステータスになります(^ー^ ご存じのように
OBD2は国際規格なので多くの車輌に対応できるだけの項目があります.逆に言うとたくさんの項目から自動車メーカが必要なものを選ぶことができるようになっているようです.そのため、単にOBD2の規格に準拠していてもその車輌から得られる情報は、限定されていることがほとんどのようですね.
そこで、対象車輌がどの項目情報を送信してくれるかを調べる必要がありますが、それを簡単に行えるのが先に紹介した 0100,0120,0140 コマンドになります.これらは、2バイトで1組となっていて、1バイト目がMode番号、2バイト目がPID(Parameter ID)になります.
http://www.obd2mart.jp/category-6-b0-OBD%E2%85%A1%E3%82%B3%E3%83%BC%E3%83%89%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%8A.html