logo

CAN (コントローラーエリアネットワーク) プロトコル

CANはの略です コントローラエリアネットワーク プロトコル。によって開発されたプロトコルです。 ロバート・ボッシュ CAN プロトコルは、ホスト コンピューターなしでマイクロコントローラーとその他のデバイスが相互に通信できるように設計された標準です。 CAN プロトコルを他の通信プロトコルの中でユニークなものにしている特徴は、ブロードキャスト タイプのバスです。ここでブロードキャストとは、全ノードに情報を送信することを意味する。ノードは、センサー、マイクロコントローラー、またはコンピューターが USB ケーブルまたはイーサネット ポートを介してネットワーク上で通信できるようにするゲートウェイにすることができます。 CAN はメッセージベースのプロトコルです。つまり、メッセージにはメッセージ識別子が含まれており、その識別子に基づいて優先順位が決定されます。 CAN ネットワークではノードを識別する必要がないため、ネットワークへの挿入や削除が非常に簡単になります。これは、シリアル半二重および非同期タイプの通信プロトコルです。 CAN ネットワークは 2 線式バスを介して接続されているため、CAN は 2 線式通信プロトコルです。ワイヤは、両端で接続された 120Ω の特性インピーダンスを持つツイストペアです。当初は主に車内通信用に設計されていましたが、現在では他の多くの状況でも使用されています。 UDS や KWP 2000 と同様に、オンボード診断にも使用できます。

なぜできるのか?

電子デバイスの数が増加したため、集中化された標準通信プロトコルが必要になりました。たとえば、最新の車両には、ダッシュボード、トランスミッション制御、エンジン制御ユニットなどのさまざまなサブシステム用に 7 つを超える TCU が存在する場合があります。すべてのノードが 1 対 1 で接続されている場合、通信速度は非常に高速になりますが、配線の複雑さとコストが非常に高くなります。上記の例では、1 つのダッシュボードに 8 つのコネクタが必要であるため、この問題を克服するために、2 本のワイヤ (CAN High と CAN Low) を必要とする集中ソリューションとして CAN が導入されました。 CAN プロトコルを使用するソリューションは、メッセージの優先順位付けにより非常に効率的であり、ネットワークに影響を与えることなくノードを挿入または削除できるため柔軟性があります。

フォーマット付きのJava文字列

CANプロトコルの応用例

当初、CAN プロトコルは、車両内で発生する通信の問題を対象として設計されました。しかし、その後、その機能により、他のさまざまな分野で使用されるようになりました。 CAN プロトコルのアプリケーションは次のとおりです。

  • 自動車(乗用車、トラック、バス)
  • 航空およびナビゲーション用電子機器
  • 産業オートメーションと機械制御
  • エレベーターとエスカレーター
  • ビルディングオートメーション
  • 医療機器および医療機器
  • 海洋、医療、産業、医療

CAN階層型アーキテクチャ

私たちが知っているように、 OSIモデル 通信システムを 7 つの異なるレイヤーに分割します。ただし、CAN 階層型アーキテクチャは 2 つの層で構成されています。

両方の層を理解しましょう。

  • データリンク層: この層はノード間のデータ転送を担当します。これにより、接続を確立および終了できます。また、物理層で発生する可能性のあるエラーを検出して修正する責任もあります。データリンク層は 2 つのサブ層に細分されます。
      マック:MAC はメディア アクセス コントロールの略です。これは、ネットワーク内のデバイスがメディアにアクセスする方法を定義します。データのカプセル化とカプセル化解除、エラー検出、およびシグナリングを提供します。
  • LLC:LLC は、Logical Link Control の略です。フレーム受け入れフィルタリング、過負荷通知、および回復管理を担当します。
  • 物理層: 物理層は生データの送信を担当します。電圧レベル、タイミング、データレート、コネクタなどのパラメータの仕様を定義します。

CAN 仕様は、CAN 標準で定義されている CAN プロトコルと CAN 物理層を定義します。 ISO 11898。ISO 11898 は 3 つの部分で構成されています。

  • ISO 11898-1: この部分には、データリンク層と物理信号リンクの仕様が含まれています。
  • ISO 11898-2: この部分は、高速 CAN の CAN 物理層に属します。高速 CAN により、車両のパワートレインおよび充電領域で使用される最大 1 Mbps のデータ レートが可能になります。
  • ISO 11898-3: この部分も、低速 CAN の CAN 物理層に属します。最大 125 kbps のデータ レートが可能で、通信速度が重要な要素ではない場合には低速 CAN が使用されます。

CiA DS-102: CiA の完全な形式は CAN in Automation であり、CAN コネクタの仕様を定義します。

実装に関する限り、CAN コントローラと CAN トランシーバは、アプリケーション、オペレーティング システム、およびネットワーク管理機能の助けを借りてソフトウェアに実装されます。

CAN フレーミング

CANフレームの構造を理解しましょう。

CANプロトコル
    ソフト:SOF はフレームの開始を表し、新しいフレームがネットワークに入力されたことを示します。 1ビットです。識別子:CAN 2.0 A 仕様で定義された標準データ形式は、調停に 11 ビットのメッセージ識別子を使用します。基本的に、このメッセージ識別子はデータ フレームの優先順位を設定します。RTR:RTR は Remote Transmission Request の略で、データ フレームかリモート フレームかのフレーム タイプを定義します。 1ビットです。制御フィールド:ユーザー定義関数があります。
      行く:制御フィールドの IDE ビットは、識別子拡張を表します。ドミナント IDE ビットは 11 ビットの標準識別子を定義し、リセッシブ IDE ビットは 29 ビットの拡張識別子を定義します。ダウンロードコンテンツ:DLC は Data Length Code の略で、データ フィールドのデータ長を定義します。 4ビットです。データフィールド:データフィールドには最大 8 バイトを含めることができます。
    CRC フィールド:データ フレームには、15 ビットの巡回冗長検査フィールドも含まれており、送信中に破損が発生した場合にそれを検出するために使用されます。送信者はデータ フレームを送信する前に CRC を計算し、受信者も CRC を計算して、計算された CRC を送信者から受信した CRC と比較します。 CRC が一致しない場合、受信機はエラーを生成します。ACK フィールド:これは受信者の確認応答です。他のプロトコルでは、すべてのパケットを受信した後に確認応答の別のパケットが送信されますが、CAN プロトコルの場合、確認応答の別のパケットは送信されません。終了日:EOF はフレームの終わりを表します。これには、フレームの終わりとして知られる 7 つの連続したレセッシブ ビットが含まれています。

次に、CAN ネットワークを介してデータがどのように送信されるかを見てみましょう。

CANプロトコル

CAN ネットワークは複数の CAN ノードで構成されます。上記の場合、3 つの CAN ノードを考慮し、ノード A、ノード B、およびノー​​ド C と名付けました。CAN ノードは、以下に示す 3 つの要素で構成されます。

  • ホスト
    ホストは、特定のジョブを実行するために何らかのアプリケーションを実行するマイクロコントローラーまたはマイクロプロセッサです。ホストは、受信したメッセージの意味と次に送信するメッセージを決定します。
  • CANコントローラー
    CAN コントローラは、CAN プロトコルで記述された通信機能を処理します。また、CAN メッセージの送信または受信もトリガーされます。
  • CANトランシーバー
    CAN トランシーバーは、CAN バス上のデータの送信または受信を担当します。データ信号を、CAN コントローラが理解できる CAN バスから収集されたデータのストリームに変換します。

上の図では、データの送信または受信にシールドなしのツイスト ペア ケーブルが使用されています。 CAN バスとも呼ばれ、CAN バスは CAN ロー ラインと CAN ハイ ラインの 2 つのラインで構成され、それぞれ CANH および CANL とも呼ばれます。送信は、これらのラインに印加される差動電圧によって発生します。 CAN は環境上、ツイストペアケーブルと差動電圧を使用します。たとえば、自動車では、モーター、点火システム、その他多くのデバイスがノイズによりデータ損失やデータ破損を引き起こす可能性があります。 2 本の線をねじることにより磁場も減少します。バスは各端で 120Ω の抵抗で終端されます。

CANの特性

CANプロトコル

差動電圧を利用して、0 と 1 が CAN バスを介してどのように送信されるかを決定します。上の図は、CAN low と CAN high の電圧レベルを示す電圧グラフです。 CAN の用語では、ロジック 0 がドミナントであるのに対し、ロジック 1 はリセッシブであると言われます。 CAN ハイラインと CAN ローラインに 2.5 ボルトが印加されると、実際の差動電圧は 0 ボルトになります。 CAN バスのゼロ ボルトは、CAN トランシーバーによってリセッシブまたはロジック 1 として読み取られます。CAN バスのゼロ ボルトは、バスの理想的な状態です。 CAN ハイラインが 3.5 ボルトにプルアップされ、CAN ローラインが 1.5 ボルトにプルダウンされると、バスの実際の差動電圧は 2 ボルトになります。これは、CAN トランシーバーによってドミナント ビットまたはロジック 0 として扱われます。バス状態がドミナントまたはロジック 0 に達すると、他のノードによってリセッシブ状態に移行することができなくなります。

.tostring java

CANの特性から学ぶポイント

  • ロジック 1 はリセッシブ状態です。 CAN バスで 1 を送信するには、CAN High と CAN Low の両方に 2.5V を印加する必要があります。
  • ロジック 0 が優勢な状態です。 CAN バスで 0 を送信するには、CAN High に 3.5V を印加し、CAN Low に 1.5V を印加する必要があります。
  • バスの理想的な状態は劣性です。
  • ノードがドミナント状態に達すると、他のノードによってリセッシブ状態に戻ることはできません。

CANバスロジック

CANプロトコル
CANプロトコル

上記のシナリオから、ドミナント状態がリセッシブ状態を上書きすることがわかります。ノードがドミナント ビットとリセッシブ ビットを同時に送信すると、バスはドミナントのままになります。リセッシブ レベルは、すべてのノードがリセッシブ ビットを送信した場合にのみ発生します。このような論理は AND 論理として知られており、物理的にはオープンコレクタ回路として実装されます。

CAN通信原理

ご存知のとおり、メッセージは調停フィールドに設定された優先順位に基づいて送信されます。標準フレームの場合、メッセージ識別子は 11 ビットですが、拡張フレームの場合、メッセージ識別子は 29 ビットです。これにより、システム設計者は設計自体でメッセージ識別子を設計できるようになります。メッセージ識別子が小さいほど、メッセージの優先度は高くなります。

フローチャートを通して仲裁の仕組みを理解しましょう。

CAN (コントローラーエリアネットワーク) プロトコル

送信者はメッセージを送信したいと考えており、CAN バスがアイドルになるのを待っています。 CAN バスがアイドル状態の場合、送信側は SOF またはバス アクセスのドミナント ビットを送信します。次に、メッセージ識別子ビットを最上位ビットに送信します。ノードがリセッシブ ビットを送信中にバス上でドミナント ビットを検出した場合、それはノードが調停に負け、それ以降のビットの送信を停止したことを意味します。送信者は待機して、バスが空くとメッセージを再送信します。

CAN アービトレーションの例

CANプロトコル

3 つのノード、つまりノード 1、ノード 2、およびノー​​ド 3 を考慮すると、これらのノードのメッセージ識別子はそれぞれ 0x7F3、0x6B3、および 0x6D9 になります。

CANプロトコル

3 つのノードすべての最上位ビットの送信が上の図に示されています。

十一番目bit: ノードの 3 ビットはすべてリセッシブであるため、バス ビットもリセッシブのままになります。

10番目bit: すべてのノードの 10 番目のビットがリセッシブであるため、バスもリセッシブのままになります。

9番目bit: ノード 1 にはリセッシブ ビットがあり、他のノードにはドミナント ビットがあるため、バスもドミナントのままになります。この場合、ノード 1 は調停に負けたため、ビットの送信を停止します。

8番目bit: ノード 2 とノード 3 の両方がリセッシブ ビットを送信しているため、バス状態はリセッシブのままになります。

文字列を文字に変換する

7番目bit: ノード 2 はドミナント ビットを送信し、ノード 3 はリセッシブ ビットを送信しているため、バス状態はドミナントのままになります。この場合、ノード 3 は調停に負けたため、メッセージの送信を停止しますが、ノード 2 が調停に勝った場合は、メッセージが受信されるまでバスを保持し続けることになります。