面接を受けました。インタビュアーは私に尋ねました:
2つのノードが同じ識別子(0x100)の2つのメッセージを異なるデータで送信している場合、誰がアービトレーションに勝ちますか?バスにはどのメッセージが表示されますか?
ノード1が勝った場合、ノード2のメッセージはどうでしょうか。ノード2のメッセージはいつ送信されますか?
面接を受けました。インタビュアーは私に尋ねました:
2つのノードが同じ識別子(0x100)の2つのメッセージを異なるデータで送信している場合、誰がアービトレーションに勝ちますか?バスにはどのメッセージが表示されますか?
ノード1が勝った場合、ノード2のメッセージはどうでしょうか。ノード2のメッセージはいつ送信されますか?
ここには2つのケースがあります
ケース1: 2つのノードが同じIDと同じデータフィールドを送信しようとすると、CANはそれを単一のメッセージと見なし、CANバスで送信します。ここでは、ノード1が送信しているのか、ノード2が送信しているのかを実際に判断することはできません。これは、両方が同じIDとデータを持っているためです。
ケース2:ここではデータフィールドが異なります。仲裁分野までは問題ありません。両方のノードでデータが異なるため、バスエラーが発生します。これは、データフィールドがCRCによって保護されており、ビットスタッフィングも画像に含まれるためです。
CAN N / Wでは、2つのデバイスが同じノードIDを持っている場合、両方のデバイスが検出されず、メッセージの要求/応答は行われません。(ビットスタッフィング、アービトレーション、エラー検出、ビットモニタリング、ACK、CRCなどは機能しません)。
N / Wでは、IDが異なる場合、同じメッセージまたは異なるメッセージを転送できます。CAN N / Wを制御するために、アービトレーションの概念を使用します。
私はコントローラーエリアネットワーク-CAN情報で答えを見つけました。
ネットワーク上の2つのノードは、同じIDでメッセージを送信することはできません。2つのノードが同じIDのメッセージを同時に送信しようとすると、アービトレーションは機能しません。代わりに、送信ノードの1つが、自分のメッセージがアービトレーションフィールドの外で歪んでいることを検出します。その後、ノードはCANのエラー処理を使用します。この場合、最終的に送信ノードの1つがオフになります(バスオフモード)。