モーター設定

モーターの設定値(レジスタ)に関するコマンド一覧です

byte[0] Command Name 説明
0x02 maxSpeed 最大速さを設定する
0x03 minSpeed 最小速さを設定する
0x05 curveType 加減速曲線を設定する
0x07 acc 加速度を設定する
0x08 dec 減速度を設定する
0x0E maxTorque 最大トルクを設定する
0x18 qCurrentP q軸電流PIDゲイン(P)を設定する
0x19 qCurrentI q軸電流PIDゲイン(I)を設定する
0x1A qCurrentD q軸電流PIDゲイン(D)を設定する
0x1B speedP 速度PIDゲイン(P)を設定する
0x1C speedI 速度PIDゲイン(I)を設定する
0x1D speedD 速度PIDゲイン(D)を設定する
0x1E positionP 位置PIDゲイン(P)を設定する
0x22 resetPID PIDゲインをリセットする
0x2E interface 測定値を出力するインターフェイスを決定する
0x3A ownColor デバイスLEDの固有色を設定する
0x40 readRegister 指定の設定値を取得する
0x41 saveAllRegisters 全ての設定値をフラッシュに保存する
0x4E resetRegister 指定の設定値をリセットする
0x4F resetAllRegisters 全設定値をリセットする

 

0x02 : maxSpeed

モーターの最大速さを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x02 uint16_t identifier float maxSpeed uint16_t crc16
説明 コマンド タスク管理用ID 最大速さ [radian / second]
(正の値)
巡回冗長検査
(データ誤り検出用)

 

0x03 : minSpeed

モーターの最小速さを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x03 uint16_t identifier float minSpeed uint16_t crc16
説明 コマンド タスク管理用ID 最小速さ [radian / second]
(正の値)
巡回冗長検査
(データ誤り検出用)
minSpeed は、preparePlaybackMotion 実行の際、開始地点に移動する速さとして使用されます。通常時運転では使用されません。

 

0x05 : curveType

加減速曲線を指定する
(モーションコントロールの設定)

byte [0] [1] [2] [3] [4] [5]
0x05 uint16_t identifier uint8_t curveType uint16_t crc16
説明 コマンド タスク管理用ID 加減速曲線
(下記)
巡回冗長検査
(データ誤り検出用)


typedef enum curveType =
{

CURVE_TYPE_NONE = 0, // モーションコントロール OFF

CURVE_TYPE_TRAPEZOID = 1, // モーションコントロール ON (台形加減速)

}

CURVE_TYPE_NONE を選択すると、モーションコントロールは OFF になります。
CURVE_TYPE_TRAPEZOID を選択すると、台形加減速によるモーションコントロールが ON になります。

 

0x07 : acc

モーターの加速度を設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x07 uint16_t identifier float acc uint16_t crc16
説明 コマンド タスク管理用ID 加速度 [radian / second^2]
(正の値)
巡回冗長検査
(データ誤り検出用)
acc は、モーションコントロール ON の場合、加速時に使用されます。
(加速時の直線の傾き)

 

0x08 : dec

モーターの減速度を設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x08 uint16_t identifier float dec uint16_t crc16
説明 コマンド タスク管理用ID 減速度 [radian / second^2]
(正の値)
巡回冗長検査
(データ誤り検出用)
dec は、モーションコントロール ON の場合、減速時に使用されます。
(減速時の直線の傾き)

 

0x0E : maxTorque

モーターの最大トルク(絶対値)を設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x0E uint16_t identifier float maxTorque uint16_t crc16
説明 コマンド タスク管理用ID 最大トルク [N*m]
(正の値)
巡回冗長検査
(データ誤り検出用)
maxTorque を設定することにより、トルクの絶対値が maxTorque を超えないように運転します。
例えば、maxTorque = 0.1 [N*m] の後に runForward (正回転)を行った場合、0.1 N*m を超えないようにその速度をなるだけ維持します。
ただし、トルクの最大値制限により、システムによっては制御性(振動)が悪化する可能性があります。

 

0x18 : qCurrentP

モーターのq軸電流PIDコントローラのP(比例)ゲインを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x18 uint16_t identifier float qCurrentP uint16_t crc16
説明 コマンド タスク管理用ID q電流Pゲイン
(正の値)
巡回冗長検査
(データ誤り検出用)
推奨値:

 

0x19 : qCurrentI

モーターのq軸電流PIDコントローラのI(積分)ゲインを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x19 uint16_t identifier float qCurrentI uint16_t crc16
説明 コマンド タスク管理用ID q電流Iゲイン
(正の値)
巡回冗長検査
(データ誤り検出用)
推奨値:

 

0x1A : qCurrentD

モーターのq軸電流PIDコントローラのD(微分)ゲインを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x1A uint16_t identifier float qCurrentD uint16_t crc16
説明 コマンド タスク管理用ID q電流Dゲイン
(正の値)
巡回冗長検査
(データ誤り検出用)
推奨値:

 

0x1B : speedP

モーターの速度PIDコントローラのP(比例)ゲインを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x1B uint16_t identifier float speedP uint16_t crc16
説明 コマンド タスク管理用ID 速度Pゲイン
(正の値)
巡回冗長検査
(データ誤り検出用)
推奨値:

 

0x1C : speedI

モーターの速度PIDコントローラのI(積分)ゲインを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x1C uint16_t identifier float speedI uint16_t crc16
説明 コマンド タスク管理用ID 速度Iゲイン
(正の値)
巡回冗長検査
(データ誤り検出用)
推奨値:

 

0x1D : speedD

モーターの速度PIDコントローラのD(微分)ゲインを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x1D uint16_t identifier float speedD uint16_t crc16
説明 コマンド タスク管理用ID 速度Dゲイン
(正の値)
巡回冗長検査
(データ誤り検出用)
推奨値:

 

0x1E : positionP

モーターの位置PIDコントローラのP(比例)ゲインを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7] [8]
0x1E uint16_t identifier float positionP uint16_t crc16
説明 コマンド タスク管理用ID 位置Pゲイン
(正の値)
巡回冗長検査
(データ誤り検出用)
推奨値:

 

0x22 : resetPID

全てのPIDパラメータをリセットしてファームウェアの初期設定に戻す

byte [0] [1] [2] [3] [4]
0x22 uint16_t identifier uint16_t crc16
説明 コマンド タスク管理用ID 巡回冗長検査
(データ誤り検出用)
0x18: qCurrentP, 0x19: qCurrentI, 0x1A: qCurrentD, 0x1B: speedP, 0x1C: speedI, 0x1D: speedD, 0x1E: positionP をリセットします

 

0x2E : interface

モーターを制御するインターフェイス(通信経路)を設定する。
本コマンドは、KM-1 のファームウェア ver 1.18 以降より対応となります。

byte [0] [1] [2] [3] [4] [5]
0x2E uint16_t identifier uint16_t flag uint16_t crc16
説明 コマンド タスク管理用ID ビットフラグ 巡回冗長検査
(データ誤り検出用)

saveAllRegsitersコマンドを実行しない限り、設定はフラッシュに保存されません。

インターフェイスを設定すると、以下の優先順により、測定値(モーター測定値、IMU測定値)が出力される経路が決まります。(デフォルトではBLE(無線))

(優先度:高)BLE > USB > I2C(優先度:低)

従って、USBからモーター測定値を出力する場合、BLEを OFF(0) にして、USBを ON(1)にする必要があります。
(例)0b10001000 にした場合、物理ボタン有効、I2C無効、USB有効、BLE無効 となる。測定値は USBから出力される。

 

bit7 物理ボタン(3つ)
bit6 -
bit5 -
bit4 I2C(有線)
bit3 USB(有線)
bit2 -
bit1 -
bit0 BLE(無線)

 

0x3A : ownColor

モーターの固有LEDカラーを設定する

byte [0] [1] [2] [3] [4] [5] [6] [7]
0x3A uint16_t identifier uint8_t red uint8_t green uint8_t blue uint16_t crc16
説明 コマンド タスク管理用ID red color
0-255
green color
0-255
blue color
0-255
巡回冗長検査
(データ誤り検出用)
ownColor はアイドル時の固有LEDカラーです。saveAllRegisters を実行し、再起動後に初めて反映されます。また、この設定値を変更した場合、BLEの Device Name の下3桁が変更されます。

 

0x40 : readRegister

指定した設定値を読み込む

byte [0] [1] [2] [3] [4] [5]
0x40 uint16_t identifier uint8_t register uint16_t crc16
説明 コマンド タスク管理用ID レジスタ

 

(コマンドと同じ)

巡回冗長検査
(データ誤り検出用)

有線通信では本コマンドは未実装です。BLEに加えて、
KM-1 ファームウェア ver 1.75 以降にて、有線USB, 有線I2C での本コマンド対応済みです。
BLEからのコマンドでは、motorSetting キャラクタリスティクスに次の形式で値が返却されます。有線(USB・I2C)では、所定のデータ構造にて値が返却されます。
レジスタはコマンドのbyte[0]の値を入れて下さい

byte [0] [1] [2] [3] [4]...[n-3] [n-2] [n-1]
0x40 uint16_t identifier uint8_t register value uint16_t crc16
説明 0x40 タスク管理用ID レジスタ レジスタの値 巡回冗長検査
(データ誤り検出用)

 

0x41 : saveAllRegisters

全ての設定値をフラッシュメモリに保存する

byte [0] [1] [2] [3] [4]
0x41 uint16_t identifier uint16_t crc16
説明 コマンド タスク管理用ID 巡回冗長検査
(データ誤り検出用)
本コマンドを実行しない限り、設定値はKeiganMotorに永久的に保存されません。

 

0x4E : resetRegister

指定したレジスタをファームウェアの初期値にリセットする

byte [0] [1] [2] [3] [4] [5]
0x4E uint16_t identifier uint8_t register uint16_t crc16
説明 コマンド タスク管理用ID レジスタ 巡回冗長検査
(データ誤り検出用)
レジスタはコマンドのbyte[0]の値を入れて下さい

 

0x4F : resetAllRegisters

全てのレジスタをファームウェアの初期値にリセットする

byte [0] [1] [2] [3] [4]
0x4F uint16_t identifier uint16_t crc16
説明 コマンド タスク管理用ID 巡回冗長検査
(データ誤り検出用)