• 検索結果がありません。

調停の仕組み(優先順位の決定方法)

ドキュメント内 Linuxデバイスドライバチュートリアル (ページ 134-138)

第 9 章 CAN 133

9.1.3 調停の仕組み(優先順位の決定方法)

CAN はマルチマスタ方式で、バスが空いていれば、どの端末からでも送信を開始することができます。もし複数の端 末から同時にデータが送信された場合、バス上で衝突を検知し、ID による優先順位の決定が行われます。衝突により データが無くなる事はありません。

→ CSMA/NBA 方式(Carrier Sense Multiple Access Nondestructive Bitwise Arbitration) この調停により、無駄の無い通信が可能です。

優先順位の高い端末は周期を乱されず、高いリアルタイム性を保つことができます。

調停の仕組みについては「9.1.3 調停の仕組み(優先順位の決定方法)」を参照してください。

・柔軟なシステム構築

端末にアドレスを設定する必要が無いので、機器の増設が容易です。

9.1.2 バスレベルとビット

CANバスには二つのレベルがあります。ドミナントとレセシブと呼ばれる状態です。

CANバスは、必ずこの二つのレベルのうちどちらかのレベルになります。

論理的にはドミナントが“0”、レセシブが“1”を指します。

CANはバス接続なので、同一バス上に複数の端末が接続され、それぞれが送信を行います。

この際、一つでもドミナントを出力する端末があると、バスのレベルはドミナントになります。

全ての端末からレセシブが出力されていればバスのレベルはレセシブです。

ドミナント、レセシブのそれぞれのバスレベルは、対応する規格により変わってきます。

それらをまとめたのが以下の表です。

このうち、弊社製品で対応しているのはISO11898-2とISO11898-3の二つです。

CANバスのレベルの判断はCANトランシーバが行います。

CANバスにはCAN_HighとCAN_Lowという2本の信号線があり、この2本の電位差によりレベルの判断が行われま

す。

上の表の通り、高速CANと低速CANでは、バスレベルの判断の仕方が異なります。

高速 CAN の場合、CAN_High と CAN_Low の間に電位差が無いときがレセシブレベル、CAN_High が高い電圧で

CAN_Lowが低い電圧になり、電位差が生じた場合がドミナントレベルとなります。

低速CANの場合、CAN_LowがCAN_Highを上回っている場合、レセシブレベルで、CAN_HighがCAN_Lowを上回っ ている場合ドミナントレベルとなります。

低速CAN 高速CAN

ISO11519-2

ISO11898-2 Fault-tolerant CAN

ISO11898-3 125Kbps ~ 1Mbps / 40m

オープンバス 最高 125Kbps / 40m オープンバス

ループバス

× ○

障害発生時の自動復旧

(片線での通信継続)

通信速度 最高 125Kbps

バスレベル バスの形状

×

0 1 2 3 4

レセシブ

ドミナント

レセシブ

0 1 2 3 4

レセシブ レセシブ

ドミナント CAN_High

CAN_Low

9.1.3 調停の仕組み(優先順位の決定方法)

CANの一つの大きな特長に、この調停の仕組みが挙げられます。

バス上で複数の端末が同時に送信を開始した場合、送信されたメッセージに含まれる ID 等を用い優先度を判断し、より 優先度の高いメッセージがバス上に生き残り、優先度の低いメッセージは再送することになります。

では、どうやって優先度の判断を行っているのでしょうか? ここで重要になってくるのが「バスレベルとビット」になります。

CAN では、自分の出力したレベルと、バス上の実際のレベルを常に監視しています。(※バスレベルとビットについては

「9.1.2 バスレベルとビット」を参照してください。)

そして一つでもドミナントレベルを出力する端末がいると、バスはドミナントレベルになります。

この仕組みをつかい、調停を行います。下の図のように 2 台の端末から同時に送信が行われたとします。CAN のメッセ ージ送信は、ID の上位ビットからそれぞれ送信されます。

自分の出力がドミナントレベルで、バス上もドミナントレベルであれば次のビットの出力を行います。自分の出力がレセシ ブレベルで、バス上もレセシブレベルだった場合も同様です。

もし自分がレセシブレベルを出力したのに、バス上がドミナントレベルだった場合には、他の端末からドミナントレベルが 出力されていることになります。

これが調停に負けたということです。調停に負けた端末はバスが空くのを待ち、再送を行います。

※ このとき、自分よりも優先度の高い端末からの送信が入った場合、また調停に負け再送を行うことになります。時間を 考慮した設計が必要になってきます。

ドキュメント内 Linuxデバイスドライバチュートリアル (ページ 134-138)