CAN-LINゲートウェイのソフトウェア・モジュールの実装 ――高い信頼性を確保して異なるプロトコル通信間をつなぐ
一方,LINでは1マスタ+複数スレーブのプロトコルになっているので,ゲートウェイについて図3のような三つの接続方法が考えられます.
1) ゲートウェイがLINマスタとして動作する
2) ゲートウェイがスレーブとして動作する
3) ゲートウェイの存在を透明にする
もっとも設計が簡単でコストがかからないのが,1)の方法です.使用するマイコンに必要な数の通信チャネルとCPU性能があれば,マルチマスタ,すなわち一つのゲートウェイに複数のLINバスをつなげるような設計も容易です.
ただし,この方法ではゲートウェイが故障すると,そこにつながるLINクラスタ全体がダウンしてしまう危険性があります.もし,対象のLINクラスタがそれだけで機能的に閉じているような場合(例えば,スレーブ・ノードにスイッチとランプがあり,スイッチを入れればランプが点灯するといった機能),信頼性について検討する必要があります.LINノードの機能がすべてCANからの指令でのみ従属的に動作するような場合,ゲートウェイが故障すればスレーブ・ノードが生きていても意味がないので,ほかの方法と信頼性の差はありません.
2)は,ゲートウェイのトラブルからLINクラスタを守ることができる一つの方法です.とくにLIN
2.0では,故障ノードの切り離しがプロトコルで規定されているので,ゲートウェイの故障に対してCANと同じくらいの信頼性を確保することができます.
3)の方法は,信頼性については2)の方法と同じです.動作的には,いくつかのCANノードがマスタからはLINスレーブとして見えることになります.このため,2)の方法と比べてLINマスタとCAN側の依存関係が強くなります.
2),3)ともに,ゲートウェイはLINスレーブとして働くので,マスタは定期的にCANからのメッセージを確認する(ポーリングする)必要があります.さらに,タイミング調停などは,1)の方法よりも処理が複雑になります.
今回は,上記の接続方法の中からもっとも設計が簡単な「CANノード(図2(a))+LINマスタ(図3(a))」として働くゲートウェイについて実例を紹介します(図4).
図3 ゲートウェイ内のLINの扱い
(a)ではゲートウェイがLINマスタとして,また,(b)ではLINのスレーブとして機能する.(c)の場合,ゲートウェイにつながるCANノードがLINのスレーブに見える.
図4 今回作成したゲートウェイ
もっとも設計が簡単な「CANノード+LINマスタ」という接続方法を採用したゲートウェイを今回作成した.