車載ネットワーク(11)LIN 通信手順

マスタタスクとスレーブタスク

LIN は1つのマスタノードと複数のスレーブノードで構成され、唯一のマスタノードが、ネットワーク全体の通信を制御する方式だ。ネットワーク上での衝突や調停(Arbitration)をなくし、低コストでネットワークを構築するには都合の良い方法だ。

LIN ノードの役割には、「マスタタスク」と「スレーブタスク」がある。マスタタスクはマスタノードのみが持つ役割で、スレーブタスクはマスタノードとスレーブノードの両方が持つ役割だ。各ノードは、スレーブタスクを複数持つことができる(図1)。

マスタタスク
マスタタスクは、スレーブタスクに「データ送信要求」を送ることと、決められたタイミングやシーケンスでデータ送信要求を送る「スケージュール管理」の役割がある。マスタタスクは、 「データ送信要求」として「ヘッダ」を送信する。マスタタスク自身は、ヘッダに続く「レス ポンス」を送信せず、データの送受信を行わない。
スレーブタスク
スレーブタスクは、データを送受信する役割がある。スレーブタスクは、マスタタスクから送信される「ヘッダ」を常に監視し、送信要求を受けたスレーブタスク(物理的にはノード)が「ヘッダ」の後に「レスポンス」としてデータを送信する。つまり、マスタタスク(物理的にはマスタノード)から「ヘッダ」が送信されない限り、各ノードは「レスポンス」を送信することができない。
図1 マスタタスクとスレーブタスク
図1 マスタタスクとスレーブタスク

データ送信要求と送信データ

マスタタスクが、LIN バス上に送信する「ヘッダ」には、「 Protected identifier field」があり、ここで指定されたスレーブタスクが、LIN バスに「レスポンス」を送信する(図2)。

マスタタスクが「ヘッダ」を送信し、データ送信要求を受けたスレーブタスクが「レスポンス」を送信することでデータ送受信が完結する。LIN フレームは、「ヘッダ」とこれに対応する「レスポンス」で構成される。2つの異なるタスクが送信するデータが合体し、1つのフレームを構成する方法だ。一般的な通信ではありえない作りだが、極めて効率の良い方法だ。

ハードウェア的には2つの動作ケースがある。1つ目は、マスタノード上の「マスタタスク」がヘッダを送信し、スレーブノード上の「スレーブタスク」がレスポンスを送信するケースだ。このケースでは、ヘッダとレスポンスを送信するノードが異なる。つまり、異なるハードウェアが送信する2つのデータが合体し、1つのフレームを作ることになる。

もう一つのケースは、マスタノード上の「マスタタスク」がヘッダを送信し、マスタノード上の「スレーブタスク」がレスポンスを送信するケースだ。このケースでは、ヘッダとレスポンスを送信するノードは同じマスタノードになる。1台のハードウェアが、1つのフレームを送信するごく一般的な形だ。

図2 LIN フレーム構成
図2 LIN フレーム構成

スケジュール管理

効率よく、フレーム衝突などのエラーが発生しないように、マスタノードは LIN ネットワーク全体のスケジュール管理を行う。

図3 は、マスタタスクが3つのスレーブタスクから順次データを読み出す例だ。この例では、サイクル1→サイクル2→サイクル3 とデータを読み出し、全サイクルを終了すると最初のサイクルに戻り、同じ操作を繰り返す。マスタタスクは読み書きの順序を決めるだけではなく、スレーブノードの性能に合わせたフレーム間ギャップ(待ち時間)の制御も行う。

マスタタスクは、送信する Protected identifier field の値(スレーブタスクの番号)や送信の順序、送信時間間隔をあらかじめ決め、スケジュールに従いヘッダを送信する。このスケジュールを「LIN スケジュール」と呼び、複数のスケジュールを設定することができる。例えば、「起動時の初期化モード」、「通常走行モード」や「車両診断モード」などの車の状態に応じたスケジュールを設定できる。

スケジュール管理
図3 スケジュール管理

LIN 通信動作

図4 は、1台のマスタノードと2台のスレーブノード構成で、各ノードには、表1 のようにマスタタスク/スレーブタスク/レスポンスバッファがある。レスポンスバッファは各レスポンスデータを蓄えるバッファで、更新時は上書きされ最新情報が残る。この例では、全てのノードは全てのレスポンスを蓄積し更新することとする。

LIN スケジュールのサイクルは、スレーブタスク#1(スレーブノードA)→スレーブタスク#2 (スレーブノードB)→スレーブタスク#3(マスタノード)と巡回する。

マスタノードスレーブノードAスレーブノードB
マスタタスク××
スレーブタスク#3#1#2
レスポンスバッファ#1
レスポンスバッファ#2
レスポンスバッファ#3
表1 各ノードの構成
通信動作例の構成
図4 通信動作例の構成

図5 は、図4表1 の構成で、スレーブタスクのデータを読み出し、レスポンスバッファを更新する様子を時間軸で表したものだ。各スレーブタスクが送信したレスポンスは、LIN バス上に送信され、全てのノードが取り込むことができる。もちろん、必要のないデータは取り込まず、不必要なレスポンスバッファを用意する必要はない。

図5 通信動作例
図5 通信動作例

LIN フレームは、マスタタスク(マスタノード)が送信した「ヘッダ」とスレーブタスク(スレーブノード/マスタノード)が送信した「レスポンス」で構成される。一般的な通信とは異なる考え方だが、「送信要求フレーム」と「応答フレーム」を個別に送受信する非効率を解消する方式だ。バス構造をとることで、送信と受信を同時に行い、無駄な時間を削除している。一般的な通信の常識に取らわれない、効率を追求した優れた方式だ。

車載ネットワーク

この記事を書いた人

岩崎 有平

早稲田大学 理工学部 電子通信学科にて通信工学を専攻。
安立電気(現 アンリツ)に入社後、コンピュータ周辺機器の開発を経てネットワーク機器の開発やプロモーションに従事する。
おもにEthernetを利用したリアルタイム監視映像配信サービスの実現や、重要データの優先配信、映像ストリームの安定配信に向けた機器の開発行い、Video On Demandや金融機関のネットワークシステム安定化に注力した。
現在は、Ethernetにおけるリアルタイム機能の強化・開発と普及に向けて、Ethernet TSNの普及活動を行っている。