• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

アンドロ沼のブログ一覧

2020年11月20日 イイね!

水温計の作り方(ソフトの説明編1)

まずは水温とエンジン回転数の取得方法を説明します。今回車両のOBDコネクタに繋ぎましたが、これは元々カリフォルニア州の法律で設置が義務付けられ、その後世界各国で法制化されたコネクタの規格になります。
で、このカリフォルニアの法律では、コネクタの形状、ピン配だけでなく水温や車速、回転数といった情報も読み出すことができるように、通信のフォーマットも決めています。そのため、基本的には1990年代以降の車では、同じ方法でこれらの情報を読み出すことが可能です。
で、その規格がSAE J1979になるんですが、この規格の内容は、関連情報URLに書いた、英語版のWikipediaが一番わかりやすいので、こちらを参考にしてください。(Google先生に翻訳してもらえば、誰でも読めるかと思います。)

とはいえ、実際に取得する方法には読んでもわかりにくいので、水温の取得方法に絞って、説明していきます。

まず、水温情報を取得するには、水温情報を持っているECUにリクエストしなければいけません。このリクエストするメッセージフレームをCANドライバに渡しているところが下記になります。

rx_frame.FIR.B.FF = CAN_frame_ext;
1)CANのメッセージID長の設定
CANのメッセージIDの長さには、11bitと29bitの二種類があり、Freedの場合は29bitの拡張IDと呼ばれるものを使ってます。この行では、CANドライバに送信する、メッセージID長を拡張IDにしますよというフラグを立ててます。

rx_frame.MsgID = 0x18db33f1 ;
2)CANのメッセージIDのセット
ここで、次に送信するメッセージのIDとして、「0x18db33f1」という機能アドレスを設定しています。このIDにすると、「誰でもいいから水温わかる人返事して」みたいな呼びかけをすることになります。(実際このメッセージを送ると、2つぐらいのノードから返事が返ってきてました。)

rx_frame.FIR.B.DLC = 3;
3)CANのメッセージ長のセット
ここでは、IDに連なるCANのデータ長を3バイトにしています。ここで、CANは8バイトまでのメッセージ長を許すのですが、実際には次の最初のデータバイトで長さを指定していますので、8バイト送ったとしても特に問題は起きません。結論としてここでは、3~8のうちの何の値でも特に問題はないです。(指定しなくても問題ないかも?)

rx_frame.data.u8[0] = 0x02;
4)1バイト目のデータの指定
ここからが本当の送信データの中身になります。ここで、「02」を送ると受け取り側は、そのあとに続く2バイトが要求だということがわかるということになります。

rx_frame.data.u8[1] = 0x01;
5)要求するサービスの指定
SAE J1979では下表の10個のサービスが規定されています。今回は現在値を読み出すため、サービス0x01を利用することになるので、2バイト目に数値として0x01を指定しています。


rx_frame.data.u8[2] = 0x05; // Request coolant temperature
6)要求するPIDの指定
PIDには200個近いものが用意されています。今回はこのうちのエンジン水温を読み出したいので、WikipediaにあるPIDの表(下表)から、0x05の値を送信しているわけです。


この応用で、回転数が見たければ0x0Cをここに入れればよく、車速は0x0D、吸気温0x0F、外気温は、0x46といった具合です。
Posted at 2020/11/20 20:09:42 | コメント(0) | トラックバック(0) | 日記

プロフィール

「水温計の作り方(M5StickC plus ソースコード編2) http://cvw.jp/b/1552949/45254112/
何シテル?   07/05 22:01
アンドロ沼です。アクアからフリードハイブリッドに買い換えしました。
みんカラ新規会員登録

ユーザー内検索

<< 2020/11 >>

1234567
891011121314
15 1617 18 19 2021
22232425262728
2930     

愛車一覧

ホンダ フリードハイブリッド ホンダ フリードハイブリッド
家族が増え、強い圧力がかかり買い換えました。
スズキ ワゴンRハイブリッド スズキ ワゴンRハイブリッド
電車通勤から、車通勤に替り買い足しました。
トヨタ アクア トヨタ アクア
Fitからアクアに買い替えついでに、いろいろいじろうと思ってます。

過去のブログ

2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation