You dont have javascript enabled! Please enable it!

CANバス

科目:

  • はじめに
  • XNUMX台の車両に複数のネットワークが搭載
  • ノードを備えたCANネットワーク
  • さまざまな種類の CAN 速度
  • CANバス信号
  • 速度と電圧レベル
  • (標準) 11 ビット識別子の CAN バス メッセージの構造
  • (拡張) 28 ビット識別子の CAN バス メッセージの構造
  • ビットスタッフィングおよび CRC および ACK デリミタを使用したエラー認識
  • ツイストペア配線
  • 終端抵抗
  • ゲートウェイ
  • CANバス上での測定

導入:
現代の車両には電子機器が満載されています。 制御ユニットはセンサーからデータを収集して処理し、アクチュエーターを制御します。 異なる ECU が同じデータを使用することがよくあります。アクセル ペダル位置センサーは、アクセル ペダルの位置を記録します。 この信号は配線を介してエンジンECUに直接送信されます。 この信号を使用する ECU はエンジン ECU だけではありません。

  • エンジン ECU は、アクセル ペダル位置センサーからの信号を使用してスロットル バルブを制御し、加速時にインジェクターをより長く作動させ、点火時期を調整し、必要に応じて点火時期を調整することで加速を強化します。 ターボのウェストゲートまたは VGT 調整を制御します。
  • オートマチック トランスミッションの ECU は、アクセル ペダルの位置を使用してオートマチック トランスミッションのクラッチのシフト時間を決定します。 アクセルペダルを軽く踏むと、アクセルペダルを半踏みしたときよりも低速でオートマチックトランスミッションがシフトアップします。 アクセルペダルを急に速く踏むと、低いギアにシフトしてエンジンの回転数が上がる「キックダウン」が発生します。
  • カーブでの加速度は、ESP-ECU がエンジン出力を低下させ、必要に応じて ESP に介入させる理由になる場合があります。 回転する車輪にブレーキをかけること。

ESP 介入中は、スロットル バルブが (部分的に) 閉じられ、噴射される燃料が少なくなるため、エンジン出力が低下します。 インストルメントパネルの表示灯も点灯または点滅し、ESP が作動していることをドライバーに警告します。

上記は、異なる ECU 間の連携を明確に示しています。 CAN バスにより、ECU が相互に通信できるようになり、相互にデータを交換できるようになります。 CAN は、Controller Area Network の略称です。 

エンジンECU
エンジンルーム内にエンジンECUを内蔵

80 年代には、自動車にはますます多くのアクセサリが追加され、メーカーは制御装置を取り付け始めました。 各機能には個別のワイヤーがありました。 その結果、ワイヤの太さとプラグ接続の数が大幅に増加しました。
太いワイヤーハーネスは、内装の裏側に隠すのが難しく、故障のリスクが大幅に高まるという欠点があります。

CAN バスでは、ECU は CAN-high と CAN-low の XNUMX 本のワイヤのみで通信します。 ECU 間のすべての通信は、これら XNUMX 本のワイヤを介して提供されます。 私次の XNUMX つの画像は、CAN バスを使用すると XNUMX つのドア上のワイヤの数がすでに大幅に減少していることを明確に示しています。

CAN バス上の XNUMX 本の CAN バス ワイヤに数十の制御デバイスを接続できます。 接続されているすべての制御デバイスは相互にデータを交換できます。

 

下の画像は、XNUMX 個の制御デバイス (赤いブロックで示されている) を備えた車両を示しています。 これらの制御デバイスはすべて XNUMX 本のワイヤで相互に接続されています。 オレンジと緑のワイヤーです。 これらのワイヤは CAN-high と CAN-low を表します。 各制御ユニットには独自の機能があり、CAN バス経由でネットワーク内の他の制御ユニットと通信できます。 制御デバイスに関するさらに実質的な情報は、次のページにあります。 制御装置.

1. トウバー取り付け制御ユニット
2. ドアコントロールユニットRA
3. ドアコントロールユニット RV
4.ゲートウェイ
5. 快適制御装置
6. 警報システム制御ユニット
7. インストルメントパネル
8. ステアリングコラム電子制御ユニット
9. ドアコントロールユニットLV
10. ドアコントロールユニットLA
11.パークディスタンスコントロールコントロールユニット

CANバスの登場でそれも可能 EOBD より包括的な。 EOBDはEuropean On Board Diagnosisの略です。 EOBD は排出ガスに関係しています。 エンジンと排気にあるさまざまなセンサーが情報を ECU に送信します。 数値が正しくない場合(燃焼不良などにより)、MIL(エンジン表示灯)が点灯します。 それは車の状態を読み取る必要があるというサインです。 次に、診断テスターを OBD プラグに接続してエラーを読み取る必要があります。 故障に基づいて、ECU は XNUMX 進数のエラー コードを保存しており、診断テスターに​​よって P コードまたはテキスト付きの故障として表示されます (後者のほうがブランド固有です)。 OBD1、OBD II、EOBD の詳細については、ここをクリックしてください。.

車内の複数のネットワーク:
車内には複数のネットワークが存在する場合があります。 下の画像は、BMW 3 シリーズ E90 の複数のネットワーク内のコントロール ユニットの概要と凡例を示しています。

上の図の K-CAN、PT-CAN、および F-CAN ネットワークは CAN バスに分類されます。 違いは、速度、電圧レベル、およびアプリケーションです。 PowerTrain-CAN と F-CAN は同じ高速速度と電圧レベルを備えていますが、違いは、PT-CAN がエンジンとトランスミッションの制御に使用され、F-CAN にはシャーシ制御ユニットが含まれていることです。

制御デバイスとのCANネットワーク
CAN バス ネットワークは、メッセージを受信、処理、送信するためのハードウェアとソフトウェアを備えた制御デバイスで構成されています。 データ転送には CAN-high ワイヤと CAN-low ワイヤが使用されます。 下の画像では、CAN-High が赤、CAN-Low が青で色付けされています。
制御デバイス (制御ユニットまたはノードとも呼ばれます) はこれらのワイヤに接続されています。 すべての制御デバイスは情報を送信および受信できます。 ネットワークの例としては、車内の CAN バス システムがあります。 ここで、1つのバスシステムには様々な制御機器を接続することができる。

例として、後付けされたリバース カメラ (ノード 5) を取り上げます。 このカメラはナンバー プレート ホルダーまたはハンドルの近くに取り付けられます。 CAN 配線は内部のどこにでも接続されます。 他の制御デバイスがそれを認識する必要があるため、カメラ ノードに正しい識別子 (製造元によって事前にプログラムされた) が含まれていることが条件となります。 カメラがサポートされている無線に登録されている場合、画像はすぐに表示されます。
ソフトウェアをプログラミングした後、ラジオはギアボックスからリバースギアが選択された信号を受信します。 その瞬間、ラジオはバックカメラの映像に切り替わります。 XNUMX 速 (前進) を選択した瞬間、画像は再びオフになります。 これはすべて、CAN バス システムのデータ転送のおかげです。

サポートされていない機器(不正な識別子など)は問題を引き起こす可能性があります。 他の制御デバイスが認識できないメッセージを送信すると、エラー メッセージが生成されます。 このタイプの機器では、イグニッションがオフになった後も CAN バスがアクティブなままであることを保証できます。 そうすれば、車はバッテリーの急速な消耗を引き起こす「スリープモード」に移行しなくなります。 それから、一つあります 秘密の消費者。

CAN バス信号:
CAN バス システムはブロードキャスト原理を使用します。 送信機はメッセージを CAN バスに送ります。 同じバス上のすべてのノードがメッセージを受信します。 ただし、送信者はメッセージ内で、メッセージがどのノードを対象としているかを示します。 すべてのノードがメッセージを受信し、フィードバックを提供します (詳細は後述します)。 メッセージが意図されていないノードはこれを認識し、無視します。

CAN バス信号は、CAN-high 電圧と CAN-low 電圧で構成されます。 下の画像は、CAN-high の赤と CAN-low の青を示しています。 ハイ信号とロー信号は同一ですが、互いにミラーリングされています。 バスが優勢になると、CAN-high の電圧は 2,5 ボルトから 3,5 ボルトに増加し、CAN-low の電圧は 2,5 ボルトから 1,5 ボルトに減少します。 リセッシブ状態(静止時)では、両方の電圧は 2,5 ボルトです。

上の画像は、オシロスコープによる測定例を示しています。 両方の電圧が鏡像でのみ互いに​​同一であることがはっきりとわかります。 最終的に、アクティブ (ドミナント) 領域の電圧差は 2 ボルトになります。 これは、1,5 ボルトと 3,5 ボルトの差を指します。 2 ボルトの差は 0 (ドミナント) とみなされ、0 ボルトの差は 1 (リセッシブ) とみなされます。

(送信) ノードがバイナリ コード「0 0 1 0 1 1 0 1」を送信したい場合、前述の電圧を CAN-High と CAN-Low に適用します (上の例を参照)。 受信ノードはこれらの電圧を再びバイナリ コードとして認識し、2 進コードに変換します。 当該バイナリコードはXNUMX進数からXNUMX次元に変換されます。

8 進数を 1 進数に変換するには、中央に太い線が付いた 2 つのボックスからなる表を描くのが簡単です。 右側のボックスに 4、8、1、2 という名前を付けます (画像内の赤い数字を参照)。 次に左側も同様に行います。 上のバイナリ コードに 8 を付けた数字を書き留めます。 左側では 4 のみ、右側では 1、13、2 です。右側のすべてを加算し (10)、左側でも同じことを行います (11)。 12 進数は 13 から A、2 = B、XNUMX = C、XNUMX = D に変化します。これにより最終的に XNUMXD が作成されます。

XNUMX 進数から (XNUMX 進数) への変換、およびその逆の変換の詳細については、このページを参照してください。 XNUMX進数、XNUMX進数、XNUMX進数。 ここでは明確な例を詳しく説明します。

速度と電圧レベル:
車両では、さまざまな速度の CAN バス ネットワークに遭遇することがあります。

  • 高速: エンジン電子機器、トランスミッション、ABS/ESP、EBS (商用車) などの駆動関連の ECU。
  • 中速または低速: インストルメント パネル、ラジオ、空調制御、パーキング ブレーキ、牽引バーなどの室内電子機器。

以下の 2,5 つの画像は、高速 CAN バスの CAN-high 信号と CAN-low 信号を示しています。 静止状態では、両方の信号の電圧は 2,5 ボルトです。 メッセージを送信するには、CAN High が 3,5 ボルトから 2,5 ボルトに増加し、CAN Low が 1,5 ボルトから XNUMX ボルトに減少します。

CAN高速 (1)

以下に、CAN 高速からの信号が再度表示されます。拡大表示されています (50 分割あたり 200 マイクロ秒)。上記の信号のスコープは XNUMX 分割あたり XNUMX マイクロ秒に設定されています。

CAN高速 (2)

快適なエレクトロニクスでは、通信の高速性はそれほど重要ではありません。 中速または低速 CAN バスの特性、静止時およびメッセージ生成時の電圧レベルは次のとおりです。

  • CAN-high は静止時に 5 ボルトですが、1 ボルトに低下します。
  • CAN-low は静止時 0 ボルトで、4 ボルトまで上昇します。

チャネル A と B のゼロ線が同じ高さに設定されている測定中に、電圧が「互いに滑り込んでいる」ことがわかります。 このため、CAN の高信号と低信号の純度を読み取ることが困難になります。

CAN 低速 (1)

メッセージの純度を評価するには、ゼロ行をシフトすることをお勧めします。 下の画像では、チャンネル A のゼロ ラインが下にシフトされ、チャンネル B のゼロ ラインが上にシフトされています。 これは、図示された信号が分離され、電圧のより明確な推移が見られることを意味します。

CAN 低速 (2)

(標準) 11 ビット識別子の CAN バス メッセージの構造:
CAN バス メッセージの構造は、常に次の図に基づいています。 構造には違いがあります。 たとえば、11 ビット識別子と 29 ビット識別子の ARB および CTRL フィールドは異なります。 以下の情報は 11 ビット識別子に関するものです。 参考までに、29 ビットの識別子には 11 ビットよりも多くのデータを格納できる余地があります。 これについては後で詳しく説明します。

メッセージの構造を簡単に要約します。後で詳しく説明します。

ソフト:
すべての CAN メッセージは SOF (フレームの開始) で始まります。 ノードがメッセージを送信したい場合、ドミナント ビットがバス上に配置されます。 CAN バスは、静止時は常にリセッシブです (1 なので、CAN-High と CAN-Low は両方とも 2 ボルトです)。 ドミナント ビット (0) は、メッセージ全体がポストされるまで他のノードがメッセージの送信を待機する必要があることを示します。 IFS (フレーム間スペース) が経過した後でのみ、次のノードはメッセージを送信できます。 たとえ重要なメッセージであっても、見逃すわけにはいきません。
2 つのノードが同時にメッセージを送信し (お互いのことを知りません)、0 を設定してバスを優勢にしたい場合、ARB (アービトレーション) がどちらのメッセージを優先するかを決定します。

ここから、説明する CAN バス メッセージの各部分には、その部分がこの灰色のイメージに追加されます。 そうやって概要を把握するようにしています。 メッセージは SOF で始まりました。

ARB:
11 ビット識別子の調停フィールドは 2 つの部分で構成されます。 識別子とRTRビット。
識別子:
2 つのノードが同時に CAN バスをドミナントにすると、最も重要度の低いメッセージを持つノードは、重要なメッセージがポストされるまで (IFS 後まで) 待機します。 メッセージの識別子には、一連の 0 と 1 が含まれます。 これらの番号は、プログラマによって意図的にメッセージに割り当てられます。 メッセージ内に 0 が含まれる識別子 (ドミナント) は、メッセージ内に 1 が含まれる識別子 (リセッシブ) よりも高い優先順位を持ちます。 XNUMX のメッセージは続行され、XNUMX のメッセージは待機する必要があります。

どちらの識別子も 11 ビットのメッセージの送信を開始します。 SOF ではドミナント ビットが配置されます。 この場合、両方の識別子の最初の 5 ビットは等しくなります (0 1 1 0 1)。 6 番目のビットは、識別子番号 2 の場合は 0、最初の識別子の場合は 1 です。ドミナントが優先するため、識別子 2 が最終的な CAN メッセージを作成します。
識別子 1 は 6 番目のビットとして 1 を配置します。識別子を送信するノードは、別のノードがバス上に 0 を配置するときに、2 つのノードが同時にメッセージを送信していることのみを認識します。 この時点で、識別子 1 は送信を停止し、受信者として動作します。 0 1 1 0 1 で始まるメッセージは、もともとこのノードが送信したいメッセージであることを意図していましたが、現在はそれを受信メッセージとして扱います。 次に、ノードはメッセージ全体をリッスンし、メッセージに対して何かを行うかどうかを決定します。

SOF の灰色のイメージは、ARB で展開されます。ARB は、識別子と RTR ビットの 2 つの部分で構成されます。

RTR ビット:
11 ビット識別子の最後のビットは RTR と呼ばれます。 これはリモート送信要求ビットです。 この RTR ビットは、データ フレームであるかリモート フレームであるかを示します。
0 = データフレーム
1 = リモートフレーム

データ フレームには、情報を必要とするノードに転送されるデータが含まれています。 ノードは情報を要求することもできます。 たとえば、特定の時点での冷却水の温度がどのくらいであるかなど。 ノードはデータを要求しているため、RTR ビットとして 1 を設定します。

NS:
制御フィールドは、IDE (Identifier Extension)、R ビット、および DLC で構成されます。 IDE ビットは、それが標準 (11 ビット) 識別子であるか拡張 (29 ビット) 識別子であるかを示します。
0 = 標準識別子 (11 ビット)
1 = 拡張識別子 (29 ビット)

R ビットは将来のために予約されており、現在は常にリセシブです。

次に DLC が登場します。CAN バス ネットワークは最大 8 バイトを送信できます。 1 バイトは 8 ビットなので、標準プロトコルに従って合計 64 ビットを送信できます。 制御フィールドは、送信されるデータの量を示します。 確認ビット (オンの場合は 1、オフの場合は 0) のデータ フィールドがすべて空の大きなメッセージを送信するのは無意味です。 バイト数は、適切な DLC (データ長コード) に記載されています。 DLC はプログラミング ソフトウェアの機能であるため、プログラマによって事前に決定される値です。
DLC に 1 バイトが記述されているとすると、8 ビットが送信されます。 短い確認メッセージの場合はこれで十分です。
非常に大規模なメッセージの場合、DLC には最大 8 データ バイトの値が含まれます。

例は再び拡張されました。 IDE、R、DLCが追加されました。

DATA:
送信する必要がある最終データはデータ フィールドに配置されます。 サイズはDLC(データ長コード)の値によって異なります。 DLC が最大 8 バイトであることはすでに示されています。 各バイトは 8 ビットで構成されているため、データ フィールドは合計 64 ビットで構成されます。

CRC:
巡回冗長検査は数学的計算で構成され、メッセージとともに送信されます。 送信ノードは、これまでの合計 CAN メッセージを計算します。 SOF、ARB、CTRL、DATA。 つまり、CRC は計算です。 受信ノードが CRC までのメッセージを受信すると、DATA までの数学的計算を実行し、それを CRC の計算と比較します。 これが一致しない場合 (不正なビット/障害により)、メッセージは受け入れられず、(特定の最大試行回数で) メッセージの再送信要求が行われます。 この例は CRC を含むように拡張されています。

確認:
「Acknowledge」フィールドは、受信の確認に使用されます。 送信者がメッセージを CRC に送信すると、一種の一時停止が挿入されます。 トランスミッタはバスをリセッシブ (0) にし、1 つ以上のノードがバスをドミナント (1) にするまで待ちます。 XNUMX つのノードがメッセージを受信した場合、メッセージは正常に送信されたことになるため、XNUMX つ以上のノードがメッセージを受信したかどうかは関係ありません。 バスが XNUMX でドミナントになった後、メッセージ送信が再開されます。

EDF:
End Of Frame は 7 つのリセッシブ ビット (1 1 1 1 1 1 1) で構成されます。 これは、すべてのコントロール ユニットに対してメッセージが終了したことを示すサインです。

IFS:
中断を防ぐために、フレーム間スペースは常に EDF の後に使用されます。 IFS は 11 個のリセッシブ ビットで構成されます。 すべてのノードは、メッセージを送信する前に、これらの 11 個の劣性ビットが通過するのを待ちます。 たとえば、これらの 11 個のリセシブ ビットの後、2 つのノードが同時にメッセージを送信できます。 次に、ARB (アービトレーション) が再度調べられ、どのメッセージが最も高い優先度を持つかを決定します。 その後、サイクル全体が再び始まります。

(拡張) 28 ビット識別子の CAN バス メッセージの構造:
11 ビットの識別子は、自動車にまだそれほど多くの制御デバイス (ノード) が備わっていなかった時代に設計されました。 プログラマは、11 ビットの識別子では十分ではないことにすぐに気づきました。 これには (2^11) = 2048 通りの可能性しかありません。 このうち、バイナリ コードの一意の組み合わせは 2032 通り残っています。 拡張された 28 ビット識別子のおかげで、現代の自動車はさらに多くのコードを使用するようになりました。 これを拡張識別子と呼びます。
これは、(2^29) = 536870912 以上の組み合わせが可能であることを意味します。 将来的にはこれで十分です。
CAN バス メッセージでは多くのことが変更されます。 両方の識別子 (標準と拡張) は同じ意味で使用されます。 したがって、CAN メッセージは、どの種に関するものであるかを示し、その後に長いメッセージが続きます。
11 ビット識別子の基礎が使用され、読み取られる前の準備としても機能します。 現在は、メッセージが 29 ビット識別子の場合にメッセージに加えられる変更のみが示されています。
SOF (フレーム開始) は変わりません。 送信ノードは、メッセージの送信を開始すると、そのノードをドミナントにします。
これに ARB と CTRL が続き、相違点があります。

ARB:
調停中、標準の 11 ビット識別子が最初に表示されます (つまり、29 ビットの一部)。 RTR ビットは (11 ビットと同様に) ARB の最後に移動されます。 RTR は SRR: (代替リモート要求) に置き換えられました。 拡張識別子の場合、このビットは常にリセシブ (1) です。
SRR ビットの後には、CTRL (制御フィールド) の 11 ビット識別子にある IDE ビットが続きます。 これは現在、制御フィールドから削除され、拡張識別子の SRR ビットの後ろに配置されています。

わかりやすくするために、以下の画像は標準 (11 ビット) 識別子と拡張 (29 ビット) 識別子を示しています。

標準の 11 ビット識別子
拡張29ビット識別子

IDE ビットは、Identifier Extension を表します。 IDE ビットは、それが標準識別子であるか拡張識別子であるかを決定します。
IDE 0 = 標準 (11 ビット ID)
IDE 1 = 拡張 (29 ビット ID)

IDE ビットの後に、残りの拡張識別子が続きます。 11 ビットと 18 ビットを合わせると 29 になります。CAN プロトコルが正しくなくなるため、これらをまとめてメッセージに含めることはできません。 基本的に、IDE ビットは、メッセージが XNUMX つに分割されたことを示します。

NS:
したがって、制御フィールドは拡張識別子用に変更されました。 IDE ビットは ARB に移動されました。
IDE ビットは R ビット (スペア) に置き換えられます。 これはデフォルトでは劣性です。 これに R ビットと、メッセージが何バイトで構成されるかを示す DLC (データ長コード) が続きます。

もう一度、11 ビットと 29 ビットの両方の識別子の制御フィールドが示されています。

11 ビット IDE からの CTRL
29 ビット IDE からの CTRL

ビットスタッフィングおよび CRC および ACK デリミタを使用したエラー認識:
ビットスタッフィング:
送信ノードと受信ノード間の最適な同期を維持するために、ビット スタッフィングが適用されます。 ビットスタッフィングとは、5 つの同一ビットの後に反対のビットを追加することを意味します。 最初に送信されたメッセージではビット値は変更されませんが、ビットが追加されます。
受信機はこれを認識します。 5 つの同一ビットの後、受信機は 6 番目のビットをクリアします (下の図を参照)。

6 だけの元のメッセージが送信されますが、送信者は 0 ビットごとに XNUMX を追加します。 メッセージの長さはゼロによって増加します (ただし、この長さは DLC (データ長コード) にはカウントされません。受信側は反対のビット (ゼロ) をフィルターで除外し、XNUMX だけでメッセージを再度読み取ります。

CRC および ACK デリミタ:
デリミタは CRC フィールドと ACK フィールドの後に配置されます。 これは、送信側と受信側の両方にとって既知の値を持つビットです。 メッセージにエラーが発生した場合、この値は異なります。 その後、受信側は予想とは異なるビット値を受信し、メッセージをエラーとしてマークします。 送信者はメッセージを再送信します。

ツイストペア配線:
ツイストペアケーブルは、CAN バスのケーブル配線として使用されます。 次に、CAN-High ケーブルと CAN-Low ケーブルを図に示すように撚り合わせます。 このようにして、外部からの干渉が回避されます。 数十分の XNUMX ボルトの誘導が一方のケーブルに入ると、もう一方のケーブルにも影響します。 ただし、CAN のハイとローの電圧差は変わりません。 これにより、障害が解決され、ECU は影響を受けなくなります。

終端抵抗:
終端抵抗は、あらゆる高速 CAN バス ネットワークで使用されます。 これらは、CAN バス ライン (ワイヤ) の終端のノードや配線に組み込まれることがよくあります。 これらの抵抗器の抵抗値はそれぞれ 120Ω (オーム) です。 ワイヤ上の抵抗を測定すると、交換抵抗は 60Ω と測定されます。

これらの終端抵抗は干渉抑制の役割を果たします。 これらが存在しない場合、反射が発生します。 電圧信号は CAN バス ワイヤを伝わり、終端に到達して戻ってきます。 後者は阻止されます。 電圧は抵抗器に記録されます。 反射により電圧信号が跳ね返り、送信されるメッセージに影響を与え、その後制御装置が誤動作する可能性があります。

ゲートウェイ:
自動車には制御装置(ノード)のネットワークが装備されています。 ゲートウェイは、さまざまな CAN バス ネットワーク (インテリア、エンジン/トランスミッション、シャーシなど)、MOST バス、LIN バスを接続し、すべてのネットワークが相互に通信できるようにします。 つまり、実際にはすべてのネットワーク間の接続点となります。 ゲートウェイでは速度の違いは重要ではありません。 ここをクリックするとゲートウェイの操作や機能を説明したページへ移動します.

CANバスでの測定:
CAN バスを測定できるかどうかよく尋ねられます。 確かにそれは可能です。 診断は、ワイヤの電圧レベルを測定し、オシロスコープの電圧表示を確認することで行うことができます。 測定方法はページに記載されています CANバスシステムでの測定。

関連ページ: