R1200GSの電装系をいじくりたくて調べていたら、このバイクには CAN-Bus (CANバス)が採用されていて、各種コントローラやユニット同士がこれを通じて制御されていることが分かりました。
つまり、CANバス信号をモニタすることができれば、車速やエンジン回転数、ギヤポジション、ウインカーの状態などなどを知ることができるはず。。。
CAN-Busは規格化された通信方式ですが、このバイクに使われている方式(電気的な仕様や通信プロトコル)がどこまで規格通りなのか分かりません。
「どうぞご自由にお使い下さい」とユーザーに公開されたものではないので独自方式が採用されている可能性もあります。
そこで、実際にどのような信号(データ)が流れているのか、オシロスコープで覗いてみることにしました。
結果としては大成功! オシロでCANバス信号をデコードすることに成功しました!!
以下、今回の作業の様子です。
まずはリヤフェンダーをバラして、、、車両の基幹CANバスの端っこのコネクタを取り出します。
これが、お目当てのコネクタ。
本来は、オプション装備のDWA(盗難警報装置)のユニットに接続されるコネクタですが、このバイクにはDWAが無いので、ダミーのコネクタに接続されています。
ダミーコネクタは単なるキャップではなく、中に抵抗が入っていました。
CANの教科書通り、120Ωの終端抵抗です。
ブレッドボード用のジャンパーケーブルで CAN-H と CAN-L 2本の信号線を引き出します。
CANは差動信号なので、オシロスコープとの接続にはマジメに差動プローブを使用しました。
使用するオシロスコープは、借用品の「KEYSIGHT InfiniiVision MSOX2024A」です。
このオシロには CAN信号を観測するための機能が備わっていますが、自分は初めて使うので、まずはデモ画面でどんなふうに測定できるのかイメージをつかみます。
とても分かり易い!
オシロを屋外で使用することは滅多にないだろうけど、、、画面は大きいし明るいので電源さえあれば屋外でも問題無く使えそうですね。
差動プローブをバイクのコネクタの CAN-H, CAN-L 2本の信号線に繋げて見ると、、、
呆気ないほど簡単に、CAN信号がデコード表示されました!!
ホントのところ、正しくデータを読み取れているのかどうか、この時点ではサッパリ分かっていないのですが、、、少なくともオシロの機能として、エラー無くデコードできていると表示してくれているので、きっと大丈夫なはず。。。(^^;
(ちなみに後日の解析で、完璧なデータ取得であったことが確認できました)
USBメモリスティックにセーブして、大量のデータを後でじっくり解析することが可能です。
このデータに、スロットル開度や車速、各種電装系のスイッチ状態などの情報が載っています。
これは記念撮影用のポジション。 オシロをこんなところに載せてはいけませんよね。(^^;
昔のオシロと違って、こんなところに載せられるほど小型軽量になったわけですが。v(^o^)
CANバスに接続されている、様々なユニットからデータが送り出されていることが分かります。
データが送出される頻度(ペース)もいろいろで、1ms毎に送られているデータ(つまり1秒間に1000回)ものもあれば、10msごとや 100msごとのデータもあるようです。
オシロの性能(機能)のお陰で予想以上に簡単にCAN信号を観測することができましたが、残念ながらオシロを繋げた状態で走ることはできないし、CAN信号をデコードしても単なる16進数のデータの羅列で、これを見ているだけではどれがエンジンの回転数でどれがウインカーの信号なのかもサッパリ分かりません。
次のステップは、Arduinoマイコンボードを用いて CANデータを読解すること。。。
そのためのハードウェアとソフトウェアをいじくるプロジェクトに移行します。
バイクの車体側について、毎回リヤフェンダーをばらさないとCANバスにアクセスできないのでは困るので、、、
リヤフェンダー内のハーネスの束ね方を少しいじって、シート下のアクセスしやすいところに、このコネクタを移動させておくことにします。
具体的な様子は後日の記事にて。