- - PR -
前回までは、LINプロトコルの特徴やフレーム構造、フレームタイプといったLINプロトコルの概要について説明しました。
最終回となる今回は、LIN2.0/LIN2.1で追加された「ステータスマネジメント」「診断」「ノードコンフィグレーションと識別」「ノード機能ファイル」について詳しく説明します。
1.ステータスマネジメント
LIN2.0では、各スレーブノードがエラーを検知した際に、マスターノードに報告するステータスマネジメントが追加されました。
これにより、マスターノードはエラーの発生や原因となるノードの特定ができるので、より適切なリカバリ制御や処理が可能となります。ただし、連載第2回でも説明したとおり、LINの仕様にはエラー処理が定義されていないため、別途アプリケーションで定義する必要があります。
各スレーブノードは、マスターノードにエラー状況を報告するために、送信するアンコンディショナルフレームの1つ(ステータス管理フレーム)に、1ビットのレスポンスエラー(response_error)シグナルを定義します。
このレスポンスエラーシグナルは、フレームのレスポンスでエラーが検出された場合にスレーブノードのドライバにより自動的に設定されます。また、ステータス管理フレームの送信が完了すると、このシグナルは自動的にクリアされます。
2.診断
車載ネットワークにおける“診断”とは、ECUが自身の状態を判断すること、または外部からECUの状態を読み出し判断することにより、ECUの故障を診断するものです。
外部から診断を行う場合、診断テスターなどの「情報を読み出す側」から「対象となるECU」に対し、「診断要求(リクエスト)」を送信します。診断要求を受信したECUは要求に応じた処理を行い、「診断応答(レスポンス)」によって結果を返信します。
この診断応答には、受信した診断要求を正常に処理できた場合に送信される「肯定応答(ポジティブレスポンス)」と、エラーなどで処理できなかった場合に送信される「否定応答(ネガティブレスポンス)」の2種類があります。
LIN2.0では、この診断の仕様が追加されました。マスターノードとスレーブノードでは、以下のように診断の方法が異なります。
・マスターノードを診断する場合
マスターノードは、通常CANなどの基幹ネットワークと接続されます。そのため、LINではなく基幹ネットワークを使用します。
・スレーブノードを診断する場合
LIN通信は、マスターノードが通信制御を行うため、スレーブノードは診断テスターと直接通信できません。そのため、マスターノードを経由して行います。
![]() |
図1 LIN2.0で追加された「診断」の仕様 (※ベクター・ジャパンの資料を基に作成) ※マスターノードの診断(左図)は、CANなどの基幹ネットワークを使用する。スレーブノードの診断(右図)は、マスターノードを経由(ゲートウェイ)して、LINネットワークを使用する |
このように、LIN通信を用いた診断はスレーブノードに対してのみ使用され、マスターノードはスレーブノードに診断要求を、スレーブノードはマスターノードに診断応答を送信します。
次項では、診断で使われる通信手順「トランスポートプロトコル」について説明します。
トランスポートプロトコルとは
トランスポートプロトコルとは、OSI参照モデルのネットワーク層の通信手順で、LINでは8バイトを超えるデータを分割して送受信する際に使用します。LINのトランスポートプロトコルは、基本的にCANで使われている「ISO 15765-2」と同じで、データバイト内の一部に特別な情報を格納して送信されます。
LIN2.xでは、このトランスポートプロトコルを診断、ノードコンフィグレーションと識別に使用します。
トランスポートプロトコルを用いた通信では、診断フレーム(ID:0x3C、0x3D)を使用します。マスターノードは、対象となるスレーブノードに「マスターリクエストフレーム(ID:0x3C)」を送信し、診断要求(リクエスト)や設定の変更などを行います。また、診断要求を受信したスレーブノードは「スレーブレスポンスフレーム(ID:0x3D)」を使用し、診断応答(レスポンス)や設定変更の結果をマスターノードに送信します。スレーブノードの識別には、スレーブノードごとに割り振られたノードアドレス(NAD)を使用します(図2)。
![]() |
図2 スレーブノードの識別 (※画像提供:ベクター・ジャパン) ※診断フレームのフレームIDは共通となるが、NADを使用することでスレーブノードごとに個別の診断フレームを送信できる |
トランスポートプロトコルのLINフレーム(データバイト)構造
トランスポートプロトコルを使用した場合、データバイトには下記の値が格納されます(表1)。
名称 |
意味 |
| NAD(Node Address) | ノードを特定するために各スレーブノードに割り振られたアドレス。データバイトの1バイト目に格納する |
| PCI(Protocol Control Information) | 上位4ビットで「フレームの種類(PCIタイプ)」、下位4ビットで「データ長」を表す。データバイトの2バイト目に格納する ・上位4ビットが0000:Single Frame(SF) ・上位4ビットが0001:First Frame(FF) ・上位4ビットが0010:Consecutive Frame(CF) |
| LEN(Length) | データ長。最大4095バイト |
| SID(Service Identifier) | 診断要求の意味(サービス)を表す |
| RSID(Response Service Identifier) | 診断応答の意味(サービス)を表す。SIDに0x40を加算した値が格納される (SIDが「0x10」の場合、RSIDは「0x50」となる) |
| Err(Error Code) | 否定応答で使用し、エラーの意味を表す |
| D1〜D6 | データバイト。SID、RSIDにより格納する情報が異なる。各フレームのデータ長は8バイト固定で、使用しないデータバイトには「0xFF」が格納される |
トランスポートプロトコルの送信方法には、下記の2種類があります。
- 1つのフレームで送信する「非分割送信(シングルフレーム送信)」
- 複数のフレームを使用して送信する「分割送信(マルチフレーム送信)」
●非分割送信(シングルフレーム送信)
送信するデータが、1つのフレームに収まる場合に使用されます。PCIには「0x01〜0x06(データ長1バイトから6バイトのシングルフレーム)」が格納されます。
![]() |
図3 非分割送信について(1) (※画像提供:ベクター・ジャパン) ※データバイトの最初3バイトにNAD、PCI、SID(RSID)を格納するため、シングルフレームで送信できるデータはSID(RSID)を含め、最大6バイトとなる。つまり、SIDを含めて7バイト以上のデータを送信する場合はマルチフレームを使用する |
受信したスレーブノードが要求を処理できない場合(受信したサービス(SID)が未対応など)、否定応答となります。否定応答ではサービスに関係なく、PCIは「0x03(データ長3バイトのシングルフレーム)」、RSIDは否定応答を表す「0x7F」になります。また、D1はSID、D2はエラーコード、D3〜5は使用しないため「0xFF」になります(図4)。
![]() |
図4 非分割送信について(2) (※画像提供:ベクター・ジャパン) |
●分割送信(マルチフレーム送信)
送信するデータが、1つのフレームに収まらない場合に使用されます。マルチフレームには、最初のフレーム「First Frame(FF)」と2つ目以降のフレーム「Consecutive Frame(CF)」の2種類があります。
![]() |
図5 分割送信について (※画像提供:ベクター・ジャパン) ※マルチフレームの最初のLINフレームはFF、2つ目以降はCFと呼ばれる。すべてのデータが送信されるまでCFを送信する |
また、LIN2.1では1つのマスターリクエストフレームで全スレーブノードに診断要求を行う「ファンクショナルアドレッシング」の仕様が追加されました。ファンクショナルアドレッシングで送信する場合、ノードアドレスには「ファンクショナルノードアドレス(0x7E)」が格納されます。
関連記事 カーエレクトロニクス
組み込み開発フォーラム 新着記事
- フルスクラッチの“Hello World”を動かしてみよう(2011/3/31)
- FlexRayプロトコルの概要(その2)(2011/3/29)
- JASA、東北地域に拠点を置く会員企業を支援(2011/3/25)
- NEC、震災の影響を受けた4拠点の生産再開を発表(2011/3/23)
- 内部ブロック図の基礎と共通要素(2011/3/22)
- インテル、被災地におけるITインフラの復旧を支援(2011/3/22)
- Facts on AUTOSAR/AUTOSAR導入の現実(2011/3/18)
- 計測器・震災被害ホットラインを開設、テクトロニクス(2011/3/18)
- ZMP、地震の揺れを多角的に計測するアプリ無償配布(2011/3/16)
- メンター、3Dテレビ・マルチメディア検証プラットフォーム(2011/3/16)
- 【番外編】タチの良い計測値、悪い計測値とは?(2011/3/15)
- tarファイルシステムをAndroidに組み込む!!(2011/3/10)


















