メインコンテンツまでスキップ

CAN FD通信

このチュートリアルでは、Aotenjo One ボードを CAN FD 通信用に準備し、閉ループ角度制御を実行する方法を紹介します。

備考

CAN ネットワーク内のボードが Aotenjo One v1.x または Aotenjo Master v1.x の場合、CAN FD 通信は使用できません。代わりに CAN バス通信チュートリアル を参照してください。

CAN FD とは​

CAN FD (Controller Area Network Flexible Data-Rate) は、従来の CAN を拡張した通信規格です。通信速度の向上と、1 フレームで送信できるデータ量の拡大に対応しています。

Classic CAN とは異なり、CAN FD では次のことが可能です。

  • メッセージの データ フェーズ中のビット レートの向上
  • 単一フレーム内の最大 64 バイトのペイロード

このため、CAN FD は、モーター制御、ロボット工学、高性能産業システムなど、高い更新レート、低遅延、より複雑なデータ構造を必要とするアプリケーションに最適です。

CANとCAN FDの比較​

比較項目CANバスCANFD
最大データレート最大1Mbps最大8Mbps(データフェーズ)
データペイロードサイズ最大8バイト最大64バイト
フレームフォーマット標準 (11 ビット) と拡張 (29 ビット)標準と拡張
エラー検出CRC (巡回冗長検査)強化された CRC とビット スタッフィング
RTRサポートサポートされているサポートされていません
使用例自動車、産業自動車、産業、高速制御

モーター制御にとってCAN FDが重要な理由​

CAN FD は単に帯域幅が広いだけではありません。

フレームあたりのペイロードを大きくできるようにすることで、CAN FD は以下によって引き起こされるプロトコル オーバーヘッドを大幅に削減します。

  • 仲裁
  • フレームヘッダー
  • フレーム間の間隔

これは、メッセージごとにより多くの有用なデータが転送されることを意味し、全体的なバス効率が向上します。

例

クラシック CAN の場合:

  • モーター位置データは複数のフレームに分割する必要がある場合があります
  • これによりバス負荷が増加し、制御ループ周波数が制限されます。

CAN FD の場合:

  • 位置、速度、電流、ステータスデータを 1 つのフレームに詰め込むことができます
  • 制御サイクルごとに必要なフレームが少なくなる
  • より高い周波数で、タイミングの安定した制御ループを実行しやすくなります

その結果、CAN FD により次のことが可能になります。

  • より高い更新レート
  • 待ち時間の短縮
  • よりスムーズで応答性の高いモーター制御

事前準備​

このチュートリアルでは、以下の機器を使用します。

ファームウェアをボードにアップロードするには、ST-LINK V2 クローンが必要です。安価なクローン ST-LINK V2 は 5 ドル以下で購入できます。

CANバス接続​

CAN FD のバス配線と終端抵抗の配置は Classical CAN と共通です。CAN バス接続の手順に従って基板を接続し、バスの物理的な両端で終端抵抗を有効にしてください。配線と終端設定が完了したら、このページに戻って CAN FD ファームウェアのセットアップを続けてください。

開発環境の準備​

VSCode と PlatformIO​

PlatformIO は、VSCode 拡張機能マーケットプレイスからインストールできます。

STM32CubeProgrammer​

ファームウェアを基板に書き込むためのツールです。

リポジトリの取得​

git clone https://github.com/aotenjo-xyz/one.git
cd one

クイックスタート​

  1. モーターのシャフトに磁石を置きます。

モーターシャフトの磁石

  1. Aotenjo One ボードを ST-LINK V2 書き込み器に接続します。

    ST-LINK V2 <-> Aotenjo One
    3.3V <---> 3.3V
    GND <---> GND
    SWDIO <---> SWDIO
    SWCLK <---> SWCLK
    RST <---> NRST
    備考

STM32G4 シリーズでは、BlackPill と異なり、基板の NRST ピンも ST-LINK V2 に接続する必要があります。 あるいは、アップロード中に Aotenjo One ボードの NRST ボタンを押し続けると、同じ効果が得られます。 ::: 3. ST-LINK V2 書き込み器を PC に接続します。 4. VSCode でプロジェクトフォルダーを開きます。 5. 左側のサイドバーの「PlatformIO」タブをクリックし、「Upload」ボタンをクリックしてファームウェアをボードにアップロードします。

これで、CAN バス通信を使用してモーターを制御する準備が整いました。

続いて、Aotenjo Master の CAN FD チュートリアルに進んでください。