通信プロトコル
Alius ロボット関節モジュールは、CAN / CAN-FD バスを介してコントローラーと通信します。本ドキュメントでは、通信プロトコルのデータフレーム形式、コマンドセット、状態フィードバックメカニズムを詳細に説明し、開発者が関節モジュールとの確実な通信を実現できるよう支援します。
プロトコル概要
関節モジュールは、CAN バスに基づくカスタム・アプリケーション層プロトコルを使用します。プロトコル設計は以下の原則に従います:
- 簡潔で効率的:コマンドフレームとデータフレーム形式はコンパクトで、バス負荷を最小化します。
- 柔軟な拡張性:標準 CAN 2.0A と CAN-FD フレーム形式の両方をサポートし、帯域幅要件に基づいて選択可能です。
- 信頼性の高い伝送:重要なコマンドと状態データにはいずれも CRC 検証が含まれ、データ伝送の完全性を確保します。
各関節モジュールはバス上で一意のノード ID(1–127)を持ちます。コントローラーはノード ID によって異なるモジュールを区別します。ノード ID はソフトウェアで構成可能で、モジュールの不揮発性メモリーに保存されます。
CAN 識別子割り当て
CAN 識別子(CAN ID)は 11 ビット標準フレーム形式を使用し、以下のように構成されます:
Bits [10:7] – 機能コード(Function Code)
Bits [6:0] – ノード ID(Node ID)
機能コード定義:
| 機能コード | 名称 | 方向 | 説明 |
|---|---|---|---|
| 0x0 | ハートビートフレーム | モジュール → コントローラー | モジュールが周期的に送信する状態ハートビート |
| 0x1 | 制御コマンド | コントローラー → モジュール | 位置/速度/トルク制御コマンド |
| 0x2 | 状態フィードバック | モジュール → コントローラー | リアルタイム位置、速度、トルク・フィードバック |
| 0x3 | パラメーター読み書き | 双方向 | モジュールパラメーターの読み取り/書き込み |
| 0x4 | 故障報告 | モジュール → コントローラー | 故障コードおよび詳細情報 |
| 0x5 | ファームウェア更新 | 双方向 | ファームウェア更新データストリーム |
制御コマンドフレーム
位置制御モード
データフレーム形式(8 バイト):
| バイト | フィールド | 説明 |
|---|---|---|
| 0 | コマンドタイプ | 0x01 = 位置制御 |
| 1–3 | 目標位置 | 32 ビット符号付き整数、単位:エンコーダーカウント |
| 4–5 | 目標速度 | 16 ビット符号付き整数、単位:0.1 °/s |
| 6–7 | 制御パラメーター | 上位 8 ビット:加速度プロファイル;下位 8 ビット:予約 |
速度制御モード
データフレーム形式(8 バイト):
| バイト | フィールド | 説明 |
|---|---|---|
| 0 | コマンドタイプ | 0x02 = 速度制御 |
| 1–2 | 目標速度 | 16 ビット符号付き整数、単位:0.1 °/s |
| 3–4 | 加速度 | 16 ビット符号なし整数、単位:°/s² |
| 5–7 | 予約 | — |
トルク制御モード
データフレーム形式(8 バイト):
| バイト | フィールド | 説明 |
|---|---|---|
| 0 | コマンドタイプ | 0x03 = トルク制御 |
| 1–2 | 目標トルク | 16 ビット符号付き整数、単位:0.1 N·m |
| 3–7 | 予約 | — |
状態フィードバックフレーム
モジュールは構成可能な周期(デフォルト 10 ms)で状態フィードバックフレームを送信します。フレーム形式(8 バイト):
| バイト | フィールド | 説明 |
|---|---|---|
| 0 | 状態フラグ | Bit 0: イネーブル状態;Bit 1: 故障フラグ;Bit 2: 定位フラグ |
| 1–3 | 現在位置 | 32 ビット符号付き整数、単位:エンコーダーカウント |
| 4–5 | 現在速度 | 16 ビット符号付き整数、単位:0.1 °/s |
| 6–7 | 現在トルク | 16 ビット符号付き整数、単位:0.1 N·m |
パラメーター読み書き
パラメーター読み取り
要求フレーム形式:
| バイト | フィールド | 説明 |
|---|---|---|
| 0 | 操作コード | 0x01 = 読み取り |
| 1–2 | パラメーター ID | 16 ビット符号なし整数 |
| 3–7 | 予約 | — |
応答フレーム形式:
| バイト | フィールド | 説明 |
|---|---|---|
| 0 | 操作コード | 0x81 = 読み取り応答 |
| 1–2 | パラメーター ID | 要求フレームと一致 |
| 3–6 | パラメーター値 | 32 ビット・データ、形式はパラメータータイプにより異なります |
| 7 | ステータスコード | 0x00 = 成功;0 以外 = エラーコード |
一般的なパラメーター ID
| パラメーター ID | 名称 | 読み/書き | 説明 |
|---|---|---|---|
| 0x0001 | ノード ID | R/W | モジュール CAN ノード ID |
| 0x0002 | 通信ボーレート | R/W | 0 = 1Mbps;1 = 2Mbps;2 = 5Mbps(CAN-FD) |
| 0x0003 | 制御モード | R/W | 0 = 位置;1 = 速度;2 = トルク |
| 0x0004 | 零点オフセット | R/W | エンコーダー零点オフセット |
| 0x0005 | 温度制限 | R/W | 過熱保護閾値、単位:°C |
| 0x0006 | 電流制限 | R/W | ピーク電流制限、単位:0.1 A |
エラー処理
故障が検出されると、モジュールは直ちに故障報告フレームを送信し、保護状態(トルク出力停止)に入ります。
故障コード定義:
| コード | 名称 | 説明 | 復帰方法 |
|---|---|---|---|
| 0x01 | 過電流故障 | 相電流が安全閾値を超過 | 電源再投入して再起動 |
| 0x02 | 過熱故障 | モジュール内部温度が保護閾値を超過 | 温度低下後に自動復帰 |
| 0x03 | エンコーダー故障 | エンコーダー信号異常またはタイムアウト | 接続を確認し、電源再投入して再起動 |
| 0x04 | 通信タイムアウト | 500 ms 連続して制御コマンドを受信できない | 通信復帰後に自動クリア |
| 0x05 | 低電圧故障 | 供給電圧が 22 VDC を下回る | 電圧復帰後に自動クリア |
| 0x06 | 過電圧故障 | 供給電圧が 52 VDC を上回る | 電圧復帰後に自動クリア |
CAN-FD 拡張
CAN-FD 通信を使用する場合、データフレーム長を 64 バイトに拡張でき、より高帯域幅の状態フィードバックとファームウェア更新データ伝送をサポートします。CAN-FD フレーム形式は標準 CAN フレーム形式と互換性があり、コントローラーはフレームタイプを自動的に識別できます。
複数関節協調制御シナリオでは、より低い通信遅延と高いデータ・スループットを得るために、CAN-FD 通信の使用を優先することを推奨します。