CANbus診断
ハードウェア障害の診断
CANの問題のほとんどは、配線ミスやCANデバイスの故障に起因します。潜在的なエラーには以下のようなものがあります。
終端抵抗器の欠落または寸法の誤り
バスは、最初と最後で 120 Ω の終端抵抗で正確に終端する必要があります。
異なるボーレート
すべての加入者は同じボーレートを使用する必要があります。
CANLow、CANHigh、CANGround、V+間の短絡
CANLowとCANHighの互換性
CANHighとCANLowの長さが異なる
CANHighとCANLowはツイストペアではありません。そのため、信号が途切れやすくなります。
CANGroundのさまざまな接地源
CANバスケーブルの両側接地
CAN バス ケーブルのシールドの両端が接地されている場合、接地ループが形成され、中断が発生する可能性があります。
バスケーブルが長すぎます
最大バス長は設定されたボーレートによって異なります (表を参照)。
ビットレート | ケーブル長 |
|---|---|
10kbps | 6.7キロ |
20 kbps | 3.3キロ |
50 kbps | 1.0キロ |
125 kbps | 500メートル |
250 kbps | 250メートル |
500 kbps | 125メートル |
1Mbps | 25メートル |
ハードウェア障害の検出

終端抵抗は、ノードのインピーダンスを、使用されている伝送ケーブルのインピーダンスに適合させるために使用されます。インピーダンスの不整合がある場合、送信信号は負荷によって完全に吸収されず、一部が伝送ケーブルに反射されます。信号源、伝送ケーブル、および負荷のインピーダンスが同じであれば、これらの反射は排除されます。このテストでは、CANデータペアケーブルと接続された終端抵抗の直列抵抗を測定します。
すべての CAN ノードの電源をオフにします。
ネットワークの中間と終端で CAN_H と CAN_L 間の抵抗を測定します。
測定値は50Ω~70Ωの範囲でなければなりません。この値はネットワーク内のすべての場所で同じである必要があります。
値が 50 Ω 未満の場合は、次の点を確認してください。
CAN_H ケーブルと CAN_L ケーブルの間に短絡はありません。
終端抵抗器は 2 つまでしか存在しません。
ノードには欠陥のあるトランシーバーはありません。
値が 70 Ω より大きい場合は、次の点を確認してください。
CAN_H ケーブルと CAN_L ケーブルの配線に開回路は存在しません。
バス システムには、両端に 1 つずつ、それぞれ 120 Ω の終端抵抗が 2 つあります。

各ノードには、差動信号を送信するCANトランシーバーが搭載されています。ネットワーク通信がアイドル状態のとき、CAN_HとCAN_Lの電圧は約2.5Vです。トランシーバーに障害があると、開回路電圧が変化し、ネットワーク通信に支障をきたす可能性があります。
すべての CAN ノードの電源をオフにします。
すべてのネットワーク通信を停止します。
CAN_H と GND 間の直流電流を測定します。
測定値は 2.0 V ~ 4.0 V の間である必要があります。2.0 V 未満または 4.0 V を超える場合、1 つ以上のノードに障害のあるトランシーバーがある可能性があります。
電圧が 2.0 V 未満の場合は、CAN_H ケーブルと CAN_L ケーブルの導通を確認する必要があります。
電圧が 4.0 V を超える場合は、過電圧をチェックする必要があります。

CANネットワークのシールドは、1箇所のみで接地されている場合があります。このテストは、シールドが複数の箇所で接地されているかどうかを示します。
シールドを地面から切り離します。
シールドとグランド間の直流抵抗を測定します。
シールドをアースに接続します。
抵抗は1MΩ以上である必要があります。これより低い場合は、シールドの接地を追加する必要があります。

CANトランシーバーには、CAN_Hを制御する回路とCAN_Lを制御する回路があります。経験上、片方または両方の回路に電気的損傷が発生すると、これらの回路のリーク電流が増加する可能性があります。
抵抗測定器を使用して漏れ電流を測定します。
ノードをネットワークから切り離します。ノードに電流を流さない状態にします。
CAN_H と CAN_GND 間の直流抵抗を測定します。
CAN_L と CAN_GND 間の直流抵抗を測定します。
通常、抵抗値は1MΩ~4MΩ以上である必要があります。この範囲より低い場合は、CANトランシーバーに欠陥がある可能性があります。

CANコントローラのエラー処理
エラー処理はCANプロトコルに統合されており、CANシステムのパフォーマンスにとって極めて重要です。エラー処理の目的は、CANメッセージ内のエラーを検出し、送信者が失敗したメッセージを再送信できるようにすることです。すべてのCANコントローラはメッセージ内のエラーを検出しようとします。エラーが見つかると、検出ノードはエラーフラグを送信し、バストラフィックを中断します。他のノードは、エラーフラグによって引き起こされたエラーを検出します(元のエラーをまだ検出していない場合)。そして、適切なアクションを実行し、現在のメッセージを拒否します。
これらのカウンタとバス状態は、CANエラーの診断時にエラーの原因に関する最初の情報を提供することが多い。この情報は、CODESYSユーザーインターフェースとアプリケーションを通じて。