【車載ネットワーク】CANメモ

歴史

CANはRobert Boschによって1986年に仕様が公開され,
1994年には国際規格(ISO11898)となった.
現在最も普及している車載ネットワークプロトコル

特徴

ライン型構造

単純にバスに各ノードを接続していく.
ネットワークがシンプルで,設計も容易

マルチマスター方式

ライン型で接続される各ノードに平等なバスアクセスが可能
メリットとして以下がある

  • 各ノードを均一仕様で設計できる
  • 各ノードに優劣がないため,イベント指向通信に向いている
  • ノードの追加接続が容易である

CSMA/CA

複数のノードから同時にデータが送信される場合,
優先度が高いものを衝突させずに送信するような仕組みがある.

IDを使用したメッセージアドレッシング

前述の優先度に応じた送信を実現するために,
CANでは「ID」を使用したメッセージアドレッシングを採用している.
データ中にIDを付加して送信し,受信する側は,このIDによって,
「どのようなデータか」「自分が使用するデータか」がわかる.

耐ノイズ性にすぐれた物理層

車載機器は外部ノイズにさらされる.
CANではノイズの影響を小さくする方式を採用.
2本線(ツイストペア)を使用し,それらの先に流れる電圧の差によってデータを送信する.
この方式では,外部からノイズが混入した場合でも,混入ノイズの電圧はほぼ同一となるため,
電圧の差に対する影響は小さい.

優れたエラー検出機構

CANでは様々なエラー検出メカニズムを実装している.

データの一貫性

CANでは,一台のノードが受信に失敗した場合でも,
データを受信したすべてのノードがデータを破棄し,
全ノードが受信に成功するまでこれを繰り返す.

キーワード

ドミナントとレセシブ

CANでのデータ伝達はデジタル.
送信されるデータを0と1の2進数に変換する.
0をドミナント
1をレセシブという.

0と1が同時に別のノードから送信された場合にはドミナントが優先となる.

シグナルコーディング

NRZ(Non-Return-to-Zero)方式で,送信したいデータを変換して送信する.

通信速度

CANでは1回に送信できるデータ量は最大8bytes,
最大通信速度は1Mbps

同期

ECUはノードを多数持っている
ノード内では,基準時間(システムクロック)を作り出す水晶発振子を持っている.
このシステムクロックのずれを補正するために,
同期制御を行っている.

ビットスタッフィングルール

ビットスタッフィングルールとは,
「バス上で同じ状態が5回連続した場合,それまで送信されていた状態と反対のビットを一つ挿入する」仕組み.

CANプロトコル

CANには4つのフレームタイプがある.

データフレーム

CANで実際にいろいろなデータを含むものをデータフレームという.
このデータフレームは2種類.
標準フォーマット(11bit)と拡張フォーマット(29bit)

標準フォーマット

CANの基本的な標準フォーマットについて.
http://www.keyence.co.jp/keisokuki/special/recoder/labo/candata/mechanism/img/candata_mechanism_02.gif
http://www.keyence.co.jp/keisokuki/special/recoder/labo/candata/mechanism/img/candata_mechanism_02.gif

レセシブとドミナント
上の線はレセシブ,下の先はドミナントを表す.
上の線しかない部分はレセシブ固定.
下の線しかない部分はドミナント固定.
両方に線がある部分は,送信データによってドミナントかレセシブか変化.

ビット長
各部の数字は何ビット分子容するかの長さを表している.

バスアイドル
CANでは通信が行われていない時には,バスはレセシブとなる.
(1なのは意外)

SOF(Start of Frame)
ノードからデータが送信されるとき,最初に送信される部分はドミナントとなる.
バスアイドルのときレセシブだったものが,ドミナントへ変化することで,同期できる.

ID
SOFにつづいて送信される.
データ内容や送信ノードを識別するために使用される.

RTR(Remote Transmission Request)
データフレームをリモートフレームと識別するために使用される.
データフレームの場合はドミナントになる.

コントロールフィールド
1ビットのIDE(Identifier Extension),予約ビットrと4ビットのDLC(Data Length Code)から構成される.

データフィールド
送信されるデータの部分.
DLCによって設定されたデータ長となる.

CRCシーケンス
送信ノードと受信ノードがそれぞれ,
SOF, ID, コントロールフィールド,データフィールドの値を演算する.
送信側はCRCに載せ,受信側は演算結果とCRCを比較する.

CRCデリミタ
CRCシーケンスの終了を表す.

ACKスロット
送信ノードはこの部分でレセシブの送信を行う.
受信ノードは,CRCフィールドまで正常に受信できた場合は,ドミナントを確認応答として送信する.

ACKデリミタ
ACKスロットの終了を表す.

EOF(End of Frame)
データの終わり.

リモートフレーム

データフレームの要求に使用される.
基本構造はデータフレームからデータフィールドを取り除いたもの.

オーバーロードフレーム

CANコントローラが前回のフレームの処理をまだ完了していない時に,次のフレームの開始を遅延させるために用いる.

エラーフレーム

通信中に各種エラーが起きた時に送信されるフレーム

通信調停

CSMA/CAでは,バス使用中はデータフレームやリモートフレームを送ることはできない.
しかし,同時に送信してしまうことはある.
この場合に「通信調停」を行う必要がある.

この通信調停はIDとRTRをもとに行われる.
IDが小さいほど優先順位が高くなる.
IDの割当は,設計者が自由に割り当てられる.

同じIDのデータフレームとリモートフレームが送信された場合,
RTRでドミナントであるデータフレームが優先される.

エラー検出

送信ノードでの監視

ビットモニタリング

送信データとバス上を流れるデータをサンプリングしたものとの相違をチェック

フォームチェック

CRCデリミタ,ACKデリミタ,EOFがレセシブになっているかチェック

ACKチェック

受信内容とCRCを比較.
正常なときは送信ノードにACKを送信.

受信ノードでの監視

CRCチェック
フォームチェック
スタッフチェック

エラー検出時の動作

用語備忘録

ワイヤーハーネス

電源供給や信号通信に用いられる複数の電線を束にして集合部品としたもの.
自動車の車内配線など,多くの電気配線を必要とする多様な機械装置で用いられている.

バス通信

システムのモジュール間で,データや制御情報などをやり取りするための専用の通信路のこと