概要
KeiganMotor から、モーター測定情報やエラー情報などを、制御側に送信(出力)可能です。
KeiganMotor から送信される情報の種類(タイプ)
モーターから送信される情報には、以下のものがあります。それぞれ、txType という1バイトの数字で区別されます。特に、通知系の情報(モーター測定情報 MOTOR_MEASUREMENT または IMU測定情報 IMU_MEASUREMENT)については、interface レジスタを変更し、受信したい経路の優先を第一位にする必要があります(次項参照)。
名称 | uint8_t txType | 内容 | interfaceレジスタの優先設定 |
---|---|---|---|
READ | 0x40 | read系コマンドに対する返り値 | 不要(受信経路で返す) |
ERROR | 0xBE | 成功・エラーコードの通知 | 不要(受信経路で返す) |
MOTOR_MEASUREMENT | 0xB4 | モーター測定値(有線時の出力のみ) | 必要 |
IMU_MEASUREMENT | 0xB5 | IMU測定値(有線時の出力のみ) | 必要 |
MOTION_DATA | 0xB7 | モーションデータ(有線USBでの出力のみ) | 不要(受信経路で返す) |
interface 送信経路について
ローレベルAPIにおける interface レジスタ、または各言語ライブラリの interface 関数の設定によって、モーターから情報を通知する経路を変更することができます。interface レジスタの設定は、即時反映されますが、saveAllRegisters をしない限り本体フラッシュに保存されませんのでご注意下さい。
デフォルトでは、優先順位は以下となっています。ローレベルAPI > コマンド の、interface の項も参照下さい。
(優先度高い)BLE > USB > I2C(優先度低い)
エラーコードについて
KeiganMotor では、コマンドを正常に受信できたかどうか判別するために、コマンドのレスポンスとして、正常に受信成功または、エラー情報を送信します。エラー情報は、1バイトの数字 errorCode で区別されます。
ただし、以下のエラーコードについては、レスポンスではなくモーターが能動的に優先経路に送信します。
- KM_ERROR_NRF_DEVICE
- KM_ERROR_WDT_EVENT
- KM_ERROR_OVER_HEAT
エラーコード一覧
成功 or エラー名称 | uint32_t errorCode | 内容 | 対応ファームウェア ver. |
---|---|---|---|
KM_SUCCESS | 0 | 成功:コマンドを正常に受信処理完了 | 1.50 |
KM_ERROR_DATA_NOT_FOUND | 3 | エラー:存在しないデータ(モーションやタスクセット)※1 | 1.50 |
KM_ERROR_INVALID_COMMAND | 5 | エラー:存在しないコマンド | 1.50 |
KM_ERROR_INVALID_PARAM | 6 | エラー:不正な引数 | 1.50 |
KM_ERROR_STORAGE_FULL | 7 | エラー:記憶領域が一杯である(モーションやタスクセット) ※2 | 1.50 |
KM_ERROR_INVALID_FLASH_STATE | 8 | エラー:フラッシュの状態が不正 ※3 | 1.50 |
KM_ERROR_INVALID_LENGTH | 9 | エラー:引数の長さが不正 | 1.50 |
KM_ERROR_INVALID_CHECKSUM | 10 | エラー:チェックサムが不正(CRC16誤り訂正符号が不正) ※4 | 1.50 |
KM_ERROR_FORBIDDEN | 15 | エラー:不許可な動作である ※5 | 1.50 |
KM_ERROR_INVALID_ADDR | 16 | エラー:アドレス参照が不正(モーションやタスクセット) ※6 | 1.50 |
KM_ERROR_MOTOR_DISABLED | 20 | エラー:モーターが動作不許可(disable 状態につき enable 必要) | 1.50 |
KM_ERROR_UCON_DEVICE | 70 | エラー:搭載マイコンの不明エラー | 1.50 |
KM_ERROR_WDT_EVENT | 80 | エラー:ウォッチドッグタイマーイベントの発動(リセット直前) | 1.50 |
KM_ERROR_OVER_HEAT | 81 | エラー:基板部温度以上(マイコン温度が2分以上60度を超過) | 1.50 |
KM_SUCCESS_ARRIVAL | 100 | 成功:位置制御時、目標位置に到達 | 2.23 |
※1. フラッシュに書き込まれた情報「モーション」、「タスクセット」のいずれかを再生またはチェックしようとしたときに、指定のインデックス(バンク)にデータが見つからなかった場合のエラー(再生しようとしたがデータが見つからない場合)
※2. ティーチングをある index に行おうとしたときに、すでにデータが存在する場合のエラー。
エラーを回避するために、事前に eraseMotion / eraseAllMotion を実行する必要があります。
※3. フラッシュへのアクセスが必要な命令を実行しているときに別のフラッシュアクセス命令を送った場合のエラー。以下の機能はフラッシュを使用するため、排他的となっています。本エラー発生時は、IDLE状態に戻さない限り次の機能実行はできません。逆に、これらに関係ないコマンドは実行可能ですが、ティーチング中のモーター制御などは、
意図しない結果を生じます。(runForwardなどモーター制御)
- ティーチング・プレイバック
- タスクセット
- IMU(ジャイロ加速度センサー)
※4. チェックサム機能が有効になっている場合に、チェックサム計算が合わないときに発行されるエラー。
CRC16の計算が合わない場合のエラーであり、CRC が Disable のときは、本エラーは起こりえません。
※5. interfaceコマンドで、全ての通信経路を無効化しようとした場合、本エラーとなります。
※6. ティーチング・プレイバック および、タスクセットで、範囲外のインデックスにアクセスしようとしたときに発行されるエラー。
データ構造(データフレーム)について
データ構造は、通信経路によって異なります。以下よりダウンロード下さい。