モーション制御にはCANだけでは不十分で、完全なCANopenアーキテクチャが必須なのはなぜですか?

完全な3層CANopenアーキテクチャが連携して初めて、標準化されたモータのモーション制御を実現できます。

CAN単体ではモーション制御をサポートできないのに、完全なCANopenスタックではサポートできるのはなぜですか?

CAN単体では、標準化された通信オブジェクトを持たない低レベルドライバしか提供されません

CAN単体では、PDO、SDO、SYNC、NMTといった中核となる概念が定義されていません。ユーザーはメッセージID、データ形式、および同期メカニズムを一から独自に設定する必要があり、その結果、異なるメーカーのモータ間で互換性が失われます。図に示す中間通信層の完全に標準化されたモジュールは、CANopen独自のものであり、モーション制御用途向けに特別に設計されています。

統一されたオブジェクトディクショナリがない

CAN単体には統一されたパラメータアドレス指定の規格がないため、メーカーごとにドライバの命令フォーマットが異なります。CANopenでは、オブジェクトディクショナリ(DS402規格)によってサーボモーションパラメータのアドレス定義を統一しており、これによりマスター局は規格に準拠したあらゆるサーボドライブを共通の方法で制御できます。

イベント駆動型のアプリケーション層の連携がない

SYNC、NMT、およびHeartbeatのメカニズムは、上位層のアプリケーションイベントをトリガし、同期動作、状態切り替え、および障害保護を自動的に実行します。これに対し、CAN単体では、複雑なフレーム解析、タイミング判定、および状態管理ロジックを手動でプログラミングする必要があります。

標準化された多軸同期メカニズムがない

SYNCメッセージは、CANopen独自の機能です。CAN単体にはグローバルな同期基準がないため、多軸同期精度が低く、補間動作や多軸協調動作といった用途の要件を満たせません。

3層CANプロトコルの構造を理解する(OSIモデルとの対応)

(画像出典:Microchip)

1. 最下層:ECAN™ ドライバ(CANハードウェアリンク層)

CAN 2.0の物理層およびデータリンク層に相当します。

中核機能:標準の8バイトCANフレームを送受信し、ハードウェアによるアービトレーション、CRC検証、およびバスエラー処理を実行します。モーション制御ロジックは含まれておらず、目標位置、制御ワード、同期命令を識別することはできず、純粋なデータトランシーバとしてのみ機能します。上位層のすべてのCANopenモジュール(SYNC、NMT、SDO、PDO、Heartbeat)は、最終的にこのドライバを呼び出してCANメッセージを送信します。

2. 中間層:通信サブレイヤ(CANopenコアプロトコルDS301)

モーション制御アプリケーションにおける各モジュールの主要な機能は以下のとおりです。

PDO通信: リアルタイムモーション閉ループ制御の中核です。オブジェクトディクショナリからのモーションデータ(制御ワード、目標位置、実位置、速度)をマッピングします。ハンドシェイクによるオーバーヘッドがなく、低遅延であるため、各SYNCサイクル内で多軸モーションコマンドを同期して伝送します。

SDO通信: モーションパラメータの設定専用の通信チャンネルです。電源投入時の初期化中に、オブジェクトディクショナリ内のデータを読み書きして、加減速制限、ストローク制限、モータの動作モード、およびPDOのマッピング関係を設定します。

NMT通信: バスおよびモータの安全状態を管理します。ノードの状態をpre-operationモードとoperationalモードの間で切り替えます。PDOベースのモーション制御はoperationalモードでのみ使用可能であり、状態切り替えイベントを上位層のアプリケーションにフィードバックします。

SYNC: 多軸同期のためのグローバルなタイミング基準を提供します。周期的に同期メッセージをブロードキャストし、上位層のアプリケーションオブジェクトに同期イベントを伝達することで、すべての軸が位置指令を同時に更新し、多軸同期の精度を確保します。

Heartbeat/Node Guard/Boot-up: バス障害保護を実行します。Heartbeatメカニズムはバスの切断を検出し、通信障害が発生すると上位層のイベントをトリガし、アプリケーション層がモータの緊急停止保護を実行できるようにします。

3. 最上層:アプリケーション層(モーション制御のビジネスロジック、DS402サーボ規格)

オブジェクトディクショナリ

すべてのモーション制御パラメータを格納する統一したデータベースです(標準インデックス範囲:DS402で定義された0x6000~0x9FFF)。ここには、0x6040(制御ワード)、0x607A(目標位置)、0x6064(実位置)、動作モード、および障害コードなどの中核的なパラメータが格納されています。SDOはディクショナリの読み書きによってパラメータ設定を行い、PDOはディクショナリのマッピングを介してリアルタイムのモーションデータを取得します。

アプリケーションオブジェクト

モータの閉ループ制御の中核となるビジネスロジックを実行し、下位の通信層からのさまざまなイベントを処理します。

- SYNCイベント:PDOから送られた目標位置を読み取り、位置ループPIDアルゴリズムを実行し、モータを駆動するためのPWM信号を出力します。

- NMTの状態切り替えイベント:モータの有効化/無効化、障害のリセット、および電源投入時の初期化を実行します。

- Heartbeat切断イベント:安全保護のために、モータを直ちに停止させます。

エンコーダの実位置データとモータの動作状態をオブジェクトディクショナリにフィードバックし、PDOを介してマスター局にアップロードします。

まとめ

1. ECANドライバは、純粋な低レベルCANトランシーバであり、バイナリメッセージの送受信のみを担当し、モーション制御ロジックには一切関与しません。

2. CANopenの中間通信層(PDO/SDO/SYNC/NMT/Heartbeat)は、標準化された通信チャネル、正確な同期、および完全なネットワーク管理機能を提供します。

3. オブジェクトディクショナリには、標準化されたすべてのモータモーションパラメータが一元的に格納されています。

4. 最上層のアプリケーションオブジェクトは、通信層のイベントを処理し、モータの閉ループ動作、始動・停止制御、および障害保護を含む中核的なモーション制御アルゴリズムを実行します。

参考資料:
Microchipの Application Notes

関連技術トピック




オリジナル・ソース(English)