CAN コントローラーでは、エラー カウントがあるしきい値 (たとえば 255) に達すると、バス オフが発生することを知っています。これは、特定の CAN ノードが CAN ネットワークからオフになることを意味します。ですので、コミュニケーションは一切とれません。しかし、 ECU (CAN コントローラーを含む)を含む車が動いているときに上記のシナリオが発生した場合はどうなるでしょうか?
上記の状況を回避するために、CAN コントローラーに自動回復メカニズムはありますか?
バスオフ中はノードは切り離されます。
CAN は、必須の期間である 128 x 11 ビット (1408 ビット - 250 kbit/s システムの場合は 5.6 ms) の間待機してから、ノードの再初期化を試みます。
バスオフが発生すると、CAN ネットワークはそのノードを隔離し、通信を開始できるようにそのノードをリセットします。
エンジン コントロール ユニットが CAN 通信を失ったとしても、目を見張るようなことは何も起こりません。車は走り続けます。
あなたが言及したように、特定のエラー数に達した後、そのノードは切断され、バス上での送信が禁止されます。バス側の説明です。
コントローラー側では、すべての CAN コントローラーが BUS_OFF で割り込みを生成します。CAN コントローラをリセットして通常の状態に戻すのは、コントローラの責任です。
これは、あらゆる車のすべての CAN コントローラーで厳密に守られています。そして、これはすべて数ミリ秒で発生します...つまり、ドライバーには何も起こりません!