WRX OBD2で車両情報を取得する その13 エンジン回転数以外の項目とメーター表示
エンジン回転数の取得とリアルタイムでの数値表示が出来たので、次のステップは複数項目(PID)での同時取得と表示ですが、まずはこの先ELM327を介して取得してみたい車両情報の項目を決めたいと思います。以前PIDのサポート状況を調べるコマンドを使って、私の車でサポートしている項目も調べてあるので、この中から選んでいきます。
サポートしている項目(PID)
下記は以前の記事で貼った、「0100」「0120」「0140」のコマンドを使って調べた「サービス01」内のサポート結果です。PIDの60がサポートされていない(結果、「0160」のコマンドが使えない)ので、それ以降については調べる事は出来ませんでしたが、エンジン回転数や水温、車速などの分かり易い項目は最初の方に多くあるので困る事は無さそうです。各PIDの内容はWikiに記載されていますが、多くは見ても仕方が無いあるいは意味の分からない項目かと思います。
取得してみたい項目
上記のサポート結果を踏まえた上で、これから取得してみたい項目を挙げてみます。最初の数値はPID、最後の数値は答えとなるバイト数(アスキーコードから変換後)です。
- 04「エンジン負荷(%)」1
- 05「水温(℃)」1
- 06「短期燃料トリム バンク1(%)」1
- 07「長期燃料トリム バンク1(%)」1
- 0B「インマニ(ブースト)圧力(kPa)」1
- 0C「エンジン回転数(rpm)」2
- 0D「車速(km/h)」1
- 0F「吸気温度(℃)」1
- 10「MAF空気流量(g/s)」2
- 11「スロットル位置(%)」1
- 2F「燃料タンクレベル(%)」1
- 33「絶対気圧(kPa)」1
- 3C「触媒温度(℃)」2
- 45「相対スロットル位置(%)」1
- 46「周囲空気温度(外気温)(℃)」1
- 47「アブソリュートスロットル位置B(%)」1
- 49「アクセルペダル位置D(%)」1
- 4A「アクセルペダル位置E(%)」1
- 4C「スロットルアクチュエーター(%)」1
- 5A「相対アクセルペダル位置(%)」1
・・・多くの項目を選択してしまいましたが、その理由は名称が重複していてその機能がよく分からない為です。特に「アクセルペダル」と「スロットル」と付く項目が多くあり、項目によってどの様な違いがあるのか今の所はまったく分かりません。
調査用個別コマンド
やはり複数の項目を扱う前に、それぞれの項目をELM327に要求してどの様な返信があるのかも見ておく必要があります。基本的にはエンジン回転数と同じで答えとなる部分のバイト数が違うだけだと思いますが、想像していた結果(数値)が返信されるとも限りません。また名称が重複している項目は希望の内容となる項目のみに絞りたい所です。
そこで個別にコマンドを送信する為に、先に挙げた項目の内容を全てPLCで設定しました。各コマンドに対して21~40までの番号を振ってあります。左の数値入力器でその番号を入力してメイン画面にある「送信」ボタンを押すと、「各コマンド(+CR)」がELM327に送信されるので、その結果(返信)を確認します。
ただし結果として数値となる部分の内容まで分かっても特に名称が重複している項目については、結局その違いや意味する所までは分からない気もします・・・。
タッチパネルでのメーター表示
複数の項目を扱う上で考えなければならないのは、タッチパネル上での表示です。利用しているPLCはタッチパネル一体型でパネルは小型な上、白黒液晶なので表現の仕方にかなり制限があります。カラーで7インチや8インチ、15インチといったFA用タッチパネル単品もありますが、PLCと合わせたら金額的にとても個人で購入する気にはなりません。小型で一体型だからこそ、今回のOBD2との接続を考えた訳ですが。
上記はとりあえずタッチパネルで用意されているメーター表示器を使って、疑似的なエンジン回転数メーターの画面を作ってみました。「710」は回転数で「3000」はRevインジケーターを想定した設定値です。タッチする事で任意に値を設定出来ます。回転数によって上部にあるレベルゲージが左から右に表示され、「3000」を超えるとゲージが点滅します。「高速」「低速」は5msや10ms毎に回転数となるデータ値に100を加える事で、疑似的な動きをさせています。
上記は動画からgifアニメにしているので実際の見た目とは少し異なりますが、やはり液晶なのでレベルゲージの動きがかなり「粗い」上に、「3000」を超えてから点滅している筈ですが、正直よく分かりません。回転数の数値部分に関しては「100」ずつ加算されている様子が伺えます。
上記を作成してからさらに複数の項目を同時に表示させた場合が不安になりました。そこで下記の画面も作りました。
先のレベルゲージに加え、こちらもタッチパネルで用意されている180度メーターと90度メーターを加えてみました。「710」や「3000」などは前の画面と同じ役割です。
上記もgifアニメなのであまり上手く伝わりませんが、動きは明らかに「カクカク」になってしまいました。回転数の数値部分も「300」くらいずつ加算されている様に見えます。
数値の変動が早い項目はメーター表示や他の項目と一緒に表示するのは厳しそうです。「温度」であれば問題は無さそうですが、この事を考えるとELM327に対するデータ要求の時間間隔(スキャンタイム)は、あまり速さを求めても意味は無さそうです。
次回はまた車両で実際に確認した結果となりそうですが、項目が沢山あるので全てを確認するのは大変そうです。
「OBD2」関連記事
以下は「OBD2」タグの記事一覧です(投稿順)。現在の記事とこれ以降に投稿した記事も含みます。
- 「セカイモン」でドイツから商品を購入
- WRX OBD2で車両情報を取得する その1 OBD2とは
- WRX OBD2で車両情報を取得する その2 ELM327の電源とRS232Cの配線
- WRX OBD2で車両情報を取得する その3 ELM327と「とある機器」の接続
- WRX OBD2で車両情報を取得する その4 通信テスト用のプログラムと画面
- WRX OBD2で車両情報を取得する その5 ELM327からの応答
- WRX OBD2で車両情報を取得する その6 ELM327との通信テスト完了
- WRX OBD2で車両情報を取得する その7 その他のATコマンドと調査用コマンド
- WRX OBD2で車両情報を取得する その8 ELM327を車両OBD2に接続する
- WRX OBD2で車両情報を取得する その9 OBD2のPIDを調べる
- WRX OBD2で車両情報を取得する その10 その他のPIDとエンジン回転数の取得
- WRX OBD2で車両情報を取得する その11 アスキーコードを数値に変換
- WRX OBD2で車両情報を取得する その12 正しいエンジン回転数取得の様子
- WRX OBD2で車両情報を取得する その13 エンジン回転数以外の項目とメーター表示
- WRX OBD2で車両情報を取得する その14 エンジン回転数以外の項目の返信内容
- WRX OBD2で車両情報を取得する その15 複数PIDの取得テスト
- WRX OBD2のアクセル開度によるSIドライブ自動変更機能の自作
- WRX OBD2で車両情報を取得する その16 複数PIDの取得の様子
- WRX OBD2で車両情報を取得する その17 エンジン回転数と車速からギア位置を判定する
- WRX OBD2ポート(OBD2コネクター)からの電源について
- WRX OBD2で車両情報を取得する その18 OBD2の分岐ケーブルについて
その他
ブロック形式でプログラミングが行える、教育用「micro:bit」も始めてみました。micro:bitでもELM327と接続して車両OBD2ポートからの情報取得を試しています。
- WRX micro:bitを車両で使う その16 シリアル通信(RS232C)を行う
- WRX micro:bitを車両で使う その19 ELM327の車両との通信を確認する
- WRX micro:bitを車両で使う その20 アスキーコード16進数から数値10進数への変換
- WRX micro:bitを車両で使う その21 車両からエンジン回転数を得る
- WRX micro:bitを車両で使う その40 フルカラーLED(WS2812B)でメーターを作る
micro:bit全体の記事は以下から始まります。
注記
- OBD2の仕様は各メーカーや車両で異なる部分があります。メーカーや車両によってはアフターマーケット製品による利用を推奨していない場合や、利用した場合による不具合発生の可能性を示している事があります。
- このブログ内で書いている内容はあくまで私の車両、私の利用する製品や機器での場合です。他メーカーや他の車両をはじめ、同じメーカーの車両または製品、機器であっても記事内容の保証、責任を負う事は出来ません。
- 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で、利用する車両などへの適合を確認し、自己判断と自己責任の下で利用して下さい。
- OBD2やELM327、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
- ELM327はElm Electronics Inc.の登録商標です。その他のブランド名または製品名は各所有者の商標です。