ノードコンフィグレーションと識別は、スレーブノードを効率的に再利用するためのサービスです。
LIN記述ファイルには、LINネットワークに必要な情報が定義されており、送受信するノード、フレームID、シグナルなど、スレーブノード固有の情報も含まれています。つまり、スレーブノード固有の情報は、LINネットワーク固有の情報として定義されます。
また、LIN記述ファイルの定義は通信によって動的に変更できません。そのため、あるスレーブノードを別のLINネットワークで使用する場合、フレームIDの重複などが発生する可能性があるため容易に再利用できません(図6)。
図6 レスポンスの衝突(※ベクター・ジャパンの資料を基に作成)
※車両A、Bで使用している2つのスレーブノードを車両Cで再利用した場合、フレームID0x10が重複しているため、レスポンスが衝突する。フレームIDは車両A、Bの各LIN記述ファイルに定義されているため、車両CのLIN記述ファイルの変更では衝突を回避できない。そのため、再利用するスレーブノードのアプリケーションなどを変更する必要がある
「スレーブノードの効率的な再利用」に対応するため、LIN2.xでは以下の仕様が追加されました。
- スレーブノード固有の情報を定義する「ノード機能ファイル(NCF)」
- スレーブノードを通信によって再設定する「ノードコンフィグレーションと識別」
ノード機能ファイル(NCF:Node Capability File)は、1スレーブノードの固有情報を定義する標準形式で、LIN記述ファイルと同様、LINの仕様書に規定されています。ノード機能ファイルには、ネットワークに依存しない情報を定義します。
図7 ノード機能ファイルの例(※画像提供:ベクター・ジャパン)
※LIN記述ファイルにはLINネットワーク全体を定義するが、ノード機能ファイルにはスレーブノードの固有情報を定義する
ノード機能ファイルには、スレーブノードが送受信するフレームID、シグナルなどのほかにスレーブノードを特定するためのノードアドレス(NAD)も定義します。ただし、ノード機能ファイルに定義されているノードアドレスが、ほかのスレーブノードと重複している可能性もあるため、ノード機能ファイルにはスレーブノードごとに必ず重複しない「製品識別番号」と呼ばれる下記の3つの値を定義します。
・サプライヤID
LINコンソーシアムがサプライヤごとに指定する16ビットのID
・ファンクションID
各サプライヤが機能ごとに指定する16ビットのID
・バリアント
各サプライヤがハードウェアやソフトウェアの修正ごとに指定する8ビットのID
ノード機能ファイルの情報は、システム定義ツールを使用してLIN記述ファイルに結合されます。これにより、スレーブノード固有の情報を簡単にLIN記述ファイルに定義できます(図8)。
図8 ノード機能ファイルの情報(※ベクター・ジャパンの資料を基に作成)
※LIN2.1では、システム定義ツールを「LINクラスタデザインツール」、システムジェネレータを「LINクラスタジェネレータ」と呼ぶ。クラスタとはLINバスとすべてのノードを指す
ノード機能ファイルは、1スレーブノードに対する定義となるため、ほかのスレーブノードのノードアドレスやフレームIDと重複する可能性があります。
このスレーブノード間の設定の重複などを解決するために追加された仕様がノードコンフィグレーションと識別のサービスです。
ノードコンフィグレーションと識別は、トランスポートプロトコルのシングルフレームを使用し、スレーブノードを1つずつ設定します。ノードコンフィグレーションと識別で定義されているサービス(SID)は「0xB0」から「0xB7」です。
・Assign NAD(SID:0xB0) ※オプションサービス
サプライヤID、ファンクションID、バリアントを使用し、ノードアドレスを再設定します。これにより、ノードアドレスの重複を解決します。
・Assign Frame ID(SID:0xB1) ※必須サービス、LIN2.0のみ
ノード定義ファイルに設定されたメッセージIDを使用し、1フレームごとに1つのPIDを再設定します。これにより、フレームIDの重複を解決します。LIN2.1ではフレームIDの再設定に「Assign Frame ID Range(SID:0xB7)」を使用します。
・Read by Identifier(SID:B2) ※必須サービス
スレーブノードの製品識別番号などの情報を読み込みます。
・Conditional Change NAD(SID:0xB3) ※オプションサービス
LINネットワーク内の不正なスレーブノード(誤ったノードを接続した場合など)を検出し、NADを変更します。
・Data Dump(SID:0xB4) ※オプションサービス
開発に必要な任意の診断を行う場合に使用します。開発時のみ有効です。
・Assign NAD via SNPD(SID:0xB5)
SNPD(Slave Node Position Detection)仕様により予約されているサービスです。
・Save Configuration(SID:0xB6) ※オプションサービス、LIN2.1のみ
スレーブノードが不揮発性RAMをサポートしている場合、設定されているNAD、PIDを不揮発性RAMに保存します。
・Assign Frame ID Range(SID:0xB7) ※必須サービス、LIN2.1のみ
1フレームごとに最大4つのPIDを再設定します。これにより、フレームIDの重複を解決します。1フレームで複数のフレームIDを再設定できるため、LIN2.0のサービス「Assign Frame ID(SID:0xB1)」よりも設定時間を短縮できます。
最後に、LINネットワーク内にLINプロトコルバージョンが異なるノードが混在した場合の動作について説明します。
LINネットワークでは、マスターノードが通信を制御するため、マスターノードのプロトコルバージョンにより使用できるスレーブノードのプロトコルバージョンが決まります。
・マスターノードのプロトコルバージョンがLIN1.3の場合
LIN2.xのスレーブノードは使用できません。
・マスターノードのプロトコルバージョンがLIN2.xの場合
LIN1.3、LIN2.xのスレーブノードが使用できます。ただし、スレーブノードがLIN1.3の場合、マスターノードは拡張チェックサムや診断などのLIN2.xの仕様は使用できません。また、LIN2.0/2.1が混在した場合も同様に、ファンクショナルアドレッシングやノードコンフィグレーションと識別のサービスなど、プロトコルバージョン間で異なる仕様は使用できません。
LINは、主にドアミラーやパワーシートなどのボディ制御に使用されるシンプルかつ安価な車載向けサブネットワークシステムとして策定されました。今後も快適装備品の増加や、さらなるコスト削減の取り組みに伴い、LINが使われるケースが多くなると予想されます。また、複雑化する制御や通信を実現し、効率の良い開発を行うために、LIN2.0/2.1で追加された仕様を採用するノードも増加していくと考えられます。
本連載で説明したLINの基礎知識が、皆さんのLINプロトコルの理解と導入の一助となれば幸いです。(連載完)
⇒連載バックナンバーはこちら
【 筆者紹介 】
ベクター・ジャパンの開発ツール部にて、CAN、LIN、FlexRayなどの車載ネットワークに対応した開発ツールやハードウェア・インターフェイスの提供、サポート業務に従事している。