見出し画像

車両OBDから発生する車両不具合

皆さんは、「最近自分の車が何故か調子が悪い」「なんかイマイチ」と思ったことはありませんか?

実は、私自身OBDに取り付ける、昔で言うところの「OKモニター」的なものを作ろうと思っていたところなので、この動画は参考になりました。

この現象はコンピューターなどを作っていたり、トランジスタを勉強していればわかることです。(若干想定外の部分はありますが)
※この方の知識の関係もあるので、元PCエンジニアだった私からすれば、ちょっと誤解してるよな、ってところもあったりはするんですが、概ね理解できる内容です。

OBDで採用されているCAN通信は、実は1対1の通信であり、バス接続である1対多、または多対1に対応しているものではありません。
ですが、最近はOBDをつなげれば、ある意味リスクがあり手間のかかるケーブル分岐や接続作業をしなくても、OBDカプラー一発で終わり、という手軽さから、OBDコネクタを使用する機器が増えているため、利便性追求のためにそれらをまとめて接続しようとするとそれなりに無理が生じます。

実は、(前述に書いたように)ちょっと誤解しかねないので補足すると、分岐ケーブルそのものが悪いのではなく、「分岐させようとする」ことそのものがすでにメーカーの想定外になっていることです。つまり「分岐ケーブルを付ける」以前に「分岐ケーブルをつけようとする」事自体が問題であるということです。

動画の内容や言っていることを色々吟味すると、色々な情報がでてきます。なぜ分岐ケーブルをつけようとするといけないかと言いますと・・・

1)CAN通信は、ある程度はノイズに強い通信になってますが、線が長くなればなるほど、(内部では当然ノイズ対策に良く使われるシールド線なんてめんどくさいのは使われていないので)分岐されたりするとノイズが乗りやすいのです。当然そうなれば誤データをやり取りすることになってしまいます。いわんや分岐などを使えば余計にノイズに対するリスクが増大するわけです。

2)考えてみていただければわかると思いますが、(何度もくどいかもしれないですが)CAN通信は1対1の通信です。
人間に置き換えてみると、2人で会話していることと同じですね。
ですが、これが3人になり、一人が同時に他の2人の(それぞれバラバラのこと、お互い関係なしにを話している)話をすべて同時に聞き取り、理解し、それぞれに同時に返すことは不可能です(厩戸皇子:聖徳太子:じゃないんですから)。
それと同様の状況になっていると考えればわかりやすいですね。
実際だと、複数の機器を接続した場合のアービトレーション(それぞれの機器と車両との正常な”会話”のための制御)が無いため、2つ以上の機器が接続されてしまった場合、通信データがぐちゃぐちゃになってしまい、誤データが送受信されてしまう可能性があるわけです。
もう少し細かく言うと、たとえばAとBの機器が同時にOBDに繋がっていて、それぞれのタイミングが偶然重なって車両側に
A:101010011001010
B:011010110110111
というデータを流していたとすると、
データ:111010111111111
になってしまうということ。まったく違う値になる可能性があるのです。
※実際はタイミングもバラバラなのでもっとめちゃくちゃになっているとは思いますが・・・
こうなると車両側も(データ内容には当然意味があるので)意味を間違えて解釈してしまって誤動作の恐れがあるのです。
※まったくの余談ですが、1対他の接続ができる規格の場合、だいたいそれぞれが固有の”名前”を持っています。同じメーカーの同じ製品を複数つけても問題ないように、何番から接続されているものかも判別できるようになっています。USBや、少し昔だとSCSIという規格がそうですね。
ワンチップマイコンなどを使ってる人なら、I2Cという規格がわかりやすいかもですね。

3)じゃあ受信だけだったら良いだろ、とおもうかもしれませんが、CAN通信は通信方式が専用になるため、それに対応した専用ICを使って通信することになります(しその方が回路的にも楽)が、そもそもその専用ICは1対多なんて当然考えられていないので、通信をするためのドライブ能力が1対1+α程度にしか考慮されていない可能性が高いです。
もう少し細かく説明すると、こういう信号のやり取りっていうのは、電圧の上下で0か1かをやり取りするわけで、モールス信号みたく、その0か1かの順番の流れでどういうデータなのかを判断します。
とすると、「0か1を判断する」敷居の値が当然必要(たとえばその電圧から上が”1”で、それ以下なら”0”など)。
で、ICの中のトランジスタでその電圧を発生させるわけですが、電圧がかかるということは電流も流れることになります。
が、その電流の流せる最大量(実際は電力量)は当然決まっていて、接続する機器が想定外の量(つまりこの場合は多数の機器接続)だと電流が流れすぎてしまい、(電力量が決まってるので)結局電圧が下がってしまう可能性が高いわけです。
わかり易い例が水道で、水の供給量に対して同時に使う水量が多すぎると、当然水圧が下がります。それとまったく同じです。
これがどう問題かというと、先程の「しきい値」にかかってくるわけです。
電圧が下げれば、”0”か”1”か微妙なのもあったりするので、そうするとIC側でどっちなのかの判断を間違える可能性があるということです。
更にこれに外部からの電気ノイズなどが入ってくるとさらに話がややこしくなります。
そうなると、誤データを受信する可能性があるということです。
実際に上記の動画の誤データはそういうことなのだろうと予測できます。動画内では「つながらないこともある」と言ってるので、この状況になってる可能性は大いにあります。

4)更に恐ろしいことに、最近の車両コンピューターは、外部からある程度書き換えられるようにフラッシュメモリが使われており(むかしはマスクROMや、EPROMなど、そう簡単に書き換えられない仕様でした、大きさや容量的な問題もありますが書き換えがかなり面倒ではありました、まぁ昔の車はそこまで必要無かったしそもそもOBDすらない車両もあったのもありますが)、エンジンの基礎データを含んだエンジンプログラムやエラーデータ&履歴、その他の情報がそこに蓄えられているわけです。

ECUや、診断装置でエラーを含めたメモリクリアすれば行けなくね?とおもうでしょうが、これらはプログラムや基礎データまで消してしまわないよう「特定の領域だけクリアする」仕様のはずなので、OBD経由で、その領域外のデータや、まかり間違ってその基礎データなどまで書き換えられてしまっていると話が厄介です。
(昔プリウスの回生ブレーキ問題がありましたが、その時のリコール?のコンピュータ書き換えはOBD経由でやっていたということなので、やろうとおもえばコンピュータ全体の書き換えはできなくはないはずなのですが、普通にそれやっちゃうと初期状態に戻るのと、書き換えミスったら車が動かなくなってコンピュータ交換、でそれを誰の負担にするの?って話になって、下手な話クレームになって余計に話がおかしくなる可能性があり、エラー消去以外リコールを含めたメーカーからの指示でない限りやりたくないってのが本音です:こういう制御システムが絡む重大リコールの場合だいたいメーカー本体が責任取ってくれるはずなので・・・)

コンピュータの交換や特殊なクリアをするにしろ、「故障してない」ものを交換したり対応する訳にはいかないというのがメーカーや販売店の立場でしょう。(余計なことして壊したら洒落になりませんしね・・・)
実際(調子悪いにしろ)車は動いていますし故障しているというデータがでてこない状況で、なぜそれをしなきゃいけないの?って話になるわけです。
そうなると「そういうもんです」って追い返されるのが関の山、ということになります。

※念のため申し上げますが、Dやメーカーのエンジニアでも、ありとあらゆる状況を知っている人間はごくわずかで、かつなかなか判断ができません。
実際OBDに対する複数機器の接続は想定外ですからいちいち色々繋げてチェックなんてしてないと考えるのが普通です。
またディーラーの整備士も、実際は忙殺されてたりで勉強する気ゼロなのが現状で、事実上「チェンジニア」になっていて、この様なケースのノウハウなんてまずないのが現状だったりするのです。
”Dやメーカーのエンジニアなら何でも知ってる” 時代は、もうとっくの昔に終わっている、と思って間違いないでしょうね。
下手な話老舗のチューニングショップのおっさんのほうがよく知ってた、なんてことも最近は良くあります。

私の車は幸い?古い車(2003年?製)で、OBDも古いはずですから問題は少ないのでしょうが、最近は車検にOBD接続の診断チェックもありますし、(今自分の車にはタコメーターがなく、つけたいと思っているところでもありますので)この情報を参考に考えたいと思っています。

この記事が気に入ったらサポートをしてみませんか?