車載ネットワーク「LIN」入門

車載ネットワーク「LIN」入門(3)

LIN2.0/LIN2.1の新仕様

倉田 正人 ベクター・ジャパン 2010/11/16

自動車のパワーウィンドウやミラー調整、電動シート、ドアロックなどのボディ制御に使われる通信プロトコル「LIN(Local Interconnect Network)」。本稿ではその基礎から、フレーム構造やネットワークマネジメントといったLINの仕様までを詳しく解説する。(編集部)

- 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通信は、マスターノードが通信制御を行うため、スレーブノードは診断テスターと直接通信できません。そのため、マスターノードを経由して行います。

LIN2.0で追加された「診断」の仕様
図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)

表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バイトのシングルフレーム)」が格納されます。

非分割送信について(1)
図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)

非分割送信について(2)
図4 非分割送信について(2)画像提供:ベクター・ジャパン)

分割送信(マルチフレーム送信)
 送信するデータが、1つのフレームに収まらない場合に使用されます。マルチフレームには、最初のフレーム「First Frame(FF)」と2つ目以降のフレーム「Consecutive Frame(CF)」の2種類があります。

分割送信について
図5 分割送信について画像提供:ベクター・ジャパン)
マルチフレームの最初のLINフレームはFF、2つ目以降はCFと呼ばれる。すべてのデータが送信されるまでCFを送信する

 また、LIN2.1では1つのマスターリクエストフレームで全スレーブノードに診断要求を行う「ファンクショナルアドレッシング」の仕様が追加されました。ファンクショナルアドレッシングで送信する場合、ノードアドレスには「ファンクショナルノードアドレス(0x7E)」が格納されます。

  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

- PR -
@IT Sepcial

震災関連・復興支援情報

震災関連・復興支援情報
@IT MONOist/EE Times Japan/環境メディアの製造業技術者向け3メディアを中心に、震災関連/復興支援情報を集めました

次世代エンベデッドコーナー

次世代エンベデッド
“次世代”の組み込み機器を開発するエンジニアを支援するコーナー。新潮流・新技術をインタビューやコラム、解説記事で分かりやすく紹介!

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報

- PR -