3

面接を受けました。インタビュアーは私に尋ねました:

2つのノードが同じ識別子(0x100)の2つのメッセージを異なるデータで送信している場合、誰がアービトレーションに勝ちますか?バスにはどのメッセージが表示されますか?

ノード1が勝った場合、ノード2のメッセージはどうでしょうか。ノード2のメッセージはいつ送信されますか?

4

3 に答える 3

3

ここには2つのケースがあります

  1. 同じIDと同じDATAフィールド
  2. 異なるDATAフィールドを持つ同じID

ケース1: 2つのノードが同じIDと同じデータフィールドを送信しようとすると、CANはそれを単一のメッセージと見なし、CANバスで送信します。ここでは、ノード1が送信しているのか、ノード2が送信しているのかを実際に判断することはできません。これは、両方が同じIDとデータを持っているためです。

ケース2:ここではデータフィールドが異なります。仲裁分野までは問題ありません。両方のノードでデータが異なるため、バスエラーが発生します。これは、データフィールドがCRCによって保護されており、ビットスタッフィングも画像に含まれるためです。

于 2012-10-01T09:06:42.340 に答える
1

CAN N / Wでは、2つのデバイスが同じノードIDを持っている場合、両方のデバイスが検出されず、メッセージの要求/応答は行われません。(ビットスタッフィング、アービトレーション、エラー検出、ビットモニタリング、ACK、CRCなどは機能しません)。

N / Wでは、IDが異なる場合、同じメッセージまたは異なるメッセージを転送できます。CAN N / Wを制御するために、アービトレーションの概念を使用します。

于 2016-01-27T14:48:18.937 に答える
0

私はコントローラーエリアネットワーク-CAN情報で答えを見つけました。

ネットワーク上の2つのノードは、同じIDでメッセージを送信することはできません。2つのノードが同じIDのメッセージを同時に送信しようとすると、アービトレーションは機能しません。代わりに、送信ノードの1つが、自分のメッセージがアービトレーションフィールドの外で歪んでいることを検出します。その後、ノードはCANのエラー処理を使用します。この場合、最終的に送信ノードの1つがオフになります(バスオフモード)。

于 2012-05-29T12:26:04.643 に答える