Q: 送信指定した通りのデータが送信されない

A:

CANネットワーク設計が原因で、指定した通りのCANフレームが送信されないことがあります。
指定通りのデータが送信されない原因は、いろいろ考えられますが、まずは、下記の3点をご確認することをお勧めします。

なお、専用CANアナライザを別途入手し、CANネットワークの通信状況の確認するのが一般的です。

 

・CAN通信の負荷が高すぎる

 CAN通信の使用量は、30%~40%程度になるように、データ送信の量を軽減してください。

 通信回線の最大通信容量に対する通信使用量の割合が大きければ大きい(通信負荷が高ければ高い)ほど、CAN通信の送信処理が遅延します。
 場合によっては、指定したデータが送信されていないように見えます。

 

・CAN IDの小さいCANフレームに、CANバスが占有されている

 CAN ID毎に、どのぐらいの周期で送信しているか、状況を把握してください。

 CAN通信は、CAN IDの小さいCANフレームが優先されます。
 CANフレーム送信が多い場合や、CANフレームの送信周期が短い場合、CAN IDの小さいCANフレームにCANバスが占有されてしまいます。
 結果、CAN IDの大きいCANフレームの送信が大幅に遅延します。

 もしも、CAN IDの小さいCANフレームがCANバスを占有している場合は、送信周期を長くしたり、データ送信量を軽減したりしてください。

 

・多数のCANデバイスから、同じCAN IDのCANフレームを送信している

 どのCANデバイスから、どのCAN IDのCANフレームを、どのぐらいの周期で送信しているか、状況を把握してください。

 複数のCANデバイスから、同じCAN IDのCANフレームを同時に送信する場合、アービトレーション領域の仕組みが破綻し、
 送信したCANフレームのデータ領域と、実際のCANバス上のデータ領域が異なる状態が連続して発生することがあります。
 この場合、バスオフ状態となり全く送信されない状態となります。

 アービトレーション領域と、データ領域については、「CAN 2.0B通信とCAN FD通信の違い」トピックを参考にしてください。