ビット・タイミングの構成により、CANの性能を最適化

はじめに

CAN(Controller Area Network)は、複数のネットワーク・ロケーション間において、安定した通信を行うことを可能にする技術です。広範なデータ・レートと通信距離に対応するとともに、データリンク層におけるアービトレーションや、同期、エラー処理といった機能を備えています。そのため、ISO 11898として標準化され、産業用機器や、計測機器、車載機器などの用途で広く利用されています。分散型マルチマスター方式の差動信号に対応し、障害に対応するための処理も担います。また、DeviceNetやCANopenなどのさまざまなプロトコルでは、物理層とデータリンク層のための実装が定義されています。本稿では、コントローラのアーキテクチャやクロック、トランシーバ、ロジック・インターフェースの絶縁といったハードウェアに関する制約について考慮したうえで、特定のアプリケーションに向けて設定を最適化する方法を説明します。CANノードはどのような場合に再構成する必要があるのか、どのようにすれば最初からノードを最適に構成できるのかといった疑問に答えながら、データ・レートとケーブル長の観点からネットワークの最適な構成について解説します。

ロジック・インターフェースの絶縁

業用機器や車載機器などは、過酷な環境で使用されます。通常、そうした機器では、CANトランシーバとロジック・インターフェースの間を絶縁し、グラウンド・ノード間の大きな電位差を許容して、高電圧の過渡現象に対する耐性を確保します。それにより、システムの安定性を高めることが可能になります。絶縁型のCANノードは、CANトランシーバにデジタル・アイソレータを適用することで構成できます。アナログ・デバイセズ(ADI)の場合、絶縁型CANトランシーバ「ADM3052」、「ADM3053」、「ADM3054」によって、インターフェースへの電力の供給方法を複数のオプションとして用意しています。例えば、DeviceNetに対応するネットワークでは、絶縁側はバスから電力の供給を受けることができます。そのため、ADM3052では、リニア・レギュレータを搭載し、バス用の24Vの電源から5Vの電源を供給できるようにしています。一方、ADM3053は、ADIの「isoPower」技術を適用したDC/DCコンバータを内蔵しています。これを使用することにより、トランシーバとデジタル・アイソレータのバス側に電力を供給することができます(図1)。そして、ADM3054では、デジタル・アイソレータとCANトランシーバのみを提供します。システムによっては、絶縁型DC/DCコンバータを別に用意し、絶縁バリアを介して電力供給を行うように設計されることがあります。ADM3054は、そのようなシステムに適した製品です。

Figure 1
図1. CANトランシーバとしてADM3053を採用した絶縁型CANノード(トランシーバには、isoPower技術をベースとするDC/DCコンバータから電源を供給する)

伝搬遅延の影響

CANノードを実装するには、絶縁型/非絶縁型のCANトランシーバと、CANコントローラまたは適切なプロトコル・スタックを備えるプロセッサが必要です。スタンドアローン型のCANコントローラは、標準的なプロトコル・スタックがなくても使用できます。一方、CANアプリケーション向けのマイクロプロセッサの場合、CANコントローラがあらかじめ実装されている場合もあります。いずれにせよ、CANコントローラは、コントローラで使用する発振器と、バスにおけるデータ・レート/タイミングが適合するように構成しなければなりません。

長距離の通信では、ケーブル長が1つの制約になります。ケーブルが長くなると、信号の高周波成分が減衰してしまうからです。マルチマスター方式のバスでは、すべてのノードが同時に送信を行う可能性があります。一方で、アービトレーションは、物理層の信号伝送に依存します。ケーブルが長いと伝搬遅延も増大するので、ノード間の同期やアービトレーションが困難になる恐れがあります。

CANバス上の差動信号は、ドミナント(論理レベルの0、信号線CANHと同CANLの電圧に差がある)とリセッシブ(論理レベルの1、両電圧に差がない、CANトランシーバの全出力がハイ・インピーダンス)のうちいずれかの状態をとります。2つのノードが同時に送信を行おうとすると、ドミナント・ビットの送信によって、同時に送信されているリセッシブ・ビットが上書きされます。すべてのノードは、送信中にバスの状態を監視し、リセッシブ・ビットの送信中に上書きが発生したら送信を停止しなければなりません。つまり、図2に示すように、ドミナント・ビットを送信するノードがアービトレーションによって権限を勝ち取ることになります。

Figure 2
図2. 2つのCANノード間におけるアービトレーション

データリンク層の実装を定義するCAN 2.0Bは、送信に使用するCANフレームの構造を定めています。メッセージは、メッセージIDを含むアービトレーション・フィールドから始まります。優先順位は、下位のメッセージID(最初のゼロが多い)ほど高くなります。そのIDに対応するノードは、メッセージの送信中にアービトレーションで権限を得る可能性が高くなります。

CANのノードはバスへの送信と同期しています。ただ、同時に送信を行う2つのノードがあったとしても、各ノードには値の異なる伝搬遅延が発生するので厳密には同時ではありません。アービトレーションは伝搬遅延が大きすぎると機能しません。そのため、低速のノードによって送信されたビットの状態が検出される前に、高速のノードによってバスのサンプリングが行われる可能性があります。最悪の場合、伝搬遅延は最も離れた2つのノード間で生じる遅延の2倍にもなります。図3に示すノードAとノードBは、バス上の最も離れたノードであるとします。その場合、TPropBA+TPropBAによって得られる往復時間が重要なパラメータになります。

Figure 3
図3. 伝搬遅延を伴う2つのCANノード間で実際に行われるアービトレーション

トータルの伝搬遅延には、ケーブル、2つのCANコントローラのI/O、2つのCANトランシーバを往復する時間が含まれます。ただ、CANコントローラのI/Oは伝搬遅延の主な要因にはなりません。多くの場合、その影響は無視できるレベルですが、本当に無視できるかどうかは徹底的に評価を行ったうえで判断する必要があります。ループ時間には、TxDからCANH/CANLまでの伝搬遅延と、RxDに戻るまでの伝搬遅延が含まれます。ケーブルの伝搬遅延はケーブルの種類と距離によって異なりますが、標準的には5ns/m程度です。

低いデータ・レートでは、ビット時間(bit time)を長くとれるので、ある程度、大きな伝搬遅延(言い換えれば長いケーブル)でも許容できます。通常、CANにおけるデータ・レートは最大で1Mbpsです。ISO 11898-2では1Mbpsでの動作に対して40mというバス長が規定されていますが、伝搬遅延にはより厳しい制限があります。

絶縁による影響

絶縁を施すと、往復の伝搬遅延を算出する際に検討すべき要素が増加します。デジタル・アイソレータを使用すれば、フォトカプラを使用するよりも伝搬遅延を短縮できます。とはいえ、絶縁型では最速のCANトランシーバを使用したとしても、非絶縁型の低速トランシーバと同程度までしか短縮されません。絶縁型/非絶縁型のシステムがあり、トータルの伝搬遅延の許容値が同じであるとしたら、絶縁型のシステムの方が使用できるケーブルの長さは短くなります。しかし、CANコントローラを再構成すれば、トータルの伝搬遅延の許容値を増大させることも可能です。

伝搬遅延の補償

長いバスや絶縁による伝搬遅延の増大は、CANコントローラにおいてタイミングと同期に関する特定のパラメータを適切に設定することで補償できます。コントローラを構成する際、単にデータ・レートを選択するのではなく、コントローラが使用するビット時間の決定にかかわる変数の設定を適切に行えばよいということです。ビット時間は、発振器/内蔵クロック用のボーレート・プリスケーラ(BRP)によって設定されるタイム・クォンタム(TQ)の倍数になります。データ・レートは、選択した発振器、BRPのソフトウェア構成、ビット時間当たりのTQの数によって決まります。

図3に示したように、コントローラのビット時間は3つまたは4つのセグメントに分割されます。TQの総数で決まるビット時間には、1つの同期セグメント(SYNC)と、プログラムされた数の伝搬遅延セグメント(PROP)、フェーズ・セグメント1(PS1)、フェーズ・セグメント2(PS2)が含まれます。PROPとPS1を組み合わせる場合もあります。CANコントローラの構成では、伝搬遅延を許容して再同期を実現できるようにするために、サンプル・ポイントの位置を調整します。

ビット時間のなるべく後ろにサンプル・ポイントを設定すれば、許容可能な伝搬遅延の値が増大します。しかし、全体のデータ・レートと同じように、サンプル・ポイントはほかのタイミング変数に依存します。しかも、それらのタイミング変数にはそれぞれに独自の制限があります。例えば、内蔵クロック/発振器は固定かもしれませんし、BRPとTQは整数でなければなりません。そのような理由から、特定のケーブル長に対して理想的なデータ・レートを達成できるとは限りません。結果として、ケーブル長の短縮、あるいはデータ・レートの低減を図らなければならない可能性もあります。

再同期を行うと、同期ジャンプ幅(SJW)によって指定されたTQの数に応じてPS1が延長されるか、またはPS2が短縮されます。PS2はSJWより短くなることはありません。SJWに必要なTQの数は、CANコントローラのクロックの許容誤差によって変化します。一般的には、水晶発振器を採用した場合にSJWとPS2のTQが最小になります。

CANコントローラの構成

ノード間で確実なタイミングと同期を確立し、安定したネットワークを実現するためには、システムにおいて、選択されたデータ・レートとCANコントローラのクロック・レートに応じて発生する伝搬遅延を許容できるようにする必要があります。許容できない場合には、データ・レートの低減、バス長の短縮、CANコントローラのクロック・レートの変更のうちいずれかを実施することになります。以下では、3つのステップから成る構成の手順について説明します。

ステップ1:クロックとプリスケーラを確認する(データ・レートのマッチング)

まず、データ・レートとCANコントローラのクロック・レートを所望の値に設定します。そのうえで、選択が可能な構成について確認を行います。TQの間隔は、クロックと複数のBRPの値に基づいて算出する必要があります。TQの間隔としては、ビット時間を整数で割って等分できる値しか許容できません。システム設計の初期段階にある場合などは、CANコントローラのクロック・レートの変更を検討してもよいかもしれません。表1に、最高データ・レートが1Mbpsであると仮定した場合の算出例を2つ示しました。それぞれ、スタンドアローン型のCANコントローラ「Microchip® MCP2515」と、CANコントローラを内蔵したBlackfinプロセッサ「ADSP-BF548」を使用する場合の例です。MCP2515のfOSCは、使用する外付け発振器によって異なります。一方、ADSP-BF548のfSCLKは、同プロセッサのCLKINと内蔵PLLの設定(VCOに向けたCLKINの逓倍器、SCLKに向けたVCOの分周器)によって決まります。1Mbpsのデータ・レートは、CANコントローラのクロック・レートとBRP(TQの整数倍)の特定の組み合わせでのみ実現できます。表1ではそれらを太字で表示しています。バスのデータ・レートを決定すると、特定のオプションのみ選択が可能になり、ビット・タイミングの設定に制限が生じます。

表1. 1Mbpsの動作に向け、周波数とBRPを特定の値に設定した場合のTQの数

MCP2515:1Mbpsの動作におけるTQの数
fOSC BRP = 1 BRP = 2 BRP = 3 BRP = 4
40 20 10 6.667 5
38 19 9.5 6.333
4.75
30 15 7.5
5 3.75
20 10 5 3.333 2.5
10 5 2.5 1.667 1.25
 ADSP-BF548:1Mbpsの動作におけるTQの数
fSCLK BRP = 5 BRP = 6 BRP = 7 BRP = 8
133 26.6 22.167
19 16.625
100 20 16.667 14.286 12.5
50 10 8.3333 7.143 6.25
40  8 6.667
5.714
5

ステップ2:ビット・セグメントの構成を決定する

ステップ2では、各ビット・セグメントに対応するTQの数を決定します。最も困難な例としては、40mのケーブル、絶縁ノードを使用するという条件下で、発生しうる最大伝搬遅延に対応し、1Mbpsのデータ・レートを実現するというケースが想定されます。ビット時間のセグメントは、可能な限りビット時間の後方にサンプル・ポイントが設定されるように構成するべきです。表1において、TQの総数が整数になっているケースを考えます。まず、SYNCセグメントに対してはTQの数は1つで構いません。PS2(TSEG2)セグメントは、CANコントローラの情報を処理する時間に対応できるだけの長さでなければなりません(BRP>4を満たすなら、MCP2515では2TQ、ADSP-BF548では<1TQ)。また、MCP2515ではPROPとPS1がそれぞれ最大で8TQとなり、AD-SP-BF548ではTSEG1(PROP+PS1)が最大で16TQになります。

図4と図5は、それぞれMCP2515とADSP-BF548で適用可能なTQの構成を示したものです。1Mbpsで動作する場合のクロック・レートとBRPの有効な組み合わせにおいて、サンプル・ポイントを最も後ろに設定できる状態を示しています。MCP2515に最適なTQの総数は19です。その場合、38MHzの発振器を使用し、BRP=1を満たす必要があります。一方、ADSP-BF548では、TQの総数が5である場合を除くと、速いものでもビット時間の85%の位置にサンプル・ポイントを設定することができます。その中でも最適な設定はTQが10のケースです。その場合、fSCLK =50MHzのときにBRP=5を満たす必要があります。

Figure 4
図4. MCP2515において1Mbpsの動作を実現したい場合に、最大伝搬遅延に対応可能なTQの構成
Figure 5
図5. ADSP-BF548において1Mbpsの動作を実現したい場合に、最大伝搬遅延に対応可能なTQの構成

ステップ3:構成を行うために、トランシーバ/絶縁による遅延とバス長のマッチングを図る

CANコントローラに最適なサンプル・ポイントを設定したら、続いては、許容可能な伝搬遅延と、CANトランシーバ/絶縁、バス長の比較検討を行います。AD-SP-BF548の最適な構成はTQが10のとき(fSCLK =50M-Hz、BRP=5)であると仮定します。その場合、発生しうる最大の伝搬遅延は900nsです。ADM3053(絶縁電源を内蔵する絶縁型CANトランシーバ)のデータシートを見ると、最大ループ遅延(TxDがオフになってからレシーバが非アクティブになるまで)は250nsとなっています。バス上の最も離れた2つのノード間で発生する送信遅延/受信遅延を含めると、それが2倍(500ns)になります。

ケーブルでの伝搬遅延が5ns/mであると仮定します。AD-SP-BF548において、TSEG2セグメントに対するTQの数は1で、ビット時間に対応するTQの総数は10であるとします。その場合、バス長は40m(ISO 11898においては1Mbpsに対する最大値)となります。実際には、トランシーバの1つのノードで大きな伝搬遅延が発生しても、単に再送信すれば済む(データリンク層においてCANコントローラによって行われる自動処理)可能性が高いので、サンプル・ポイントを少し前に設定することも可能です。ただし、CANコントローラのI/OとCANトランシーバとの間にわずかな遅延が発生するため、サンプル・ポイントは可能な限り後ろに配置するよう構成することをお勧めします。

まとめ

過酷な環境で使用されるシステムでは、絶縁を施すことによって堅牢性を向上することができます。その一方で、送受信の両方向に伝搬遅延が生じます。アービトレーションではノードが2つになるため、伝搬遅延は2倍に増大します。システムで許容可能な伝搬遅延が一定である場合、絶縁を施すことによって、ケーブル長を短縮したり、データ・レートを低下させたりしなければならなくなる可能性があります。代替手段となるのは、発生しうる最大伝搬遅延を許容できるようにCANコントローラを再構成することです。それにより、ノードに絶縁を施しても、所望のデータ・レートとバス長を確保することが可能になります。

参考資料

Controller Area Network(CAN) Transceivers(CANトランシーバについて)

Digital Isolators(デジタル・アイソレータについて)

Isolated Controller Area Network (CAN)(絶縁型のCAN)〔動画〕

Marais, Hein.「How to Calculate the Controller Parameters for an Isolated CAN(Controller Area Network) Network to Run at 1 Mbps(絶縁型CANネットワークで1Mbpsを達成するためのコントローラのパラメータの算出方法)

O’Brien, Maurice.「Designing Robust, Isolated I2C/PMBus Data Interfaces for Industrial, Telecommunications, and Medical Applications(絶縁型I2C/PMBusインターフェースの設計、産業/通信/医療の用途に堪える堅牢性を実現)」、 Analog Dialogue、 Volume 48、 Number 3, 2014.

Watterson, Conal. アプリケーション・ノート AN-1123「Controller Area Network(CAN) Implementation Guide(CANアプリケーションの実装ガイド)」、 Analog Devices、 2012.

著者

Conal-Watterson

Dr. Conal Watterson

Dr. Conal Wattersonは、トランシーバを専門とするアプリケーション・エンジニアです。ADIアイルランド事業所(リムリック州)のインターフェース/絶縁技術グループ(ITG)に所属しています。2003年にリムリック大学(UL)で計算機工学の学士号を取得しています。その後、同校のARC(Automation Research Centre)でフィールドバスの診断に関する研究に従事し、2005年に工学修士号を取得しました。さらに、ULのCSRC(Cicruits and Systems Research Centre)とCTVR(Centre for Telecommunications Value-Chain Research)において、組み込みソフトウェアによる監視/信頼性に関する研究を行い、2010年に工学博士号を取得しました。