LIN(Local Interconnect Network)とは
LINとは、Local Interconnect Networkの略称で、車載ネットワークのコストダウンを図ることを目的に、欧州の自動車メーカ、半導体メーカを中心としたLINコンソーシアムで規定を策定された通信規格です。
LIN仕様は改訂が繰り返され、車載ECUへはLIN Revision 1.3、2.0、2.1の3種類が主に使用されていますが、LINコンソーシアムとしての改訂は、LIN Revision.2.2Aが最後になりました。現在はISOに移管され、2016年8月にはISO17987としてLIN仕様が発行されています。LINは、CANのサブバスとして位置づけられており、CANと比較して低コストのネットワーク構築が可能です。
LINの特長
◆LINのスレーブノードは、マスタノードが送信するメッセージフレームに組み込まれた時間補正用基準波形を計測し、
伝送ボーレートをその都度、補正します。
◆CANプロトコルと比較して、大幅なコスト削減が可能です。
(1)部品コストの削減(部品点数の削減、廉価部品への変更)
・ワイヤが2本から1本へ
・MCU用発振子が水晶/セラミック発振子からRC発振またはマイコン内蔵発振回路へ
・トランシーバが差動式AMPからコンパレータ方式へ
(2)部品点数削減によるアセンブルコストの削減
(3)通信ソフト開発負荷の削減
・ネットワークマネジメントが容易であり、開発負荷が小さい
・インプリ用コンフィグレータ、適合試験仕様あり
◆CANのサブネットワークとして普及しています。
LINの活用事例
パワートレイン制御やシャシー制御ほど大量の情報や高速な通信速度、信頼性を必要としないセンサやアクチュエータなどの制御に採用され、車載向けサブネットワークシステムを構築します。

LINのネットワーク構築例

他プロトコルとの位置付け

LINはCANやFlexRayに比べ、通信速度が遅く、1ノードあたりの開発コストが安価。
CANやFlexRayほどの通信速度や情報量を必要としないネットワークで使用され、ボディー系システムにおけるデファクトスタンダードとして、堅調に普及しています。

LINプロトコルについて
LIN Revision
LINは仕様の改訂が繰り返され、現在では、Rev.1.3、2.0、2.1の3種類のRevisionが主に採用されています。
これまで主に、日本では、Revision 1.3海外では、Revision 2.0、2.1が採用されていましたが、日本でもRevision 2.xの採用が進んでいます。

LINの概要仕様
ネットワーク構成 | 1マスタ、多スレーブ(最大16ノード) |
ネットワークマネジメント | シングルマスタ方式(アービトレーション動作は禁止) |
伝送路 | 廉価なシングルワイヤ方式(ISO9141準拠) 最長40m |
通信方式 | UART(半2重方式、転送データ長8ビット、1ストップビット) |
発振子精度 |
・マスタノード 最大許容誤差 0.5%以内 ・スレーブノード 最大許容誤差 同期補正あり 15%以内(Revision 1.3) 14%以内(Revision 2.0、2.1、2.2) 同期補正なし 15%以内 |
伝送ボーレート | ~20kbpsまで |
同期方式 | フレーム毎に補正 |
その他特徴 | Wake up/Sleep機能サポート |
LINのバス仕様
LINのバスは、バッテリー電源をそのまま使用し、オープンコレクタのトランシーバとプルアップ抵抗を使用したシングルワイヤーで構成されます。

バスのレベル
バスのレベルには、”ドミナント”と”レセシブ”があります。
LINトランシーバは、ISO9141に 準拠したもので、電気特性としては通常9~18Vの範囲で動作しますが、LINトランシーバは40Vの過電圧に耐えられる仕様でなければいけません。
論理レベル | 論理値 | 電圧レベル |
ドミナント | 0 | GND(グランド) |
レセシブ | 1 | バッテリー(8V~18V) |

LINの回路例

上記は、サニー技研製CAN FD評価ボード《S810-TPF-FD121》の回路図から一部抜粋、改変したものとなります。
LINフレーム構成
LINのメッセージフレームにはヘッダとレスポンスがあります。以下の表記はISO17987版LINフレーム構成になります。
ヘッダはマスタノードが出力するフレームです。次の3つのフィールドで構成されています。
・break field :フレームの始まりを表す。
・sync byte field :各ノードの周波数誤差を調整する。
・protected identifier field :ID、DLCとParityから構成される。スレーブのノード指定を意味する。
レスポンスはマスタノードまたはマスタノードが指定したスレーブノードが出力するフレームです。
次の2つのフィールドで構成されています。
・data1-data8 :データの中身。
Revision1.3では、2、4、8バイトの3種類。
Revision2.0以降では、0~8バイトの任意の長さが定義可能。
・checksum :エラー検知用のチェックサム。モジュロー256の計算式の演算結果を反転したもの。

LINの通信イメージ
LINは、スケジュールに基づいた通信を行います。そのため、通信の衝突が起きませんが、何かデータを送信したい場合でも、予め決まった送信タイミングまで待つ必要があります。
通信スケジュールはマスタノードが管理し、必ずマスタノードの送信から通信が始まります。また、マスタノードは複数のスケジュールを持ち、切り替えて使う事も可能です。

送信
LIN通信プロトコルはシングルマスタ方式で、マスタノードの指示がないかぎりスレーブノードはデータを送信できません。転送データ長8ビット、1ストップビットのUART形式でLSBファーストで送信します。
受信
受信動作に関して規定はありません。他のスレーブノードが出力しているデータも受信します。

基準クロックの調整
マスタノードはsync byte filedで”0x55″を送信します。スレーブノードは受信したsync byte fieldのスタートビットのエッジから4回分のエッジ間を時間計測し、その結果を8で割ることにより、1ビットの正確な時間(1ビットタイム)を算出します。そして、この計測時間からUARTの伝送ボーレートの調整を行います。また、算出された1ビットタイムからbreak field(ドミナント13ビット)が規定範囲にあるか否か確認します。

Sleep&Wake up機能
LINはシステムの消費電力を減らすために、スリープ/ウェイクアップ機能をサポートしています。
【スリープモードへの遷移条件】
マスタノードは自ノードによる判断でスリープモードへ遷移します。
スレーブノードはマスタからのスリープ要求(go-to-sleep)があった場合とRevision2.0以降では、LINバスに一定時間(Revision2.0では4s以上、Revision2.1以降では4s~10s)以上、通信がなかった場合にスリープモードへ遷移します。

【スリープモードからの復帰】
マスタノード、スレーブノード共にウェイクアップシグナルを受信した時、もしくは自ノード内のLIN以外の外部要因によって復帰します。

【異常動作時】
ウェイクアップ要求から150msの間にマスタノードがヘッダを送信しない場合は、ウェイクアップ要求を行ったノードが新たなウェイクアップ要求を出します。3回のウェイクアップ要求が失敗した時、ウェイクアップ要求ノードは1.5s以上の待ち時間が必要となります。

エラーの種類
LINでは、バスの異常やノードの故障を検出するために、6種類のエラーを規定しています。
また、具体的にエラーの規定をしているのは、Revision 1.3のみとなります。

ビットエラー(Bit Error)
検知:マスタ/スレーブ
送信ノードが送信したレベルと、バス上のレベルを比較し、一致していなければ、エラーを検出します。
エラー検出時は次のバイト境界で送信を中断します。

チェックサムエラー(Checksum Error)
検知:マスタ/スレーブ
受信したデータと、受信したチェックサムを加えた結果が≠0xFFならばエラーを検出します。

IDパリティエラー(Identifier Parity Error)
検知:スレーブ
スレーブノードが受信したprotected identifier fieldのParty0とParty1がIDとDLCから算出した値と異なる場合にエラーを検出します。

ノーレスポンスエラー(Slave Not Responding Error)
検知:マスタ/スレーブ
マスタノードがヘッダを送信し、一定時間に指定したスレーブノードからレスポンスが返ってこなかった場合にエラーを検出します。

シンクフィールドエラー(Inconsistent Synch Field Error)
検知:スレーブ
sync byte filedでの計測結果があらかじめ設定されているボーレートから許容範囲外の場合にエラーを検出します。

フィジカルバスエラー(Physical Bus Error)
検知:マスタ
LINバスがグランド又はバッテリ(VBAT)にショートしている場合などLINバス上に有効なメッセージを送信できない場合のエラーです。

CANとの比較
LIN | CAN | |
ネットワーク構成 | シングルマスタ(調停禁止) | マルチマスタ |
通信速度 | Max 20Kbps | Max 1Mbps |
伝送路 | 1線式 | 2線式(一部1線式) |
トランシーバ | コンパレータ方式 | 差動式 |
通信方式 | 半2重方式(NRZ方式) UART+ソフトまたは専用ハード |
半2重方式(NRZ方式) 専用ハード |
発振子 | ・Max許容誤差 マスタ :0.5% スレーブ:同期補正あり 15%(Revision1.3) 14%(Revision2.0以降) 同期補正なし 15% ・水晶/セラミック発振子、RC発振、マイコン内蔵 発振回路 |
・Max許容誤差 1.58% ・水晶/セラミック発振子 |
同期方式 | ・データフィールド毎にスタートビット立下り エッジに対し、受信ノードが同期 ・スレーブがマスタから送信されるフレームに必ず 存在するビットレート補正用のフィールドを受信 することによって常に通信速度を補正 |
レセシブ→ドミナントの立下りエッジに対し、全てのノードが同期を合わせる |
適応箇所 | 主にボディ系のスイッチやランプなどのオン・オフユニット用のサブネットワークとして使用 | 自動車の中の基幹ユニットのメインネットワークとして使用 |
LIN通信をさらに学ぶには
車載LAN入門講座 LIN通信編のご案内
オンライン学習プラットフォーム「Udemy」にて、LIN通信入門講座を開設しています。「1から学ぶLIN通信」として、LIN通信の成り立ちから、自動車分野でよく使用されるRevision1.3、Revision2.xを中心としたプロトコルを基礎から学習できます。

講座概要
- LINの成り立ちや通信の特徴
- Revision1.3とRevision2.xを中心としたLIN通信プロトコルについての解説
- LIN通信におけるルール、通信の処理方法
- LIN通信のメッセージ構成と使用方法
- LIN通信のエラーの検出方法について
- LIN通信のSleep & Wakeup機能について
コースの内容
- はじめに
- 第1章 LIN(Local Interconnect Network)とは
- 第2章 LINフレームの構成とエラーの仕組み
- 第3章 LINのスケジュールと送受信シーケンス
車載LAN入門講座 LIN通信編の詳細は、以下のリンクからご覧ください。(Udemyサイトへリンクします)
サニー技研のLIN通信への取り組み
サニー技研では、2000年からLIN通信への取り組みをスタートしています。これまで、LINバスアナライザ、CAN/LIN評価ボード、 LIN通信を行うためのソフトウェアライブラリなどの製品開発を手がけてきました。 サニー技研のLINツールは、LIN対応製品の開発をトータルに支援していますので、多くのお客様に採用していただいております。 こうした製品開発の実績からサニー技研は、お客様のニーズに最適なソリューションをご提供します。